Claude Code orchestration: running a fleet without losing control

Starting six agents is easy. Giving each one work that can finish independently, knowing which run needs attention, and merging six trustworthy branches is the orchestration problem.

By the Continuum team. We build a workbench that runs Claude Code, Codex, and their peers, so the model rates quoted here are the ones our own cost analytics ship with.

The short version

A Claude Code orchestrator is a control loop, not a launcher. Split work into independent tasks with explicit acceptance tests, give every editing session its own git worktree and branch, track a small set of states, review each diff with a fresh reader, and merge in dependency order. Use subagents for bounded research or delegated work inside one conversation; use separate sessions when outputs deserve separate branches, independent retries, and independent review. Plain tmux and git are enough for two or three agents. Conductor adds a focused Mac worktree board. Continuum adds a cross-device fleet view across hosts and providers. Orchestration pays only while saved execution time exceeds setup, coordination, and review cost.

What you need to know
  • The orchestrator owns task boundaries, state, review, and merge order. The agents own execution.
  • Every editing agent gets one worktree, one branch, one task, and one acceptance contract.
  • Use subagents for bounded delegation inside one session; use separate sessions for independently reviewable changes.
  • Model the fleet as a queue of explicit states, not a row of terminal tabs.
  • Review the diff and test evidence, never the confidence of the final message.
  • Merge in dependency order and rebase the remaining branches after every shared change.
  • Two to four agents is the useful range for most solo developers. Review capacity is the hard ceiling.

What orchestration actually means

Coding agent orchestration is the work around the model call. A launcher can open four Claude Code processes. An orchestrator decides what each process may touch, records what state it is in, notices when it is blocked, checks what it produced, and controls how the result reaches the main branch. Conflating those jobs is why many so-called fleets are only terminal windows with expensive processes inside them.

The five jobs in a Claude Code orchestration loop.

JobQuestion it answersFailure when omitted
DecomposeCan this task finish without another agent changing its inputs?Agents guess at interfaces that do not exist yet
IsolateWhat files and branch may this agent change?Concurrent edits overwrite or contaminate each other
ObserveIs it running, waiting, failed, or ready for review?You poll terminal tabs and miss blocked work
VerifyDid the branch satisfy its acceptance contract?A persuasive summary substitutes for evidence
IntegrateIn what order do approved branches rejoin main?Green branches conflict or invalidate one another

The useful mental model is a small build system with humans in the review nodes. Tasks form a dependency graph. Independent nodes may run concurrently; dependent nodes wait. Each successful node emits a branch, a diff, and verification evidence. The human or CI gate decides whether that artifact advances. If that sounds less glamorous than an autonomous swarm, good. Reliable orchestration is deliberately boring.

Start with the mechanics in running parallel Claude Code sessions and the repository model in the complete git worktree guide. Orchestration is the layer that decides when to use those mechanics and when not to.

Choose the right unit of parallelism

Claude Code has several ways to fan work out. They are not interchangeable. The key distinction is who owns the resulting context and branch.

Four ways to run more than one agent.

ApproachIsolationResult returns asUse it for
Separate Claude Code sessionsSeparate conversation; separate files with worktreesOne branch and transcript per taskIndependent features, fixes, audits, or A/B attempts
Claude Code subagentsFresh context; shared files by defaultA summary inside the parent sessionResearch, test writing, focused review, codebase search
Subagents with isolation: worktreeFresh context and temporary worktreeA delegated result folded into the parentBounded edits whose parent still owns the outcome
Agent teamsSeparate Claude instances coordinated by a leadA coordinated task graphLarge, communication-heavy work worth the extra token load

Use a separate session when the output deserves its own lifecycle. You want to restart it without disturbing other work, inspect its branch alone, send it to a fresh reviewer, open a pull request, or discard the whole attempt. A feature, migration, or bug fix usually belongs here. The session is an independently accountable worker.

Use a subagent when the parent conversation should remain the owner. Searching a large repository, checking a narrow security question, or writing tests for a finished API can be delegated and summarized back. The tradeoff is context loss: the subagent starts fresh and returns a summary, so it is a poor choice for work whose value lives in twenty minutes of discussion. The full configuration model is covered in Claude Code subagents.

Agent teams add communication among Claude instances, which is valuable only when the work truly needs coordination during execution. They also multiply context and token consumption. If three tasks can be written down independently, three worktree sessions are simpler, cheaper, easier to restart, and easier to review.

Decompose work before launching anything

Parallelism begins on paper. Before launching, write the dependency graph and force every proposed lane through one question: could this agent complete against the current base without receiving code from another active lane? If the answer is no, those tasks are sequential no matter how many models are available.

Good and bad fleet boundaries.

Parallelises cleanlyLooks parallel, is not
Fix an auth timeout; update unrelated docs; bump a dependencyDefine a schema; implement the server against it; implement the client against it
Build feature A in one module; add tests to stable module BRefactor a shared type while another agent adds consumers
Run two models on the same hard task and keep one branchAsk two agents to co-author one implementation
Audit three independent trust boundaries read-onlySplit one debugging chain into symptoms, cause, and fix

A good task packet is small enough to review and complete enough to test. Give it a goal, a literal file or subsystem boundary, an explicit non-goal, acceptance commands, and an output contract. Include known constraints such as no commit, no network, or no schema changes. Name the branch after the outcome, not the agent or model, because six hours later the reviewer needs to understand fix/refresh-race, not claude-3.

A fleet task packet that can be verified without reading the launch chat.
TASK: Fix duplicate refresh requests in the token loader.
SCOPE: src/token-loader.ts and its tests only.
NON-GOALS: no cache format changes; no UI changes.
BASE: origin/main at 4a3f2c1.
ACCEPTANCE:
  npm test -- token-loader
  npm run typecheck
OUTPUT:
  one branch; concise root cause; commands and exit results; caveats.

Keep a shared contract lane when several tasks depend on a new interface. Have one agent propose the schema or API, review and merge that small change, then fan implementation out from the new base. This one deliberate pause removes a large class of speculative integration work.

Make worktrees the write boundary

Every editing session needs its own checkout. Git worktrees are the right primitive because each directory has independent files, index state, and checked-out branch while sharing object storage and history. The result is cheap isolation with a normal branch at the end. Claude Code worktree support now handles the common path directly.

Three agents, three named branches and directories.
# let Claude Code create and enter each worktree
claude --worktree auth-timeout
claude --worktree docs-refresh
claude --worktree dependency-bump

# or create an existing/specific branch yourself
git worktree add -b fix/auth-timeout ../app-auth origin/main
cd ../app-auth && claude

Claude-created worktrees live under .claude/worktrees/<name>/ by default and should be ignored. A committed .worktreeinclude can copy selected gitignored environment files into each one. Dependencies still need installation, preferably through a package manager with a shared content-addressed store. Dependencies across worktrees covers the disk and cache tradeoffs.

Repository setup done once.
# .gitignore
.claude/worktrees/

# .worktreeinclude
.env
.env.local
config/local.json

Start every lane from a recorded base commit. If main moves while the fleet is running, do not silently update half the worktrees. Merge the dependency that matters, rebase affected branches deliberately, rerun their gates, and leave independent branches alone. Reproducibility is worth more than theoretical freshness.

Launch with a contract, not a paragraph of hope

The launch prompt should be boring enough that another engineer can audit it. Put the task packet in the repository issue, a scratch file, or the command itself, and give the session a stable name matching its branch. The model needs the objective and constraints; the operator needs a handle that survives terminal reordering.

01

Record the base and reserve the lane

Capture the base commit, task owner, branch, worktree path, acceptance commands, and dependencies before a process starts. This is the fleet ledger.

02

Provision the worktree and environment

Create the branch, copy only required local configuration, install dependencies, and prove the baseline gate is not already failing.

03

Start Claude Code with one bounded task

Give the session its own task packet. Ask it to stop and report when a non-goal becomes necessary rather than expanding scope silently.

04

Publish state, not narration

The session should end with changed files, acceptance command results, remaining risks, and a branch state. A long story about the implementation is optional.

For a small local fleet, tmux is enough. Use one session per repository and one named window per lane. The terminal multiplexer gives processes durability and a stable index; git gives each window its write boundary.

A plain tmux control surface.
tmux new-session -d -s app -n auth   "cd ../app-auth && claude"
tmux new-window  -t app -n docs         "cd ../app-docs && claude"
tmux new-window  -t app -n deps         "cd ../app-deps && claude"

tmux list-windows -t app
tmux attach -t app

Monitor a fleet as a state machine

A useful monitor answers what needs attention without opening a transcript. Keep the state vocabulary small and operational. More detail belongs inside the session, not in the fleet index.

A state model that works from tmux to a dedicated orchestrator.

StateMeaningOperator action
QueuedTask is defined but a dependency or slot blocks launchWait or change priority
RunningAgent is producing workLeave it alone
Needs inputPermission, decision, secret, or ambiguity blocks progressAnswer narrowly
VerifyingImplementation stopped; gates are runningWatch for deterministic evidence
Review readyDiff and gate results are availableAssign a reviewer
FailedProcess, environment, or acceptance gate failedClassify before retrying
ApprovedReview accepted the branchPlace it in the merge queue
IntegratedMerged and downstream branches updatedClean up the lane

Do not collapse every non-running session into failed. A permission prompt, a test regression, a dead process, a rate limit, and an unreachable host need different responses. Retrying all of them burns quota and often repeats the same failure. Classify the blocker, preserve the exact error, and decide whether the fix belongs to the task, the environment, or the orchestration layer.

With plain CLI tools, the ledger can be a Markdown table plus tmux list-windows, git worktree list, and git -C <path> status --short. Refresh it on meaningful transitions rather than every token. A dedicated Claude Code orchestrator should derive the same states from process activity, permission gates, plan readiness, test output, diff presence, and pull-request status.

Quota belongs in the fleet view because parallel sessions share the account window. Four agents may consume roughly four times the allowance. Check Claude Code rate limits before launching the fourth lane, and use a usage dashboard when the fleet spans accounts or providers.

Review and merge are part of orchestration

The orchestration loop is incomplete when an agent says done. Completion produces a candidate branch. Acceptance requires reproducible gates and a diff review by someone or something that did not write the change.

  1. Freeze the task boundary. Record the final base and head commits. Any later edit starts a new review cycle.
  2. Run the named gates. Capture command, exit code, and relevant output. Separate a source failure from an environment blocker.
  3. Review the branch diff. Check scope first, correctness second, security boundaries third. Ignore the author summary until after the diff.
  4. Use a fresh reviewer. A read-only Claude Code subagent or separate session can look for concrete defects without inheriting the author context.
  5. Merge one branch. Choose dependency order, update main, then rebase and reverify every affected remaining branch.
  6. Remove the worktree. Keep the branch or pull request as the durable artifact; the checkout is disposable.
The evidence trail for one lane.
git -C ../app-auth diff --stat origin/main...HEAD
git -C ../app-auth diff origin/main...HEAD

# run the contract inside the isolated checkout
npm --prefix ../app-auth test -- token-loader
npm --prefix ../app-auth run typecheck

# publish for CI and review
git -C ../app-auth push -u origin fix/auth-timeout
gh pr create --fill --head fix/auth-timeout

One pull request per worktree preserves attribution, CI, and rollback. Squashing every lane into one integration branch before review erases those benefits. If a fleet produces more branches than you can review carefully, reduce concurrency rather than weakening the gate.

The orchestration landscape, honestly

There is no single best Claude Code orchestrator. The right surface depends on whether the hard problem is process durability, a dense desktop board, or a fleet spread across devices and hosts.

Three practical operating surfaces.

SurfaceWhat it does wellWhat you still own
Plain tmux, git, and CLITransparent, scriptable, works on any shell host, no product dependencyWorktree provisioning, status extraction, review queue, mobile ergonomics
Conductor for MacFocused GUI for parallel coding agents in isolated workspaces, with review and merge flowA Mac-centered operating model; decide separately how remote or phone access fits
ContinuumOne session fleet across Mac, web, iPhone, Watch, and enrolled hosts, with plan, diff, PR, terminal, files, and usage stateTask decomposition, acceptance criteria, and the final review decision

Conductor came from the former Melty team in Y Combinator and made the worktree board legible: start agents in isolated copies, see what each is doing, then review and merge. It announced a $22 million Series A on March 30, 2026. Its cloud workspaces extend the local Mac model with Vercel Sandbox infrastructure. That is a serious product for people whose day is a dense board of local or cloud workspaces, not a toy to dismiss because tmux exists.

Continuum starts from the same need for isolated, reviewable sessions but treats the fleet as cross-device. The Mac, web, and native iPhone surfaces open the same managed sessions; enrolled Mac, Linux, and Windows hosts can do the execution; the iPhone can create and steer sessions, approve plans, interrupt work, read diffs, follow pull requests, use a terminal, and inspect files. Those are product claims already documented in Continuum mobile, the device fleet, and Sessions.

Plain tmux remains the correct choice when there are two agents, one host, and an operator who wants no additional layer. A GUI earns its place only when it removes more polling and coordination than it introduces. Keep the underlying branches and commands understandable so leaving a tool never means losing the work.

When orchestration pays, and when it is overhead

Parallel agents save wall-clock time only on the portion of work that is independent. They add setup, context packaging, quota consumption, review, merge, and failure-classification cost. The economic test is simple even when the inputs are estimates.

A useful decision rule, not a benchmark.
benefit = sequential execution time - parallel critical path
overhead = decomposition + setup + monitoring + review + integration

run the fleet only when benefit > overhead
and review capacity >= expected completed branches
Orchestration usually paysOrchestration usually loses
Three independent changes with stable testsOne small fix in one file
A repository-wide mechanical migration split by moduleAn ambiguous bug whose cause is still unknown
Parallel read-only audits of separate boundariesSeveral edits to the same shared types
A/B implementations where one branch will be discardedA chain where every task consumes the previous output
Long tests or builds that can run independentlyWork that takes less time than provisioning a clean worktree

The hidden limit is arrival shape. Three agents often finish together because they started together. That creates a review burst, and branches wait while main changes underneath them. Stagger launches so the first review arrives before the last agent starts, or keep one slot empty for urgent fixes and verification. Maximum concurrency is rarely maximum throughput.

Measure the result over a week. Track elapsed task time, first-pass gate rate, review minutes, rework, and discarded branches. Add quota or estimated cost from Claude Code cost tracking. If more lanes increase output but lower accepted changes per review hour, the fleet is growing in the wrong direction.

Questions people ask

It is the control loop around several Claude Code workers: decomposing tasks, isolating each editing session, tracking state and blockers, verifying results, reviewing diffs, and integrating approved branches in the right order. Merely opening several terminals is parallel execution, not orchestration.

Give every editing agent its own git worktree and branch, one bounded task, and explicit acceptance commands. Track each lane from queued through review ready, then review and merge branches one at a time in dependency order.

Use subagents for bounded work that should return to one parent conversation, such as research, focused review, or tests. Use separate sessions for changes that need independent branches, retries, pull requests, and review. Add isolation: worktree to a subagent when it must edit without sharing the parent checkout.

They can start there, but it is not safe. They can overwrite files, stage each other's changes, and run commands against moving inputs. A worktree per agent gives each one independent files and branch state.

Usually two to four editing sessions, and often only two plus a reviewer. Machine capacity is rarely the limiting factor. Shared account quota, simultaneous blockers, and the number of diffs you can review carefully set the useful ceiling.

Track a small set of actionable states: queued, running, needs input, verifying, review ready, failed, approved, and integrated. A tmux session plus a Markdown ledger works for a small fleet; a dedicated orchestrator can derive those states across hosts and devices.

Yes. Conductor is a focused Mac application for running coding agents in parallel isolated workspaces and reviewing and merging their output. Its cloud workspaces extend that model with remote Vercel Sandbox execution.

Continuum projects managed worktree sessions into Mac, web, iPhone, and Watch clients and can run them on enrolled hosts. It attaches chat, plan, diff, PR, terminal, and files to the same session and shows providers and usage in the fleet. The human still owns decomposition and final review.

When the task is small, ambiguous, tightly sequential, or concentrated in shared files. If setup, context packaging, review, and integration take longer than the parallel time saved, one well-directed session is the faster system.

Sources

Every figure above was read from these pages on 3 August 2026. Vendors reprice without notice; if you find a stale number, tell us.

  1. Claude Code: run parallel sessions with worktrees
  2. Claude Code: create custom subagents
  3. Claude Code: orchestrate teams of agents
  4. git-worktree manual
  5. Conductor on Y Combinator
  6. Conductor Series A announcement
  7. Conductor cloud workspaces on Vercel Sandbox
Try it

The fleet is running.
Now make it legible.

Continuum keeps every worktree session, host, plan, diff, PR, terminal, and usage signal in one cross-device fleet.

free app · your subscriptions · local-first