open source · MIT license

50 AI agents.
Your codebase.
24/7.

ShipFleet spawns parallel Claude Code sessions against your repo. Each agent works in its own git worktree. You see every keystroke live. A different AI model reviews the code. You approve the PR. That's it.

$ npm install -g shipfleet click to copy
requires Node.js 20+ · Git 2.x · Claude Code CLI
~/my-saas-app
$ shipfleet init
shipfleet v1.0.0
Detecting project...
┌─────────────────────────────────────────────┐
my-saas-app
TypeScript / Next.js
pnpm · vitest · tsc · eslint
github.com/acme/my-saas-app
└─────────────────────────────────────────────┘

Watch agents work. In real time.

Every file read, code write, test run, and git commit streams live to your terminal or dashboard. You can kill, redirect, or send a message to any agent at any time. Nothing is hidden.

shipfleet — 3 agents active
$ shipfleet start
╔══════════════════════════════════════════╗
shipfleet v1.0.0
Dashboard: http://localhost:4747
Workers: 3 active
╚══════════════════════════════════════════╝
[w1] 12:03:01 claimed #42 fix login redirect
[w1] 12:03:02 reading server/routes.ts
[w1] 12:03:04 reading server/auth/callback.ts
[w1] 12:03:06 writing server/auth/callback.ts:47
[w1] 12:03:08 running npx vitest run auth.test.ts
[w1] 12:03:12 passed 14 tests, 0 failures
[w1] 12:03:13 running npx tsc --noEmit
[w1] 12:03:15 passed 0 errors
[w1] 12:03:16 commit a3f829c fix: redirect to /dashboard after OAuth
[w1] 12:03:18 PR #87 github.com/acme/my-app/pull/87
[w2] 12:03:05 claimed #43 TypeError in billing webhook
[w2] 12:03:07 reading server/webhooks/stripe.ts
[w2] 12:03:10 writing server/webhooks/stripe.ts:112
[w2] 12:03:14 running npx vitest run webhooks.test.ts
[w2] 12:03:18 passed 8 tests, 0 failures
[review] 12:03:20 PR #87 security scan starting (gemini-2.5-pro)
[review] 12:03:24 PASS security: 95/100 · quality: 92/100
[review] 12:03:25 posted review comment to PR #87

Five stages. Fully closed-loop.

Human enters the loop only once: to approve the PR. Everything else — from discovering the bug to verifying the fix worked — is automated.

┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ INGEST ───▶ TRIAGE ───▶ BUILD ───▶ REVIEW ───▶ VERIFY Sentry Haiku Opus Gemini re-check GitHub score worktree + GPT-5 24h post inbox dedup PR open unbiased merge └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ every 15m auto parallel cross-model if regressed → re-queue
01 Ingest

Auto-discover work

Polls Sentry errors, GitHub Issues (by label), inbox file, CI failures. Scores each by frequency, user impact, severity. Noise filtered out.

02 Triage

AI prioritizes

Haiku reads each item, deduplicates semantically, decides: build it, skip it, or ask a human. Outputs an actionable task with refined description.

03 Build

Claude Code in a worktree

Workers atomically claim tasks (SQLite row lock). Each spawns claude in an isolated git worktree. Runs tests, types, commits, pushes, opens PR.

04 Review

Cross-model. Unbiased.

Gemini reviews security (OWASP, injection, secrets). GPT-5 reviews bugs (logic, races, nulls). Different model families = can't rubber-stamp its own work.

05 Verify

Did the fix actually work?

24h after merge, re-checks the source. Sentry error still firing? GitHub issue still open? Regressions auto-re-queue at high priority.

You

Approve the PR

The only manual step. Review the diff, read the cross-model review comment, merge when ready. Everything else is automated.

Commands

Everything is a subcommand of shipfleet.

USAGE shipfleet <command> [options] SETUP init Detect project, configure, create .shipfleet/ start Launch dashboard + worker fleet on :4747 status Show fleet status, active sessions, cost WORK spawn "title" [desc] Spawn a one-off Claude Code session add "title | desc" Add a task to the inbox queue list [status] List tasks (queued, in_progress, stuck...) stuck Show tasks needing human attention ACTIONS approve <id> Approve a flagged task for building reject <id> Reject and close a task retry <id> Reset attempts, re-queue DAEMON daemon install Run 24/7 as a background service daemon stop Stop the background service daemon logs Tail daemon output

Can't run amok.

Every autonomous action has a guard. The system is built to fail safely, not to fail silently.

Auto-detects everything.

shipfleet init reads your project and configures itself. Framework, test runner, linter, type checker, git remote, CLAUDE.md — all automatic.

TypeScript
JavaScript
Python
Go
Rust
Java
Ruby
Next.js
Remix
Express
Django
Flask
FastAPI
Rails
React
Vue

Three commands to running.

install
# install globally
$ npm install -g shipfleet
# init in your project
$ cd my-project && shipfleet init
# launch
$ shipfleet start
# requirements
Node.js 20+ · Git 2.x · Claude Code CLI
npm install -g @anthropic-ai/claude-code
# env vars (never stored in config)
ANTHROPIC_API_KEY required — Claude Code sessions
GITHUB_TOKEN optional — PR creation + issue ingestion
GOOGLE_AI_API_KEY optional — Gemini security review
OPENAI_API_KEY optional — GPT-5 bug review