Skip to content

The product

What the fleet answers to.

One instrument. Each section below is the real mechanism, drawn from the product.

The problem

Two records, one commit.

What git remembers
a41f2c9 fix flaky auth testLGTM
88d01e3 migrate sessions tableLGTM
c7aa412 bump ci runner imageLGTM
which one broke prod?unknown
What orchestrate keeps
a41f2c9 run 118, agent pool-2traced
work item: session-flakelinked
review: independent, refuted 0verified
rule applied: no-retry-maskingnamed
gate: autonomous, uncontestedratified
spend: $0.42 over 11m 48smetered
breaker: velocity 3 of 8bound

Git records that a change happened. It cannot record which agent made it, which review cleared it, what it cost, or which rule it was judged against, because none of that is in the commit. The right-hand record is not a nicer log of the same events. It is a different set of facts, captured while the work happened rather than reconstructed afterwards.

The fleet

Worktrees are table stakes.

pool-1
feat/token-gate4m 12s
pool-2
fix/session-flakeci green
pool-3
feat/spend-attr1m 48s
pool-4
chore/autonomyheld
pool-5
warm, ready2s to claim
pool-6
warm, ready2s to claim
Spend today$3.78
feat/token-gate$1.87
fix/session-flake$1.20
feat/spend-attr$0.71
chore/autonomy (held)$0.00

The pool is installed and built before work arrives. A claim is atomic, dispatch takes seconds, and spend lands on the run that spent it, held branches included.

The console

Every session, live.

session / fix-session-flakelive, 11m
agent pool-2
turn 6, steerable while it runs
  1. runvitest session-surface11:42
  2. readsrc/hooks/use-turn-paint.ts11:43
  3. editdebounce paint until the turn settles11:45
  4. runvitest session-surface: 42 passed11:47
>hold the flake fix, ship the paint fix first

The console sees every session on the machine as it runs. Type into one to steer it mid-turn; an idle session parks and resumes where it stopped.

One console, machine-wide.
session discovery across every project root, live and past
Steer without killing the run.
the composer lands your message inside the running turn
Idle parks, never vanishes.
durable runner record keeps parked sessions visible and resumable

The board

The board derives itself.

Board15 in flight / 1 stale
identified12
  • Spend attribution joins runs to work itemsyouperf2h
  • Search finds keys as well as sessionsagent/pool-2ux5h
in_progress2
  • Token gate rejects undeclared utilitiesagent/pool-1gate4m
  • Session paint races on a settling turnagent/pool-4test3d
ci1
  • Flaky session-surface testsagent/pool-2pr 11811m
pr_open0No open PRs

A tracker goes stale because keeping it current is a second job somebody has to remember. Here it is not a second job. Opening the item, binding the branch, stamping the PR and closing on merge are steps the agent already takes to do the work, and the board is the projection of those steps. Nothing is reported, so nothing can be reported late.

A commit cannot land untracked.
pre-commit refuses a commit with no active work item
A new branch is born tracked.
post-checkout opens the item from the branch itself
Stages only move forward.
the spine refuses a backward advance

The gate

One dial, three breakers.

The dial is the part you set. The breakers are the part you cannot unset, and they are why turning the dial up is a decision rather than a gamble: at full autonomy the fleet still cannot widen its own limits, clear its own review, or run unattended forever.

The autonomy dialGATEDFULLBIND AT EVERY SETTING
Autonomy mode
set it yourself

Gated: the fleet proposes, you ratify. The default, and where anything unrecognised fails safe.

Full: changes that clear every green gate ship without you. The breakers underneath still hold.

Breaker 01

Rules stay above the fleet.

A diff touching the rules, the autonomy policy included, is held for a human in every mode.

Breaker 02

Reviews resolve honestly.

Resolution requires an independent verifier that did not write the fix, refute-by-default.

Breaker 03

Runaways stop themselves.

A bounded run of unreviewed auto-merges halts the loop and surfaces on the board.

The review

Refute by default.

review / pr 1182 findings, 0 unresolved
missing null guard in turn paint
foundagent pool-2
fixedagent pool-1
verifiedagent pool-4
The agent that cleared it is not the agent that wrote it. A thread cannot be resolved by its own author.
debounce helper duplicates lib/timing
foundagent pool-2
refutedagent pool-4
The finding was wrong. The dismissal carries its evidence: the helper differs on the leading edge.

Every finding meets a verifier that did not write the fix and starts from no. A resolved thread carries the evidence that closed it, whichever way it closed.

The fixer never clears its own fix.
resolution requires an independent verifier
A dismissal carries its proof.
justify-and-resolve records the refutation on the thread
Reviewers are pluggable.
provider adapters behind one review contract

The trail

Append only, actor named.

Audit trailappend only
showing 5 of 25,855 events
  1. work.advanceagent/pool-114:22:07token-gate identified -> in_progress
  2. review.findingreviewer14:48:31token-gate severity medium
  3. review.verifyverifier14:52:10independent, did not author the fix
  4. gate.holdbreaker/0115:03:55autonomy-policy governance path
  5. canon.ratifyyou15:19:02never widen a scale to fit a call site

Two properties do the work here, and both are structural rather than promised. Every event names the actor that caused it, so “who decided this” is a field and not an investigation. And the store only ever appends: there is no update path and no delete path, so the record of a decision cannot be tidied up afterwards by the thing being judged.

The canon

Teach it once.

From session to rule, with provenanceSESSION 08-12PREFER FLUID SCALESGATECANONSESSION 08-09FIXED PX IS FINEWINSRATIFYCONFLICT: HELDPROVENANCE: EVERY RULE LINKS BACK TO ITS SESSION

Finished sessions are distilled into rules the whole fleet is judged against. Contradictions are arbitrated, the loser is held for you, and the winner keeps its receipt.

  1. ingest
  2. extract
  3. reconcile
  4. curate
  5. gate
  6. render
Contradictions do not both survive.
conflict detection with source-rank arbitration
A lesson learned twice stays one rule.
bounded-similarity dedup with a judge confirm pass
A contested rule waits for you.
the gate holds duplicate and conflict losers

Local first

One call crosses the line.

Everything stays on your machineYOUR MACHINEa1a2a3WORKTREESBOARDGRAPH.DBREVIEWCANONMEMORYYOUR CLAUDELOGINNO TELEMETRY. NO UPLOAD. NO CLOUD.

Local-first is easy to claim and hard to verify, so here is the verifiable version: there is no API SDK anywhere in the codebase. The model call goes out through the Claude Code CLI you are already logged into, under your own Anthropic agreement. We do not hold a key, run a relay, or operate a cloud for this product, which means there is no configuration in which your code reaches us.

One window

One window.

Sessions, worktrees, runs, spend, the board, the gate and the canon, one instrument. Every list searchable from ctrl-k.