triumvirate
Health Warn
- License — License: NOASSERTION
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 6 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Three AI agents. One coordination layer. No relay server.
Triumvirate
Three AI models. One daemon. A methodology for building software with all of them at once.
Claude, Gemini, and Codex — each with different strengths — working on the same codebase, coordinated by a single Rust daemon, visible in real-time from inside your editor.
Quick Start
git clone https://github.com/michaeljboscia/triumvirate
cd triumvirate/daemon
cargo build --release && cargo run --release
That's it. One binary. No Docker. No NATS. No cloud services. Register it in Claude Code:
# Add to ~/.claude.json under mcpServers:
"triumvirate": { "command": "/path/to/triumvirate", "args": ["mcp"] }
Then from any Claude session: spawn a Gemini session called 'research'
Requirements: Rust 1.82+ and at least one agent CLI (Claude Code, Gemini CLI, or Codex CLI). Works with 1, 2, or all 3.
The Problem
You're using Claude to write code. You want Gemini to research something. You want Codex to implement a plan in parallel. So you open three terminal windows, copy-paste context between them, lose track of which one is doing what, and eventually something goes sideways because nobody can see what anyone else is doing.
Triumvirate replaces the terminal windows.
What It Does Today
The daemon — a Rust MCP server that spawns and manages persistent agent sessions:
You: "spawn a Gemini session called 'research'"
Claude: → spawn_session(agent: "gemini", session_name: "research")
✓ Session research spawned
You: "ask research to analyze our auth middleware"
Claude: → ask_session(session_name: "research", prompt: "...")
→ Gemini: turn started
→ Gemini: calling read_file (src/middleware/auth.rs)
→ Gemini: calling read_file (src/middleware/jwt.rs)
→ Gemini: generating response
→ Gemini: responded (12,847 in / 1,203 out / 8,400 cached, 2 tools, 4.1s)
"The auth middleware has three issues..."
You: "spawn a Codex session and have it fix what Gemini found"
Persistent sessions. Live streaming. Cross-model coordination. From inside Claude — no window switching.
The methodology — skills that use the daemon to run structured multi-agent processes:
| Skill | What It Does |
|---|---|
/goatrodeo |
Multi-round spec review. Spawns Gemini and Codex as adversarial reviewers. They interrogate your spec, auto-resolve what they agree on, surface only what needs human judgment. Produces battle-tested requirements with traceable REQ-IDs. |
/postrodeo |
Post-build retrospective. Audits what was built against what was specced. Spawns twins to review code diffs. Produces a completion matrix, deviation analysis, and lessons. |
/design-goatrodeo |
Design-specific variant. Pressure-tests visual specs, UX flows, and information architecture. |
The operating environment — a starter kit that wires all three agents together:
cd starter-kit && ./install.sh
Hooks, configs, skills, and session notes for Claude, Codex, and Gemini. Plus a local stenographer that captures session notes via Ollama — zero cloud cost.
The Loop
This is how software gets built with Triumvirate:
┌─────────────────────────────────────────┐
│ │
Spec ──→ /goatrodeo ──→ Implementation ──→ /postrodeo
│ (Gemini + (Codex builds (twins audit │
│ Codex review from the spec) the code) │
│ the spec) │
│ │
└──── lessons feed back into next cycle ──┘
The goatrodeo runs through the daemon. It spawns Gemini and Codex as daemon sessions to review your spec. The postrodeo does the same for code review. The daemon is the infrastructure the methodology runs on.
This project was built using this loop. The Flow State feature (live agent streaming) went through a 4-round goatrodeo with 27 requirements, 29 auto-resolves, and 5 human decisions — all running through the daemon. Then Codex implemented all 6 phases from the resulting spec while the human took a nap.
The tool that coordinates agents was built by agents coordinating through the tool.
What's Shipped
Daemon (daemon/)
| Feature | What It Does |
|---|---|
| Persistent sessions | Spawn named Gemini/Codex sessions that survive across requests. Resume conversations. |
| Live streaming | See tool calls, file reads, commands, and response generation as they happen — not after. |
| Stuck detection | Catches agents that idle >60s, loop the same tool >5x, or freeze. Surfaces it immediately. |
| Token visibility | Every response includes input/output/cached token counts and duration. |
| Shared memory | Agents read and write to a shared key-value store. Decisions persist across sessions. |
| Scratchpad | Quick cross-agent notes. Agent A writes, Agent B reads. |
| Outbox | Event log of every agent interaction — who asked what, who responded, when. |
| Fallback outbox | If an agent fails, the request is saved to disk. Nothing is lost. Retry later. |
| Verbosity control | quiet, standard, detailed, raw — choose your noise level. |
Skills (skills/)
| Skill | Lines | What It Does |
|---|---|---|
/goatrodeo |
~900 | Industrialized spec review. Interrogation rounds, live research, twin review, auto-resolve, decision ledger. |
/postrodeo |
~600 | Build retrospective. Completion matrix, deviation analysis, Layer 6 semantic check, twin code review. |
/design-goatrodeo |
~500 | Design spec variant. Visual standards, UX flows, information architecture. |
Starter Kit (starter-kit/)
Full installer for multi-agent development:
- Claude — hooks (session lifecycle, token gating, artifact protection), skills, CLAUDE.md
- Codex — hooks (session recovery, pre-compact), config, AGENTS.md
- Gemini — hooks (session recovery, pre-compact), GEMINI.md
- Stenographer — local session notes via Ollama (zero cloud cost)
- MCP server registration — wires agents to communicate through the daemon
Stenographer (stenographer/)
Standalone Python tool. Reads agent transcripts, feeds them to a local Ollama model, appends narrative session notes. Triggered automatically by hooks when transcript growth crosses a threshold.
Architecture
triumvirate-daemon (single Rust binary, 13 crates)
│
├── MCP Server (rmcp) — 35+ tools
│ Sessions, ABE dispatch, fleet, knowledge, review, tokens
│
├── HTTP API (axum) — REST + Prometheus + WebSocket
│ Same tools as REST endpoints, plus /metrics, /ws, /api/tokens/*
│
├── ABE (Autonomous Build Enforcement)
│ ├── Fleet dispatch — N workers in isolated git worktrees
│ ├── Task tracker — state machine with 4-signal completion detection
│ ├── Contract enforcement — file scope, commit format, test gates
│ └── Failure classification — auto-retry with escalation
│
├── Token Economics (token-economics crate)
│ SQLite storage, session scanner (Claude/Codex/Gemini JSONL),
│ cost attribution by build/session/task
│
├── Agent Adapter (agent-adapter crate)
│ ├── GeminiStreamParser — parses stream-json NDJSON live
│ ├── CodexExecParser — parses exec --json JSONL live
│ └── StuckDetector — idle, loop, freeze detection
│
├── Daemon Core — metrics, observability bus, session lifecycle
│
└── Fallback Outbox — disk-persisted retry queue
13 crates. 150+ tests. Zero external services.
Installation Options
| Option | Command | Build Required |
|---|---|---|
| Daemon only | cd daemon && cargo build --release |
Yes (Rust) |
| Skills only | cp skills/claude/*.md ~/.claude/skills/ |
No |
| Full stack | cd starter-kit && ./install.sh |
Yes (Rust) |
The full stack installer sets up: daemon + skills + hooks + configs + stenographer for all three agents.
What's Next
v3.2.0 shipped the build dispatch half. What's left is polish and scale.
| Feature | Status | What It Unlocks |
|---|---|---|
| Worktree-isolated Codex swarms | Shipped (v3.1) | N Codex agents, each in its own git worktree. Contract enforcement, timeout, retry. |
| Plan-aware task assignment | Shipped (v3.1) | ABE reads a plan, assigns tasks by wave, respects dependencies. |
| Token economics | Shipped (v3.2) | Per-session, per-build, per-task cost tracking across all 3 agents. |
| Full observability | Shipped (v3.2) | #[instrument] spans on all ABE functions, 20 Prometheus metrics, structured logging. |
| Cross-model code review | Shipped (v3.1) | Agents review each other's code via peer-review queue. |
| Dashboard | Planned | Web UI for watching all agent sessions in real-time. |
| Fleet scaling | Planned | Multiple orchestrators, mixed worker types, concurrent builds. |
| Cedar governance | Planned | Policy-based approval gates for destructive operations. |
The daemon is the coordination layer. The methodology runs on top of it. The agents do the work.
See ROADMAP.md for the full plan.
How It Was Built
This project is designed and built by a human (Mike Boscia) coordinating three AI agents:
- Claude (Opus 4.6) — architecture, spec review, goatrodeo, documentation
- Gemini (Pro 2M context) — research, competitive analysis, adversarial review
- Codex (GPT-5.2) — implementation, from scaffold to shipped
Every feature goes through the loop: spec → goatrodeo → implementation → postrodeo. The agents review each other's work before and after building. The goatrodeo runs through the daemon. The implementation runs through the daemon. The tool is being built by the process it enables.
37 research artifacts documenting the design process are in archive/research/.
The Ecosystem
Triumvirate doesn't work alone. It's one layer in a stack of tools that collaborate in the same session:
| Tool | Role | How It Fits |
|---|---|---|
| Claude Code | Primary development agent | The cockpit. You sit here. Triumvirate and Pythia plug in as MCP servers. Skills like /goatrodeo run from here. |
| Gemini CLI | Research + adversarial review | 2M context window. Goatrodeo spawns Gemini sessions for spec interrogation. Gemini search provides live web research during review rounds. |
| Codex CLI | Implementation engine | Builds from specs. Goatrodeo spawns Codex for implementer-perspective review. Then Codex builds the thing it just reviewed. |
| Pythia | Local code search | MCP server that indexes entire projects — code, docs, SQL, config, research. Agents query Pythia before making changes. Available in the same Claude session as Triumvirate. |
| Ollama | Local LLM for session notes | Stenographer feeds transcripts to a local model. Zero cloud cost. Zero token spend. |
| MCP | The protocol | Everything connects through MCP. Triumvirate is an MCP server. Pythia is an MCP server. Claude Code is the MCP client. One protocol, many tools, same session. |
The daily workflow: Claude Code has Triumvirate and Pythia both registered as MCP servers. You search code with Pythia, spawn agent sessions with Triumvirate, run goatrodeos that use both — all without leaving the editor. The tools compose because they share a protocol.
Prior Art
No source code was vendored from any of these projects. Where patterns were adapted, implementation was re-authored in Rust. Inline attribution comments appear at adaptation points in the source. Full details in NOTICE.md.
| Project | License | What We Adapted |
|---|---|---|
| Temporal | Apache 2.0 | Event-sourced workflow persistence, crash recovery, retry with backoff |
| Ruflo | MIT | Multi-model agent routing, cost-optimized model selection, swarm coordination patterns |
| Clash | MIT | Real-time git worktree conflict detection between parallel agents |
| swarms-rs | Apache 2.0 | Rust agent lifecycle management, supervisor patterns |
| Flotilla | Open source | Cross-model peer review as mandatory gate, structured lessons ledger, shared state patterns |
| ensemble | MIT | JSONL file-based message bus with fcntl locking, tmux session management |
| RunDiffusion Agents | Apache 2.0 | YAML governance control plane, agent-manages-agents pattern |
| AgentsMesh | BSL-1.1 | gRPC+mTLS control plane architecture (studied only — not used in production per BSL-1.1 terms) |
| Claude Agent Teams | Anthropic | Git worktree isolation, shared task list with dependency tracking, peer-to-peer mailbox messaging |
Acknowledgments
Triumvirate exists because three companies built AI agents good enough to coordinate:
- Anthropic — Claude Code and the MCP protocol that connects everything
- Google — Gemini CLI with stream-json and 2M context
- OpenAI — Codex CLI with exec --json and sandboxed execution
The agents are theirs. The coordination is ours. The methodology emerged from using all three together every day and discovering what works.
License
FSL-1.1-ALv2 (Functional Source License 1.1, Apache 2.0 Future License)
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found