You manage
You write the mission — the one piece of text in the entire system no agent may write. You set direction, judge evidence and decide what gets spent. You do not babysit steps.
- Mission per workspace
- Ratify the doctrine
- Set the autonomy bar
code is one window for the whole fleet. It dispatches Claude Code or Codex into any repo you own — each worker in its own git worktree, each under its own spending cap. Nothing merges itself: every report a worker files is checked by a second model that did not write the code.
Runs on your machine, on your Claude and ChatGPT subscriptions. No keys resold, no quota resold, no account to make, nothing phoning home.
The console's actual layout — a lane per repo, eight tabs deep, orchestrator dock bottom-right. Contents left unreadable on purpose. Hover or tap a lane or a tab.
Every agent system eventually asks the same question — who decides? code answers it up front by splitting the work into three jobs that never do each other's, and putting a kill switch on each. Off means refused, not hidden: whatever would have used a role you switched off stops and says so.
You write the mission — the one piece of text in the entire system no agent may write. You set direction, judge evidence and decide what gets spent. You do not babysit steps.
Claude Code by default, codex exec per lane if you want it.
Each runs headless in an isolated worktree, budget-capped, resumable, with
its full transcript readable in the console.
claude -p / --resumeamp/<lane> worktree eachWhen a lane stalls, the console builds a packet — commits, working tree, the uncommitted diff, the branch diff, recent dispatches, a digest of what the worker actually did — and escalates. The ruling is saved and relayed.
Every lane gets its own branch and its own worktree before a single token is spent. Workers write there and nowhere else — which is what makes it safe to run nine of them at once against a tree you are also typing in.
And when the work comes back, apply refuses to merge. It lands the diff in the worktree and stops. The merge is a decision, and decisions are yours.
.amp/, never in your repo# register a repo as a lane
$ amp lane add trvm --path TRVM --branch main
# dispatch — the worktree is created first
$ amp dispatch trvm "Close the w=64 measurement gap." --cap 2.00
git worktree add -B amp/trvm .amp/worktrees/trvm main
claude -p … --permission-mode acceptEdits --session-id 9f3a…
→ task t-0192 running $0.00 / $2.00
# your checkout, meanwhile
$ git status --short
(nothing)
A goal is one objective, not a task list. The architect reads it against the real repository and writes the definition of done and the tasks itself, then sends the first worker. Roughly twenty seconds from sentence to running work.
Each proposed goal is scored with the odds it finishes — every done-condition met, without stopping to ask you for something. You set the bar with one slider. Above it, work starts on its own. Below it, it waits in Direction with its reason showing.
Agents are fluent, and fluency is exactly what makes "done" worthless. So code injects a doctrine verbatim into every plan, every worker prompt and every review, and it starts by deleting the words agents hide in. There is no checkmark. There is no percentage. There are five rungs, and when in doubt you downgrade.
Do not manufacture a finding to have something to say — rule 2 covers that too.
Register a command as a standing obligation and the console runs it on the heartbeat. When it stops exiting zero it surfaces above the board, and it stays there until it passes. Rule 1, wired to the wall.
Above it sits one thing only: what the work said about the doctrine. A stale build is a chore. A contradiction is news, and it is ranked like news.
python3 checks/trvm_bench_published.py — exit 1
4m
mix test — 116 laws, exit 0
4m
code shells out to CLIs you already have, signed in to accounts you already pay for. Two of the three tiers spend no metered money at all, and the one that does has a switch, a balance readout and a per-dispatch cap.
The default worker. Signed in once from the console, which stores a long-lived worker token so background lanes stop depending on whatever credentials a terminal happens to carry.
amp login
Optional per lane. Device-code sign-in from the console; the window notices when you approve it. Best-of-k attempts, each with its own diff to read.
Settings → Connect ChatGPT
The architect tier, cheapest first. One master switch turns off every path that can spend it. Reading your remaining balance is a free request and keeps working either way.
amp credits
Everything a worker did is readable from the same window that started it.
Plus a dock in the corner: the orchestrator thread that runs the others.
One Python file for the harness, one for the server, one HTML page for the console. No package manager, no build step, no lockfile, no runtime dependencies — the standard library and the CLIs you already installed. Fork it, ship it, sell it; the licence only asks that you keep the notice.
$ git clone https://github.com/c-u-l8er/code
$ cd code
# preflight: worker CLIs, keys, lane bindings
$ python3 amp.py doctor
# connect a long-lived worker token, once
$ python3 amp.py login
# open the console
$ python3 amp.py serve
→ http://localhost:8787
doctorpreflight: worker CLIs, keys, lane bindingsservelaunch the browser consolelanemanage laneslanes boardwhat exists, and what it is doingdispatchsend a task to a lane's workerreplyanswer a worker mid-task; resumes its sessionpollrefresh the boarddiffshow a task's diffapplyland it in the worktree — never mergespacketbuild an architect packet zipaskbuild the packet and send itcreditsOpenRouter credit remainingThere is no star count on this page, no testimonial wall and no logo strip, because rule 2 applies to the marketing too. So here is the honest rung.
Nine lanes, one window, and a rule that a check outranks an opinion.