A sandbox per agent.
One pod per agent, a database for every slice. No Git credential inside.
Agents plan, build, test and open the pull request. Sandboxed, reviewed once, reverted on a failed deploy.
One coordinator per repo plans the work and splits it into slices. The daemon queues every turn and holds the merge gate.
One brief. One agent per slice, each on its own branch.
Typecheck, tests, end-to-end. Screenshots in the pull request.
Low and medium risk merge on green. High risk waits for approval.
Agents decide what to build. The daemon decides what merges, and keeps every secret out of reach.
One pod per agent, a database for every slice. No Git credential inside.
Each lens reads the pull request once, then the fix once. Then never.
Agents use outside accounts without holding the keys. The gateway adds them in transit.
No commit deploys twice. A failed deploy becomes a revert pull request.
Goals, agents, pull requests and notes, straight from the daemon. Every line an agent prints is a trace.
| Repo | Outcome | State | Last line |
|---|---|---|---|
| shop-api | Sign in with a magic link | Active | WAITING checks |
| shop-api | Weekly digest email | Queued | |
| docs-site | Search across every guide | Parked | WAITING approval |
| billing | Usage-based plans | Blocked | BLOCKED which plan is the default? |
The daemon, the state, the sandboxes and the secrets, on one machine. Everything a sandbox sends leaves through one proxy.
A goal moves when something happens: a slice finishes, a check turns red, a review lands. Each turn ends on one line the daemon can read.
A question reaches the operator through BLOCKED. The rest it carries itself.
GOAL DONE is refused while a milestone is still unticked.
Every goal has a budget of turns, slices and hours. Two idle turns pause it.

Hand it an outcome and a budget. Answer only when it is blocked.