Skip to content

Repository files navigation


ORCA



A containment console for fleets of coding agents.

Many agents at once, on any machine, from any provider, in one field.
You talk to them, they talk to each other, and they spawn more.
The console reviews itself and, with your approval, changes its own code.


The ORCA field: a project region with three squads wired to their leads, CAPCOM standing off to the left, the HUD counting 17 idle agents and 3.7M tokens

Nineteen agents on the field. Two FORGE squads and a mission wired to their leads. CAPCOM in cyan.



Claude
Claude Code
OpenAI
Codex
Grok
Grok

One field for all three. Solid, dashed and dotted stripes tell them apart on a tile.




What it is

Coding agents end up spread across a laptop, a VPS, a second Mac, a container, each one in its own terminal tab. ORCA is the one place where all of them are visible and reachable.

ORCA reads what those agents already write to disk and turns it into a single live picture. It does not wrap the agents, does not patch them and never calls a model itself. Claude Code, Codex and Grok sessions appear on the field when they start, whether ORCA launched them or you did.

The repository ORCA runs from is itself a project on the field. A reviewer agent proposes changes to the console; approved proposals are implemented by a squad in a worktree while the fleet keeps running.

Three processes, and one machine is enough:

collector ──(ws, outbound)──▶  hub  ◀──(ws)──  console
per machine                    │               browser · phone
   └── CAPCOM ──(MCP/http)─────┘

On a laptop, all three run together with npm run dev. A second machine, a VPS or a container joins the fleet by running a collector pointed at the hub. Collectors dial out, so no machine needs an open port; a laptop behind NAT works the same as a server.


Many agents, at the same time

ORCA is an interface for concurrent work: several agents running and several conversations open at the same time.

  • Every conversation is open at once. Each agent has its own thread, and the ones that need you are queued so you can answer in order, with Tab jumping to the next one. Nothing blocks while you read something else.
  • Providers mix on the same field. A Claude Code lead can have Codex members and a Grok reviewer. A tile's stripe tells you which is which; everything else, from budgets to terminals to messages, is the same for all of them.
  • One line reaches anyone. @K9 to an agent, @LZ to a project, @audit-01 to a squad, nothing to CAPCOM. Reply to a blocked agent from its window, from the queue, from the shell or from your phone.
  • Agents talk to each other. A worker can ask a peer, hand off to a squad, warn the fleet or escalate to a human, through a mailbox any CLI can write to. CAPCOM routes it, so twenty agents do not interrupt each other twenty times.
  • Agents create agents. A lead spawns members, members spawn helpers, and the lineage is drawn as pipes so you always see who made whom. A squad or a whole fleet preset launches from one line.
  • Work lasts longer than a session. A mission is a thread that keeps its agents, its messages and its state across days, across CAPCOM being recycled and across the hub restarting. Hosted agents live in tmux and survive ORCA itself. Budgets, history and the journal are there for the morning after.

The field

There is no dashboard. The whole viewport is an infinite WebGL plane you pan, zoom and tilt.

  • Every agent is a tile. Its state rides the left edge. A working tile carries a band whose speed is its tokens per second. One waiting on you turns amber and breathes. A dead one is a red ghost.
  • Relationships are pipes. Grey from parent to child, lime while the child lives. An unanswered question is an amber pipe pointing at whoever owes the answer. Two agents editing the same file are joined by a red dotted line.
  • Projects are regions, squads are blocks. A squad packs its members behind its lead under one outline, with a roster that stays readable when the tiles are specks.
  • Colour is meaning. Lime is live. Amber means a human is required, and nothing else ever. Red is dead or breach. Violet is ORCA looking at itself.
  • Windows open over the field. An agent's transcript, its terminal, CAPCOM, the interrupt queue, an artifact it produced: each is a small instrument you drag, pin to a tile or fold into the tray. The field remembers where you put things.
  • Everything answers a right-click, and every verb has a key.

Measured at 3,000 synthetic agents, with frame rate, draw calls and DOM nodes reported per size (npm run stress).


CAPCOM

The command agent: one session that speaks to the fleet on your behalf.

CAPCOM is not a model ORCA calls. It is an ordinary CLI session, on whatever provider and subscription you already have, with the hub as its only tool set over MCP. ORCA never speaks to a provider directly, and no provider's SDK lives outside its adapter. Tell CAPCOM what you want in plain language. It spawns agents, forms squads, answers their questions, watches their budgets, stops the ones going in circles and reports back. Anything it cannot decide comes to you as an amber window.

  • 46 tools, no exec. Spawn, say, inspect, interrupt, stop, budget, archive, remember, recall, journal. A stolen hub token must never become code execution on your laptop, so there is no shell.
  • Any provider, switched live. Pick its provider and model from the console. Changing either is a handoff: the new session inherits the missions, the rules, the workers and the conversation, and the fleet does not notice.
  • Recycled before it forgets. After a set number of context compactions or turns, CAPCOM hands off to a fresh session with a briefing of what finished since. Missions, rules and workers survive the handoff.
  • Works with a hand on the camera. CAPCOM can fly you to an agent, frame a squad or open a window while it talks.
  • Push to talk. Hold ⌥V and speak. Release, and the line goes in as text.

Without CAPCOM, ORCA is still a fleet monitor: every question goes straight to you.


What the fleet can do

Squads and missions A lead with members hanging off it, launched from a brief or a saved preset. A mission is a thread that survives CAPCOM being recycled, and that you open days later to see how it ended.
Agents talk back An agent can ask a human, message a peer, hand work to a squad, or raise a warning. The channel is a mailbox of files in the project, so any CLI with a filesystem can use it.
Worktrees Each worker gets its own branch. orca land rebases it, runs the suite and makes one commit. orca discard throws it away.
Terminals Hosted agents run in tmux panes. Open one from the console and you are typing into the real CLI, permission prompts included.
Budgets A ceiling in tokens or minutes on an agent, a squad or a mission. At 100 % an agent still making progress is reported, one that has gone quiet is stopped.
History The hub snapshots the fleet every 20 seconds. Scrub the timeline and the field redraws that instant. "While you were away" diffs then against now.
Journal Every launch, end, escalation, answer and landing, one line per fact. Queryable by CAPCOM and from the shell.
Artifacts Images, video and HTML an agent produces appear on the field next to the agent that made it.
Many machines One collector per machine. A project cloned on several goes to the least busy one.
Credentials Keys are encrypted at rest on the machine that holds them and injected at spawn time. The hub only ever sees a name and four characters.
Bounded Finished agents, questions, artifacts, snapshots and feed all have ceilings. It is meant to be left running.

Self-improvement

The console has one section that is not about the fleet. It is about the console.

Review. ORCA launches a reviewer agent over its own repository. It appears on the field like any other agent, with its callsign, its state and its spend, except that it wears violet and has had its editing tools taken away. It reads how the console and CAPCOM are actually being driven, what gets in the way, what costs too much, what the operator keeps doing by hand.

Proposals carry their evidence. Each proposal says whether it stands on measured numbers or on a hypothesis, and the card's texture shows which. Invented measurements are rejected before they reach you. Ideas the data cannot support are welcome, as long as they say so.

Approval is manual. Nothing happens on its own. Reply, snooze, dismiss, or press IMPLEMENT.

Implementation. IMPLEMENT opens a mission and hands it to FORGE, a lead that forms a squad in a worktree of this repository, implements the change against the type checker and the test suite, and gives the branch to CAPCOM to land. The hub and collector reload under the new code. The agents on the field never notice.

On request. ORCA's own repository is a project on the field, so "make the queue louder" said to CAPCOM becomes a worker on this code like any other. Rules you give it are kept and handed to every CAPCOM after it.

A good part of this repository was written this way.


From anywhere

orca ls --blocked                       # who needs a human
orca spawn AX "fix the flaky auth test" # one agent
orca squad audit --project AX --lead "..." --member "..."
orca say K9 "run the tests again"
orca stop squad:audit --reason "wrong branch"
orca journal --stats --since 7d

The console installs as an app on a phone, with push notifications when an agent blocks. Two ways to reach it from outside the machine:

Tailscale On your tailnet. If Tailscale is on the machine, the hub publishes itself over https at boot, with a real certificate and only to your devices. It survives reboots, so nothing has to be re-run. The console is then reachable from any of your devices.
Without it. On the LAN it is a URL. Behind any tunnel it is the same URL. Set a token before you expose it, and the hub refuses everything else.

Run it

Needs Node 22, tmux for hosted terminals, and at least one of the Claude Code, Codex or Grok CLIs.

git clone https://github.com/danielcardeenas/orca && cd orca
npm install
npm run dev              # hub, collector and console → http://127.0.0.1:4478

The hub prints a token on first start. Open the console with ?k=<token> once and it remembers.

To let agents in a project reach you, run orca-install there. It drops a skill into the repo so any session started in it knows it can ask.


Under the hood

src/hub          the world: agents, missions, budgets, history, journal, auth, MCP
src/collector    one per machine: reads transcripts, runs panes, carries CAPCOM
src/ui           the console: WebGL field, windows, HUD, voice, PWA
src/agents       CAPCOM's tools
bin/             the orca CLI and the agent-side commands
skill/           what an agent is taught when orca-install runs
test/            unit suites, a visual harness and browser shots
docs/            contracts, design records and operations

Tests

npm run typecheck
npm test                 # every unit suite
npm test -- --changed    # the suites that reach what you touched
npm run shots            # the real console in Chromium, one scene at a time
npm run visual           # photographs every state the console can be in
npm run stress           # 24 → 3,000 agents

ORCA · Orchestration & Reconnaissance Console for Agents

About

A containment console for fleets of coding agents. Watch every agent on every machine in one field, command them through one voice, let the fleet improve its own console.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages