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)."