agency
A Go daemon that gives each coding-agent session its own worktree: released, reworked without a release, then rewritten in private.
agency is a Go CLI and daemon that runs AI coding agents in parallel on one machine: each session gets an isolated git worktree, a Claude Code or Codex runner launched in tmux, automatic checkpoints, and a path to land the diff as a GitHub PR, installed from a Homebrew tap. Several agents on one repo collide unless each owns its worktree, and parallel sessions are wasted unless something reports which one is waiting for input; agency automates the isolation and the supervision.
The first commit is 2025-12-12. A constitution landed as PR #1 before any code; I rewrote it from scratch three weeks later, still before implementation. v1 shipped: fifteen releases, v0.1.0-beta through v1.2.9 by 2026-01-22, built CGO-free for darwin and linux.
Then the rework. v1 ran git and tmux directly from CLI commands over JSON
state; from February every mutation moved behind a
daemon
owning invocations, checkpoints,
durable PR merges,
and an append-only event log, with the CLI reduced to a client. The runner
contract shrank to
one file,
runner_status.json, with four canonical states; unknown provider events
degrade to diagnostics, not invented states. The alternative, parsing
provider output streams for meaning, is what it replaced. Each
redesign was a hard cutover:
target-first CLI syntax,
config schema v3,
execution profiles
— old surfaces deleted, never aliased. The cost is a fact: I never released
any of the rework, so published v1.2.9 and main diverged permanently.
Installing today delivers a pre-daemon CLI the current README no longer
documents, and the README's own install commands are broken twice — a
cask I never published,
and a Linux archive for a release that does not exist.
Numbers, by wc -l and git log at HEAD: 453 commits, 2025-12-12 to 2026-05-24; 87,467 lines of Go, 49% of them in test files, 1,069 test functions; 63 commits carry Claude co-author trailers — a tool for running coding agents, built with coding agents.
Thirty-seven days after agency's last commit I started agency-two, a private from-scratch rewrite. It keeps the supervision and inverts the rest: SQLite instead of JSON state, a supervisor/runner split with a versioned wire protocol so running agents survive supervisor upgrades, prompt-state detection from the rendered tmux pane with transcript parsing forbidden as a correctness source. Merge, commit, push, and PR automation are all cut as explicit non-goals. The headline feature of v1 did not survive my own review.
The issues register at HEAD lists three open items, and its "Done" section reads "(none yet)."