AI Agents that ship working code. GitHub issue in, reviewed PR out.
Warning
This project is under active development and is a work in progress. Features may be incomplete, APIs may change, and there may be bugs. Contributions and feedback welcome!
Label a GitHub issue with shipcode:agent:claude, shipcode:agent:codex, shipcode:agent:openrouter, shipcode:agent:openrouter/auto, or shipcode:agent:openrouter/free, and ShipCode handles the rest: plan, adversarial review, implement, verify, and ship a PR. Approval gates are configurable globally, per project, and per issue.
brew install --cask shipshitdev/tap/shipcode # macOS desktop app
npx @shipshitdev/shipcode # CLImacOS users: the v0.1.0 build is unsigned. After install, run
xattr -cr "/Applications/ShipCode.app"once to clear the Gatekeeper quarantine.
GitHub Issue (labeled shipcode:agent:claude / codex / openrouter)
|
v
PLAN (Opus 4.6) --- rewrite issue into spec + structured plan
|
v
REVIEW (configured model) --- adversarial critique
|
+-- APPROVE --> EXECUTE
+-- REVISE (max 2 rounds) --> re-review
+-- REJECT --> FAILED
|
v
EXECUTE (routed model) --- implement in isolated git worktree
|
v
VERIFY (configured model) --- test, runtime QA, check diff against acceptance criteria
|
v
SHIP --- push branch, create PR, link to issue
Turborepo monorepo with Electron desktop app:
apps/
web/ Marketing site (Next.js + Tailwind)
desktop/ Electron + Vite + React 19
cli/ CLI tool (published as '@shipshitdev/shipcode' on npm)
docs/ Documentation (Nextra)
packages/
pipeline/ Pipeline state machine
shared/ Types, schemas, constants
agents/ Process manager, prompts, GitHub CLI wrapper
db/ SQLite persistence (node:sqlite)
git/ Git operations + worktree manager
ui/ React components (kanban board, viewers)
- Bun >= 1.2
- Claude Code CLI (
claude) - Codex CLI (
codex) - GitHub CLI (
gh) with auth configured - Git
Desktop app (macOS, Homebrew):
brew tap shipshitdev/tap
brew install --cask shipcodemacOS warning: the v0.1.0 desktop build is unsigned and not notarized yet. If macOS blocks the app after Homebrew installs it, run:
xattr -cr "/Applications/ShipCode.app"This is a temporary pre-release workaround until ShipCode ships with Developer ID signing and notarization.
CLI (Node.js >= 22.5.0):
npx @shipshitdev/shipcode onboard
npx @shipshitdev/shipcode run 42
# Optional global install (exposes `shipcode` on $PATH)
npm install -g @shipshitdev/shipcodeFrom source:
git clone https://github.com/shipshitdev/shipcode
cd shipcode
bun install
bun run dev:desktopShipCode uses the gh CLI for all GitHub operations. Make sure you're authenticated:
gh auth status| Label | Effect |
|---|---|
shipcode:agent:claude |
Claude implements the issue |
shipcode:agent:codex |
Codex implements the issue |
shipcode:agent:openrouter |
OpenRouter implements the issue with the configured executor model |
shipcode:agent:openrouter/auto |
OpenRouter chooses the model through its auto router |
shipcode:agent:openrouter/free |
OpenRouter stays on the configured free-tier model |
| Label | Meaning |
|---|---|
shipcode:pipeline:queued |
Issue picked up, waiting for pipeline slot |
shipcode:pipeline:planning |
Planner is generating a plan |
shipcode:pipeline:reviewing |
Reviewer is critiquing the plan |
shipcode:pipeline:executing |
Executor is implementing changes |
shipcode:pipeline:testing |
Test/runtime QA commands are running |
shipcode:pipeline:verifying |
Verifier is checking the result |
shipcode:pipeline:shipping |
Branch push and PR creation are running |
shipcode:pipeline:failed |
Pipeline failed |
ghCLI over GitHub API -- no OAuth, no token management, uses existing auth- Adversarial review -- configurable planner/reviewer models catch different blind spots before execution
- Configurable review rounds -- default is fast-path zero revisions, with project and issue overrides up to 5
- Optional approval gates -- stay fully autonomous by default, or pause before execution when the task needs a human checkpoint
- Fork-point SHA for diffs -- stable diffs even when base branch moves
MIT
