agtx
"The blackboard for coding agents" — a Rust TUI kanban board that runs several coding agents at
once, each task in its own git worktree and its own tmux window, advanced through a
spec-driven workflow by an optional orchestrator agent. 1,251★ / 111 forks, Apache-2.0, 16 open
issues, created 2026-02-08, last pushed 2026-08-11, latest release v0.2.6 (2026-06-28). Read
2026-08-21. By fynn-fluegge, whose rocketnotes this hub already pages in ../research-wiki.
It is the second product in this spoke built on the board metaphor. agent-kanban arrived at the same idea from the server side, with a browser board, Ed25519 agent identity and a daemon; agtx is a terminal binary you run inside one repository. Both landed on worktree-per-worker, which is now the standing answer to the isolation question this spoke frames against jcode's shared-tree swarm.
The shape
- A phase per agent, and the agent changes with the phase. Configure Gemini for research, Claude for implementation, Codex for review, and agtx switches between them as a task advances. This is agent-orchestration with a heterogeneous fan-out — not one model spawning copies of itself, but different vendors' harnesses taking successive turns on one task.
- Worktree plus tmux window per task. Isolation is filesystem-level and the agent's session is a real terminal you can attach to.
- Ten workflow plugins, selected with one key:
void(no prompting at all),agtxandagtx-terse(built-in, the second one token-minimizing), plus gsd, spec-kit,openspec,bmad, superpowers,oh-my-claudecodeandagent-skills. A plugin is a single TOML file declaring commands, prompts, artifacts and phase gates; agtx supplies the phase gating, artifact polling, worktree sync and agent switching underneath. - One command syntax, translated per agent.
/agtx:planbecomes$agtx-planon Codex and/agtx-planon OpenCode and Cursor. The compatibility matrix is honest about where this stops:superpowersandoh-my-claudecodeare Claude-only, and Copilot gets prompt-only support for most plugins. /agtx:brainstormand/agtx:sweep— capture an idea mid-session and push the conversation onto the board as tasks in one confirmation step.
The orchestrator is the interesting part
Marked experimental, and it inverts who holds the board. You triage tasks into Planning or Running; the orchestrator advances them to Review and stops there, because "merging is your call."
Mechanically it is an agent driving a harness through MCP. agtx serve
exposes the kanban board as JSON-RPC tools over stdio against a SQLite database; the TUI registers
that server with the orchestrator via claude mcp add-json --scope local, then pushes phase-completion
notifications into the orchestrator's tmux pane when it goes idle. The orchestrator calls get_task,
checks the plugin's allowed_actions, and calls move_task.
Two details are worth more than the architecture diagram. First, the stuck-task detector: a task
idle for one minute with no phase artifact triggers the orchestrator to call read_pane_content
and diagnose from the terminal output, then either send_to_task to nudge the agent or escalate with
a ⚠ badge and a stated reason. Watching a pane is a crude signal, and it is the same
text-first-agent-design move the spoke keeps finding — the derived representation of the screen is
what the supervising agent reads. Second, escalation is a first-class action: the orchestrator's
tool surface includes giving up and asking the human, which is a shape agent-guardrails argues for
and few products implement as an API call rather than a crash.
It published a benchmark, and the benchmark is small
The repository ships a SWE-bench Lite runner (300 real bug-fix tasks, Docker sandboxes, driven
through agtx's own MCP server) and — unusually for this corpus — a benchmark/RESULTS.md with actual
numbers. Every run uses Claude Sonnet in sandbox mode, and each row carries duration, total
tokens, dollar cost and a graded outcome (✅ resolved · 🟡 fix correct but incomplete · ❌ wrong or no
patch).
Eight configurations, two instances:
| Config | Instance | Duration | Tokens | Cost | Result |
|---|---|---|---|---|---|
claude-superpowers |
astropy-12907 | 15m 46s | 5,400K | $2.64 | ✅ |
claude-agtx |
astropy-12907 | 2m 38s | 1,514K | $1.00 | 🟡 |
claude-spec-kit |
astropy-12907 | 4m 48s | 926K | $0.40 | 🟡 |
claude-openspec |
astropy-12907 | 2m 15s | 468K | $0.48 | 🟡 |
claude-agent-skills |
astropy-12907 | 3m 30s | 2,680K | $1.04 | 🟡 |
claude-rtk-caveman-agtx |
astropy-12907 | 2m 14s | 1,149K | $0.92 | 🟡 |
claude-rtk-ponytail-agtx |
astropy-12907 | 2m 27s | 1,314K | $1.02 | 🟡 |
claude-rtk-caveman-ponytail-agtx |
astropy-12907 | 2m 09s | 1,006K | $0.55 | 🟡 |
Every arm failed the second instance (astropy-14182) outright. On the first, seven of eight produced
the correct fix in separable.py and stopped short of writing a test; the one that wrote the test
was superpowers, at 6× the cost and 6× the wall time of the cheapest partial pass.
What that is worth. As a benchmark result, close to nothing: n=1 per arm on one task from a 300-task suite, one model, no repeats, no confidence interval, and the author has an interest in the tool being tested. The numbers are T3 even though the artifact facts above are T1.
The missing repeats are the fatal part rather than the untidy part, and beyond-pass-at-1 is why.
That study runs agents at k=3 across 23,392 episodes and finds run-to-run spread on long tasks wide
enough to swallow differences far larger than the ones separating these eight rows — 95% intervals
of ±7 to ±10 points on a single model in a single bucket. A one-shot ranking of eight configurations
is not a weak version of that measurement; it is a draw the run happened to produce. As a method
it is the thing this spoke has been asking for since it opened. The methodology packs it pages one at a
time (superpowers, spec-kit, get-shit-done, ponytail) are here as swappable arms in
one harness on one task, with cost and token counts attached. jetbrains-ponytail-tested is the
only source in this corpus that did the comparison properly, and it needed 251 billed trials and
$246.09 to do it. agtx's contribution is that the rig for doing it again is --config <file>.
One caveat undercuts the arms. Every benchmark config sets skip_worktree = true, so agtx's
headline feature — parallel agents in isolated worktrees — is switched off for the entire run.
What is being measured is the workflow plugin, with agtx as the driver. That makes the table a
comparison of methodologies and not a measurement of agtx.
The corpus disagrees with itself about OpenSpec
spec-driven-ai-tools (T4, May 2026) ran OpenSpec, Spec-Kit and a third tool against one real
feature by hand and scored OpenSpec highest overall, calling out its light footprint and
frictionless iteration. Here OpenSpec is indeed the leanest arm by tokens (468K, the lowest in the
table) and it lands 🟡 — correct fix, no test written, plus a broken /opsx:verify command the author
notes as since fixed.
The two are not strictly in conflict; they grade different things, one on developer experience and one on a patch. But it is the first time this spoke has had two independent readings of the same spec-driven tool, and the pattern that survives both is OpenSpec is cheap and does not finish the job. Recorded rather than resolved.
Errata
The plugin table links gsd to github.com/fynnfluegge/get-shit-done-cc, which 404s and does not
exist under that account (checked 2026-08-21). The GSD this spoke pages is gsd-build/get-shit-done
by TÂCHES, 64.7k★, last pushed 2026-05-31. Whether agtx's gsd plugin wraps that project under a
stale link or a repository that has since been deleted is not evidenced either way, so both facts are
recorded and neither is inferred.
Related
agent-kanban · agent-orchestration · agentic-coding-harness · spec-driven-development · get-shit-done · spec-kit · superpowers · ponytail · jetbrains-ponytail-tested · spec-driven-ai-tools · agent-evals · swe-bench · jcode · conductor · agent-guardrails · text-first-agent-design · beyond-pass-at-1 · fynn-fluegge