Skip to content

fleet

One brief in.
One pull request out.

A squad of Claude Code agents on your Mac. One of them is the boss.

Apple silicon. Intel Macs are not supported.

A squad running one round

pull request opened

one branch, three agents, reviewed

orchestrator
waiting on you: planplan approvedround sealed
  • agent: railfleet/rail
    runningmerged
  • agent: reviewfleet/review
    runningrequest_reviewmerged
  • agent: storefleet/store
    runningmerged
running blocked on a decision merged failed

Parallel is the easy half.

Five terminals give you five dirty trees on one branch, and you are the integrator. Fleet gives you one branch and one pull request, because a boss already did the integrating.

The Fleet interface

The orchestrator

A boss that is itself an agent.

Six tools, in order. Every one is real and you can watch it run.

  1. 01plan mode

    Nothing runs until you approve the plan

  2. 02spawn_agent

    Each agent gets a brief and a checkout of its own

  3. 03request_review

    An agent commits, hands back, and stops

  4. 04review_agent

    The orchestrator answers: notes, or approval

  5. 05merge_agent

    Work lands in the orchestrator’s worktree, never on your base branch

  6. 06open_pull_request

    One pull request, and the round is sealed

Isolation

Every agent gets its own checkout.

A real git worktree, not a container and not a promise to be careful.

A worktree and a branch each

Two agents never share a working directory, so nothing races.

Ten ports per session

Derived from the session id, inside 3100-3999. No two dev servers collide.

A real terminal, per session

Its own pty, in its own checkout.

Branched from origin

Never from your local base, so no agent starts a week behind.
Example sessions, each with its own branch, its own worktree and its own block of ports.
branchworktreeports
fleet/railacme.fleet/rail3140-3149
fleet/reviewacme.fleet/review3210-3219
fleet/storeacme.fleet/store3380-3389

blocks are 10 ports wide, inside 3100-3999, and derived from the session id

Review

Nothing merges that you have not read.

The orchestrator reviews its agents. You review the orchestrator.

Notes on lines

Select, write, and the whole draft goes back as one prompt.

Notes that follow the code

If it moved, the note moves. If it is gone, the note says so.

Git you can see first

Every ship action prints its exact commands before it runs them.
src/main/agent/orchestration/squadOps.ts+2 -1
export function mergeAgent(squad: SquadRecord, agent: SessionRecord) {
- return git.merge(agent.branch)
+ if (squad.sealed) throw new FleetFailure(SEALED)
+ return git.merge(agent.branch, { into: squad.branch })
}

note on line 3

Refuse before the merge, not after. A sealed round should not touch the branch at all.

Ship
  • $ git -C acme merge --no-ff fleet/rail
  • $ git push --set-upstream origin fleet/rail
  • $ gh pr create --base main --head fleet/rail

Every action shows the exact commands before it runs them. Merges run from the main worktree under a per-repo lock, and refuse rather than stashing anything on your behalf.

Everything else

The rest of it, without the adjectives.

Checkpoints

Undo a turn without touching your history

Every turn is captured as a tree on refs/fleet/checkpoints, a Fleet-only ref. It is never a commit on your branch, so it cannot appear in your log or in your diff against base. Restoring puts tracked content back and deliberately does not delete a file the turn created.

MCP

Servers carry their provenance

A server you type into Settings is trusted the way a shell profile is. One declared in a repository arrives disabled, and its own enabled flag is ignored, because the repository is not the party being trusted. Approval is keyed to a fingerprint of the definition, so editing the command does not inherit the approval.

New project

30 templates across 9 toolchains

Node, uv, cargo, go, composer, Flutter, Swift, XcodeGen and dotnet. Fleet scaffolds, commits, publishes and registers the repository, then hands the first session a brief that already knows what the project is for. Integrations install the dependency and write blank env keys. They do not generate the wiring.

Usage

A ledger per turn, not a running total

Each row is one turn and carries that turn alone, attributed solo, orchestrator or worker. A row that copied the session total would bill every turn for all of its predecessors, and every chart would double count.

Command palette

Every action from the keyboard

New session, new squad, new project, move between sessions, toggle the review panel, open a worktree in an editor, settings, usage, diagnostics. It is the fastest way around a rail with a dozen sessions in it.

Themes

Twelve, from two attributes

Four schemes and three accents on the root element. Schemes own surfaces and text, accents own only the accent family. Every accent stays in the blue to violet band on purpose: cyan, amber, green and red are already spoken for by status.

Notifications

You find out when an agent needs you

A native notification when a session is blocked on you, when one fails, and when one finishes its turn, so a squad can run while you are in another window without becoming something you have to poll. A worker finishing is not one of them: that is its orchestrator’s turn, not yours.

Editors

Open any worktree where you actually work

VS Code, Cursor, Windsurf and Zed, jumping to the line, plus Finder and Terminal. Fleet probes your login shell PATH for each, so the menu lists what you have and nothing you do not.

Trust

The agent has your filesystem. Fleet does not have your code.

Local, and no account

No sign in, no cloud, no telemetry. Update checks are the only call home.

Your Claude, your gh

Fleet drives the tools you already installed. It never asks for a key.

A display layer that stays one

Sandboxed, no remote URL ever loaded, repository markdown rendered without raw HTML.

Commands by id

Never a free text string from the window to a shell. That path does not exist.

Fleet is free. It is not open source.

You bring your own Claude Code subscription or API key. The source stays closed.

Apple silicon. Intel Macs are not supported.