The keep-pushing loop for your SDLC.
From a vague objective to production without babysitting an agent — interview, plan, votes, worker, review, merge, release. Every transition is the machine's decision over an explicit state. A human acts in five places, and only where something touches the world.
npx @agentskit/harness loop initA vague objective enters at the top and descends through six levels: the objective becomes a PRD, the PRD becomes a technical design, the design fans out into parallel issues worked by separate agents, one of which goes back a level for a fix round, the branches converge into a reviewed pull request, and a merge reaches production. A human gate stops the flow at the PRD, at the design, and before the release. A return stroke climbs the right edge and starts the next cycle with a new objective.
Everything that touches the world keeps a person in front of it. Everything else is the machine's decision over an explicit state.
The PRD is approved.
loop plan approve <id>The technical design is approved, after 2 of 3 agents agree.
loop plan approve-design <id>An issue enters the queue: Todo → Ready.
a gesture in your trackerA pull request is approved — only if the flow asks for it.
on GitHubA release batch is promoted and deployed.
loop release approveEverything between these five is decided by the machine over state it can read: plan, votes, worktree, checks, Definition of Done, merge, release batch.
The planner writes the plan and three agents vote on it — in the harness, headless, before a worktree exists. You read the plan and the votes; the machine counts them and decides.
Recorded from a real run. Lines the harness could not yet write to a live repository are marked reconstructed — they are not evidence, and we will not pretend otherwise.
41 s of wall clock · one issue · one pull request
Same engine, three configurations. Pick one and the loop re-prices itself.
That one line is the difference between an enterprise flow and a POC one.
The crontab dispatches on its own schedule. At 09:00 the queue is a list of merged pull requests and one thing that needs a person.
Local runner: git worktree + tmux + the system crontab
Three interfaces, and today's implementations behind them. An interface with one implementation is a guess, so we say which ones are guesses.
TrackerConnectorScmConnectorRunnerConnectorThe local runner is git worktree + tmux + the system crontab. No daemon, no Orca.
Every command that reports also reports as JSON, and every page has a raw Markdown twin.