🎼 Open-source MCP · zero dependencies

Your agents run unattended β€” until something can't be undone

Autopilot for a fleet of Claude Code agents. They fly the reversible work unattended; a model-free gate stops the fleet before anything that deploys, sends, deletes, or spends β€” and hands that one call to you. You can look away because it can't ship without you.

$ claude mcp add conductor --scope user -- node ~/conductor/mcp.js
🎼 conductor β€” 4 windows Β· last 10 min
WORKING NOW
Build SOAG agent trading grid with character art conv-fix Β· 4s ago
SOAG Β· Grid
β€Ί Read: src/characters.js
Refactor the settlement engine managed x402-pact Β· 11s ago
x402 Β· Pact
β€Ί Running tests β€” 21 passing
WAITING ON YOU
Deploy degenscreener to production? gated survivors Β· 1m ago
DegenScreener
β€Ί β€œReady to run npm run deploy β€” confirm?”
Yes, deploy No Review first
OPEN
Tech week NYC schedule planning main Β· 17h ago
Good Rooms
β€Ί Done. Here's what I built…
0deps
Zero runtime dependencies. One Node file per surface, Node β‰₯18.
No build step, no daemon, no database.
1 gate
One model-free stop before deploy Β· send Β· delete Β· spend. No model in the loop.
Lives in policy.js β€” auditable, can't be crossed without you.
∞ agents
Fly a whole fleet hands-off β€” plus trading bots, MEV searchers, validators.
Pluggable adapters on one supervisory core.
The problem

You can't leave an agent alone β€” so you babysit ten

Agentic coding made it cheap to run five, ten, fifteen autonomous windows at once. But each one can quietly deploy, send, delete, or spend the moment it decides to β€” so you can't actually walk away. You sit there alt-tabbing, ready to yank the wheel, doing the one job a fleet was supposed to free you from. The bottleneck isn't compute. It's that you don't trust them to run unwatched.

Autopilot, not hands-on

Hand off the cruise; keep takeoff and landing

Conductor lets the reversible work run end-to-end β€” edits, tests, commits, the back-and-forth a window can answer for itself. It reads the live .jsonl trail each Claude Code window already writes under ~/.claude/projects/, so it knows what every agent is doing without you watching.

  • β†’ Auto-continues the safe, reversible steps so a window never stalls waiting on a routine "yes".
  • β†’ Floats the one window that actually needs you β€” wedged, done, or stopped at the gate β€” to the top.
  • β†’ Supervise by exception: Working now / Waiting / Open / Idle, problems first, one row per window.
~/.claude/projects/<dir>/<session>.jsonl
# discover β†’ liveness β†’ parse β†’ group β†’ status β†’ sort $ conductor # one row per live window, problems first ● Build SOAG grid conv-fix Β· 4s ● Refactor settlement x402 Β· 11s ● Deploy to prod? GATED Β· 1m ● Tech week planning main Β· 17h
The safety model

The autopilot flies the cruise. You own the landing.

This is the whole product. The fleet runs reversible work on its own β€” but the moment a window's next step would do something irreversible, Conductor physically stops and hands that one decision back to you. Auto-continue is commodity; auto-continue plus a gate you can't cross without a human thumb is the part you can trust. You can look away because it can't ship a deploy or move funds without you.

βœ“ AUTO-CONTINUE
β€œTests pass β€” shall I update the README and commit?”
reversible β†’ sends β€œcontinue”, work keeps moving
β›” GATED β†’ HUMAN
β€œReady to deploy to prod / send the email / spend 0.4 SOL?”
touches deployΒ·sendΒ·deleteΒ·spend β†’ refuses, returns reason

The bias is to stop when unsure: a false gate costs one manual reply; a false pass can ship a bad deploy or move real funds. The irreversibility gate lives in policy.js β€” auditable, no model in the loop.

Three surfaces, one engine

The cockpit is where you look when the fleet needs you

The cockpit isn't the product β€” the bounded autonomy is. These are just the three ways to keep one eye on a fleet that's running itself, and to land the calls only you can make.

πŸ“Š

The cockpit

Run conductor up for a live web view. Every window a card, color-coded by status, auto-refreshing β€” so a glance tells you the fleet's still flying and nothing's hit the gate. When one stops for a yes/no, it surfaces with one-tap Yes / No / Continue / Review.

πŸ”Œ

The MCP server

Conductor speaks the Model Context Protocol over stdio. An orchestrator agent calls list_sessions, whats_left, pending_questions and the gated control tools to run the fleet for you β€” and still can't push past the irreversibility gate.

πŸ’¬

The skill

Drop in the Claude Code skill and any window can tell you the fleet's state in plain English: β€œwhat's left across my windows?” β†’ a doing-now / done / waiting-on-you report per session.

πŸŽ›οΈ

Opt-in control

Launch managed windows through tmux, or adopt an existing one (forked, history intact) so Conductor can drive it. Even then, control stops at the gate β€” and read-only stays read-only.

The abstraction

If it narrates itself to disk, Conductor can watch it

Conductor is supervisory awareness over a fleet of semi-autonomous workers that already emit an append-only trail. Claude Code is one adapter. Swap the adapter, keep the engine β€” grouping, status, and all three surfaces come free.

Adapter
Reads
Control
claude-code
Your ~/.claude/projects transcripts; liveness from a live claude process
tmux send-keys (managed)
fleet
Trading-bot events.jsonl; derives wedged orders & drawdown, session PnL
pause Β· resume Β· flatten
mev-searcher
Searcher event logs; derives feed-dead, losing-every-race, bleeding-after-gas
pause Β· kill Β· unwind (gated)
validator-fleet
The chain itself β€” one batched RPC poll learns delinquency, catchup, skip-rate
observe-only by default

A domain fits when it has all four: many units with intent Β· a trail that already exists Β· a liveness signal Β· supervise-by-exception status. Write one file at adapters/<name>.js and every surface works with --adapter <name>.

Conductor V2 Β· swarms

Design the formation, then fire it

V1 watches windows you opened by hand. Its sibling Conductor V2 flips the order: pick a formation, set one purpose, press FIRE β€” and a fleet of Claude Code windows launches into tmux and coordinates through two dumb, reliable channels: a shared swarm directory for artifacts and a per-swarm swarm-say helper for one-line handoffs. The formation decides who talks to whom and who starts.

πŸ›

Hierarchical

Orchestrator β†’ workers
      β”Œβ”€ ORC ─┐
  β”Œβ”€β”€β”€β”Όβ”€β”€β”€β”¬β”€β”€β”€β”Όβ”€β”€β”€β”
  w1  w2  w3  w4

One orchestrator decomposes the mission, delegates a task per worker, collects reports, and synthesizes. Best when the work splits into independent chunks.

β›“

Pipeline

Sequential stages
s1 ─▢ s2 ─▢ s3 ─▢ s4
 each stage hands
 off to the next

Stages run in order; each consumes the previous stage's output and hands off. Best for a natural assembly line β€” recon β†’ audit β†’ verify β†’ report.

πŸ•Έ

Mesh

Peer-to-peer
  p1 ─── p2
   β”‚ β•² β•± β”‚
   β”‚ β•± β•² β”‚
  p3 ─── p4

Equal peers self-organize: each claims a distinct angle, works it, and broadcasts findings to the rest. Best for breadth β€” sweep a space from several directions at once.

Fire it from any agent. The V2 MCP exposes list_formations, plan_swarm (dry-run), fire_swarm, list_swarms, and stop_swarm β€” plus presets for deep research, market-bot sweeps, and web3 security reviews.
Explore swarms & formations β†’
# register the V2 swarm MCP $ claude mcp add conductor2 --scope user -- node ~/conductor-v2/mcp.js # then, from any session: β€Ί plan a mesh swarm of 4 to research x402, then fire it
Local-first by design

It only reads your own machine

Watching is read-only observation of trails that already exist β€” nothing leaves your laptop. The cockpit binds to 127.0.0.1 only.

  • βœ“ Reads your own ~/.claude β€” never another user's transcripts.
  • βœ“ State-changing requests require a local origin + CSRF header.
  • βœ“ Destructive control (flatten / broadcast / close) needs a confirm token.
  • βœ“ No destructive broadcast β€” ever. The desk-wide button is always a safe stop.
honest limits β€” v1
Control is managed-only. Plain terminal windows you opened yourself stay read-only β€” there's no reliable way to inject input into them.
β€œWhat's left” is inferred from the transcript, not a real todo list. Best-effort, honestly labelled.
β€œLive” = recently touched. Per-row time always shows true last activity.
Get started

Two ways to run Conductor today

Free Β· open source

Add the MCP server

Wire Conductor into Claude Code at user scope and it's available in every session. Run an orchestrator that flies the fleet β€” triaging windows, continuing the reversible work, and stopping dead at the gate on anything that deploys, sends, deletes, or spends.

# clone once $ git clone https://github.com/yksanjo/conductor ~/conductor # register the MCP (user scope = everywhere) $ claude mcp add conductor --scope user \ -- node ~/conductor/mcp.js
Get the MCP β†’
Visual Β· 1 command

Launch the cockpit

Prefer to watch? npm link puts a global conductor on your PATH β€” no build, no dependencies β€” then one command opens the live web dashboard in your browser, grouped by status and refreshing every 4s.

$ cd ~/conductor && npm link $ conductor # glance: table $ conductor up # the visual cockpit $ conductor say soag yes # reply
Read the docs β†’
FAQ

Frequently asked questions

Isn't this just a nicer view of my terminals?

No β€” a tidy dashboard is table stakes (tmux already gives you that). The point is that you can leave. The fleet runs the reversible work unattended, and a hard gate stops it before anything that can't be undone. The cockpit is just where you look when one window finally needs your call. You're buying the ability to look away, not a prettier grid.

Does it need me to instrument my agents?

No. It reads the .jsonl trail Claude Code already writes under ~/.claude/projects/. Zero instrumentation, zero new infrastructure, zero dependencies. Other workers (bots, validators) just need a small adapter file.

Can it ship something on its own?

Not anything irreversible. Ordinary work auto-continues, but the moment a window's question β€” or a proposed reply β€” touches deploy, send, delete, or spend, the gate in policy.js refuses and returns the reason so a human decides. Approving an irreversible action is always your call.

Is my code or my transcripts sent anywhere?

No. Everything is local-first. The cockpit binds to 127.0.0.1, reads only your own ~/.claude, and state-changing requests require a local origin plus a CSRF header. Run it for yourself, not as a service.

What about windows I opened by hand?

Watched, always. Controlled, only if you adopt them β€” Conductor forks the session into a managed tmux window (full history intact) so it can inject replies. Plain terminals the OS won't let anything type into stay read-only, by design.