The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Trinity Lite listing page.
Local AgentOps for cross-vendor CLI coding agents. Route work, recover state, and accept only with evidence.
Trinity Lite is a local control plane for Codex, Claude Code, Hermes, and custom CLI agents. It connects the tools you already use; it does not ask you to rebuild them inside another framework.
中文 README · Docs · Why Trinity Lite? · Recipes
You already use more than one capable coding agent. The hard part is no longer starting another agent; it is preserving task truth across tools, recovering after a client disconnects, preventing duplicate work, and deciding when a result is actually accepted. Trinity Lite is that local operations layer.
implement. "Review the auth module" goes to the agent tagged review.orchestrate runs primary work, routes the required review, runs local verification, and writes acceptance evidence back to SQLite.30 seconds, no agents required:
Mock agents are built in. You see the full route → work → review → verify → accept cycle before you wire up anything real.
Trinity Lite does not build agents. It operates the agents you already have.
LangGraph and CrewAI give you primitives for building agents from scratch — graph definitions, role abstractions, and tool wrappers. Trinity Lite starts from the opposite end: Claude Code is running in one terminal, Codex is running in another, and their work needs reliable handoff, recovery, independent review, and an acceptance trail. No new agent abstraction. Just local AgentOps for the CLIs you already use.
| You are... | Trinity Lite helps you... |
|---|---|
| An advanced solo developer using two or more agent CLIs | Replace manual terminal handoffs with one durable workflow and evidence trail |
| A small AI-native engineering team | Separate implementation, review, verification, and acceptance without deploying a control server |
| A local-first or privacy-sensitive developer | Keep task state in an inspectable SQLite database on your machine |
| An agent-tool integrator | Connect existing CLIs through a neutral bus and MCP surface |
implement, review, audit — the router matches tasks to the agent that can do them. No agent names in your dispatch logic.claude_code or codex. Best of both worlds.sqlite3 or any tool that speaks SQL.accepted_at in SQLite. A reviewed task is accepted only after the local verifier passes.trinity-lite worktree creates managed branches and checkouts, records the base commit, and returns diff evidence without touching your main checkout.trinity-lite worker codex --once pulls one queued task, executes the agent's command, and writes the result. Run it in a loop, in cron, or by hand.shell=False. No string interpolation into a shell. No surprises.trinity-lite doctor verifies Python, SQLite, route config, agent config, and publish readiness.Python 3.10+. Zero core runtime dependencies. Standard library only unless an optional extra is installed.
Route primary work → run the worker → run the reviewer → verify → accept. One command, one audit trail.
The primary task row records route_json, review_task_id, verification_json, acceptance_status, acceptance_reason, and accepted_at.
Ready for real CLIs when you are:
Prefer manual control? Use the lower-level bus commands:
This is a v0.6 preview. It manages isolated worktree lifecycle and diff evidence while keeping automatic merge-back out of scope.
Create an isolated checkout for an agent:
Worktree preview records branch, base commit, path, agent id, task id, and diff evidence. It does not merge branches or delete branches by default. See Worktree Parallelism Preview.
Turn the task bus into an MCP server. Let any MCP client dispatch, query, and route tasks.
13 tools:
| Tool | What it does |
|---|---|
trinity_dispatch | Dispatch a task to a specific agent |
trinity_dispatch_auto | Dispatch and let the capability router pick the agent |
trinity_orchestrate | Run the default review flow or a YAML pipeline |
trinity_status | Get the state and result of any task by ID |
trinity_latest | Recover the latest task submitted by an agent |
trinity_tasks | List recent tasks, filterable by agent |
trinity_worker | Run one worker cycle for an agent |
trinity_worker_daemon | Start, stop, or inspect a daemon worker |
trinity_doctor | Run health and diagnostic checks |
trinity_inbox | Read durable messages for an agent |
trinity_send | Send a message from one agent to another |
trinity_skill_search | Search agent-skill-system for relevant skills |
trinity_skill_load | Load the full content of a named skill |
3 resources: trinity://health, trinity://tasks/recent, trinity://tasks/{task_id}
If an MCP client disconnects or times out before it displays the task id, call
trinity_latest for the source agent, then call trinity_status with the
returned primary task id. By default trinity_latest skips secondary review
children so recovery lands on the user-facing task.
trinity-lite orchestrate now writes a local acceptance trail to the task row:
route_json: JSON-encoded route decision used for primary dispatchreview_task_id and parent_task_id: links between primary work and secondary reviewgate_status: primary_pending, review_pending, review_passed, review_attention, verification_failed, or acceptedverification_json: JSON-encoded local verifier result, defaulting to trinity-lite doctoracceptance_status, acceptance_reason, and accepted_atIf the reviewer reports P0/P1 findings, the flow stops at review_attention. If local verification fails, it stops at verification_failed. accepted_at is written only after the required review and verification pass.
Select from a model pool you control using task complexity and declared capabilities. This is a transparent routing helper, not a universal cost optimizer:
How it works: Define your model pool with tiers (budget / standard / premium) and strength tags. The selector picks automatically:
| Task | → Tier | → Model |
|---|---|---|
| "Fix typo in README" | budget | cheap model |
| "Add search endpoint" | budget | cheap model |
| "Refactor auth module" | standard | mid-tier |
| "Design microservice architecture" | premium | strongest |
Manual call (API usage):
Custom pool — create ~/.trinity/model_pool.json:
Works with 1 model, 2 models, or 10 models. No agent names hardcoded.
MIT