Platform: OpenCode-only plugin.
AutoShip is an autonomous GitHub issue → pull request pipeline. It reads open issues labeled agent:ready, plans them in ascending issue-number order, dispatches OpenCode workers, verifies results, opens PRs, monitors CI, and reconciles local state.
- OpenCode is the only supported worker runtime.
- Role models come from the live
opencode modelsinventory and project-local.autoship/model-routing.json. - Setup prefers capable free or OpenCode Go Kimi/Kimmy/Ling 2.6-family role models when available and prompts for orchestrator/reviewer on first run.
openai/gpt-5.5-fastis rejected.- Worker models come from the live
opencode modelsinventory. - Free models are selected by default.
- Operator-selected models, including Spark and Go-provider models, are allowed when present in the live inventory.
- Worker selection scores task compatibility, cost class, configured strength, previous success/failure history, and deterministic issue-number rotation across compatible workers.
- Complex tasks without a sufficiently strong compatible worker use the configured orchestrator model as an advisor fallback.
- Default active worker cap: 20.
runner.shenforces the cap before starting queued workspaces.- Dispatch can queue beyond the active cap; queued work starts when capacity is available.
AUTOSHIP_PLAN_ORDERcan switch planning from ascending tocadence,updated, ordescending.AUTOSHIP_CHECKPOINT_EVERYenables checkpoint timestamps during long runner loops.
- Runtime state is local to
.autoship/and should not be committed. - Durable recovery uses GitHub issue labels plus workspace status files.
- Per-issue markdown records live under
.autoship/items/and can be used for audit/resume. - Structured events are JSON-lines under
.autoship/logs/events.jsonl. .autoship/model-routing.jsonis user-editable and preserved by setup unless refresh is requested.
Completed work must be independently reviewed before PR creation. The reviewer role uses the configured OpenCode reviewer model from .autoship/model-routing.json.
Reviewer output should include a JSON object matching schema/reviewer-decision.json plus a VERDICT: PASS or VERDICT: FAIL line.
Issue bodies are sanitized before prompt insertion, acceptance criteria are extracted into normalized JSON, diff-size and checksum guardrails run before review, and flaky test commands are retried once by default.
AutoShip skips issues with protected labels by default: do-not-automate, needs-human, wontfix, discussion, and security. Operators may tune the deny list in .autoship/config.json.
PRs labeled autoship:auto-merge may be merged by auto-merge.sh after CI and reviewer checks pass. Workflow concurrency groups are separated by workflow mode to avoid plan/apply collisions.