Mercury
A self-built local agent control plane that taught me where orchestration helps, and when simpler tools are enough.
Why
Agent work gets messy fast when prompts, channels, project state, permissions, and follow-up live in different places. The first iterations were scrappy: a Slack bot here, a cron there, no audit trail, no way to replay a session, every retry a fresh roll of the dice.
I built Mercury to make my own agent work manageable: kanban for state, audit logs for decisions, channel gateways for input, and worktree isolation for file changes. Solo project: design, code, runtime, and operations are all mine.
How it’s built
A SQLite-backed kanban board is the visible state of the work, and a cron runner handles pickup and follow-up. Eight agents use a Roman-pantheon naming scheme: Jupiter oversees and delegates, Mars and Vulcan build React and .NET, Minerva reviews, Diana takes small fixes, Apollo researches and plans, Saturn reviews which model suits which agent, and Ceres runs a scheduled assistant loop.
Telegram and Slack both carry conversations with Jupiter; the dashboard and CLI are the operator surfaces. Every meaningful operation leaves an audit row, and worktrees isolate file changes per task. opencode is the default runtime, with Anthropic’s Claude Agent SDK as a selectable fallback. Spend caps and approval gates came after real failures.
- Eight agents on a Roman-pantheon naming scheme, coordinated by Jupiter
- SQLite-backed kanban for task state and column routing
- Cron runner for scheduled pickup, follow-up, and operational checks
- Telegram and Slack conversation gateways, plus dashboard and CLI controls
- Audit events and per-task worktrees for traceable, isolated execution
- Spend caps and permission gates, with TDD across runtime and gateway behaviour
Slideshow
Screenshots
Links
Historical personal orchestration work, now maintenance-only. It was used for real projects; Cockpit now holds the active portfolio task state. Mercury is kept here for its design and what running it taught me.