🎼 Open-source MCP · Claude Code + Codex

One cockpit for your agent fleet

Conductor watches Claude Code, Codex, and any worker with an append-only trail. Reversible work can keep moving; a model-free gate stops before anything that deploys, sends, deletes, or spends and hands that call to you.

$ conductor up Β· $ codex-conductor up Β· one local cockpit, no cloud service
🎼 conductor β€” Claude + Codex Β· 5 sessions Β· last 10 min
WORKING NOW
Build SOAG agent trading grid with character art conv-fix Β· 4s ago
SOAG Β· Grid
β€Ί Read: src/characters.js
Patch Codex cockpit project labels managed codex Β· 11s ago
Codex Conductor Product
β€Ί Infers project from transcript paths β€” tests 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
Review design direction against Bicameral codex Β· 17h ago
conductorMCP.com
β€Ί Comparing site copy, cockpit mock, and install paths…
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 sessions 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 trails your agent CLIs already write, from ~/.claude/projects/ to ~/.codex/sessions/, 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.
append-only trails: ~/.claude/projects + ~/.codex/sessions
# discover β†’ liveness β†’ parse β†’ group β†’ status β†’ sort $ conductor # one row per live window, problems first ● Build SOAG grid claude Β· 4s ● Patch Codex labels codex Β· 11s ● Deploy to prod? GATED Β· 1m ● Site design review codex Β· 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 Codex adapter

Codex sessions get the same cockpit treatment: project labels, intent, last action, waiting state, and managed replies. Launch codex-conductor up when your fleet is Codex-first.

πŸŽ›οΈ

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 and Codex are adapters. 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)
codex-code
Your ~/.codex/sessions transcripts plus session_index.jsonl; infers project context even when Codex starts from home
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>.

Codex support

Codex gets the same supervisory layer

Codex writes durable local transcripts under ~/.codex/sessions. Conductor turns those trails into the same status model: what is working now, what is open, what is waiting, and which project a session actually belongs to.

Classic Conductor for Claude Code

Use this when the active fleet is Claude Code windows, or when you want the broader adapter set for bots, validators, MEV searchers, and sales agents.

$ npm install -g conductor-cli $ conductor up $ conductor mcp

Codex Conductor for Codex sessions

Use this when the work is happening in Codex. It reads Codex transcripts, resolves project labels, and exposes the same cockpit and MCP control plane.

$ npm install -g @yksanjo/codex-conductor $ codex-conductor up $ codex-conductor mcp
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
Conductor Β· cameras

Point the same cockpit at a camera

V1 watches your Claude windows; V2 fires swarms. The newest sibling, Conductor Camera Monitor, watches cameras. Each RTSP feed becomes an AI detective β€” a Claude session with a one-line mandate. It samples frames, Claude's own vision does the seeing (no model to train β€” it watches anything you can describe), a motion gate keeps 24/7 watch cheap, and every finding lands in a hash-chained alert ledger you can verify.

πŸ”’

Security

front door Β· after dark
watch front_door:
 alert when a
 person appears
 after 10pm

A person enters frame at night β†’ alert. The same person still standing there next frame stays quiet β€” dedup fires only on change.

🌱

Farming

greenhouse Β· crop health
watch greenhouse:
 warn when a
 crop bed looks
 dry or wilted

No ML model, no labels. If you can describe what "dry" looks like, the detective can flag it β€” and tell you which bed, with the frame as evidence.

🏭

Production

packing line Β· uptime
watch line_1:
 critical if the
 conveyor is empty
 for over 30s

Object counts, no-go zones, defects, stoppages β€” any rule that's easier to say than to train. Escalates honestly: info β†’ warn β†’ alert β†’ critical.

One prompt onboards a detective. The MCP exposes add_feed, grab_frame (returns the frame as an image to look at + a motion score), emit_alert (hash-chained, auto-deduped), and recent_alerts β€” plus a live web cockpit: a wall of camera tiles with a color-coded alert stream.
Get Camera Monitor β†’
# register the camera MCP, then add a feed $ claude mcp add camera-monitor -- node ~/conductor-camera-monitor/bin/ccm.mjs serve $ ccm add front_door "rtsp://…" --mandate "alert when a person appears" # onboard the detective (prints the one prompt to paste) + open the cockpit $ ccm detective front_door $ ccm dashboard # β†’ localhost:4055
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 and ~/.codex trails β€” 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

Run Conductor where your agents already work

Free Β· open source

Add the MCP server

Wire Conductor into Claude Code or Codex and make it available wherever you orchestrate. 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 # Claude Code fleet $ claude mcp add conductor --scope user \ -- node ~/conductor/mcp.js # Codex fleet $ codex-conductor mcp
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. Use conductor up for Claude Code fleets or codex-conductor up for Codex fleets.

$ cd ~/conductor && npm link $ conductor # glance: table $ conductor up # Claude cockpit $ codex-conductor up # Codex cockpit
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 trails your tools already write, including ~/.claude/projects/ and ~/.codex/sessions/. Zero instrumentation, zero new infrastructure, zero dependencies. Other workers 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 / ~/.codex, 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.