Tirith is a coordination server for parallel coding agents. Through the MCP protocol, it provides features such as file claims, a task board, interface contracts, change notices, a decisions log, path-scoped memory notes, and agent messages, with the goal of allowing multiple coding agents to work together on the same repository without interfering with one another.
[Purpose] When five to ten coding agents are running on the same repository, they may edit the same files, rename things that other agents depend on, or build the two ends of an interface in different shapes. Tirith acts as the small daemon they all communicate through, letting agents claim files before editing them and, at claim time, receive the notices, contracts, decisions, and notes related to that file, while also requiring either side to publish the shape of an interface before implementing it.
[Main capabilities]
- File claims: agents claim files before editing them to avoid conflicts.
- Task board: task management with support for dependencies.
- Versioned interface contracts: interface shapes are published before either side implements them.
- Change notices.
- Decisions log.
- Path-scoped memory notes: agents can leave notes tied to repository paths, and what one agent learns about a file is passed on to the next agent that claims that file.
- Agent messages.
- Support for a swarm lead and an escalation mechanism: a session that spawns other agents and reserves the path .tirith/lead becomes the swarm lead; the daemon handles routine escalations according to fixed rules without consuming LLM turns.
- Provides a CLI and a real-time dashboard.
[How to use] Tirith can be used with any MCP-capable client (stdio or HTTP), including Claude Code, Cursor, Codex, LangGraph, CrewAI, or ordinary scripts. Installation methods:
- macOS and Linux, Windows (PowerShell), and using cargo (package name tirith-mcp, binary tirith) are allinstallable. Installed users can run tirith update to replace it in place with the latest version. Prebuilt binaries cover x86_64 and ARM64 for macOS, Linux, and Windows, and are available on the releases page; see docs/1-about/05-installation.md for all options.
- Listed in the MCP Registry, mcp-name: io.github.eabz/tirith. When run in a repository, it registers tirith stdio in .mcp.json and places a short block in AGENTS.md (--file can specify another file). The protocol itself (from the first claim to who leads the swarm) arrives as instructions from the MCP server each time a session connects; repositories that want their own protocol keep it in .tirith/instructions.md (tirith init --instructions writes the built-in version for editing). Other clients manually register the same command: the shim starts the repository daemon the first time a session needs it, replaces daemons of other versions, and then proxies to it; nothing needs to be started manually. The daemon provides the MCP service at http://127.0.0.1:7477/mcp and at http://127.0.0.1:7477/ Provides a real-time dashboard. State is written to .tirith/ in the repository: contracts, notices, decisions, and memory notes should be committed; .tirith/runtime/ (claims, tasks, messages) is ignored by a .gitignore written by Tirith itself. Each Agent passes a stable Agent name on every invocation, which is the only convention that needs to be followed. To run multiple Agents at the same time, paste the protocol block from docs/2-examples/03-swarm-playbook.md into the project's Agent instructions. Provides 22 tools, each with descriptions of all parameters, MCP annotations, and output schemas, and the protocol as instructions when connected as a server (ADR-0038). Each result is JSON with a status field, lists are paginated, and any result may carry lost (expired leases) or inbox (waiting messages). See docs/1-about/04-primitives.md for the full reference. Each tool has a subcommand; the CLI uses the same MCP path as the Agent. --agent sets the name, --json prints the raw result, and non-ok results exit with status 1.
[Applicable scenarios] Scenarios where multiple coding Agents work in parallel on the same repository and need to prevent problems such as file conflicts, interface inconsistencies, and dependency chaos. It is also suitable for collaborative development environments that need to pass decisions, notices, and path-level knowledge memory between Agents.
[Limitations] Tirith does not store conversation history or embeddings. The current version status is v1 shipped; all primitives, CLI, persistence, and dashboard have been built and tested, according to the definition in ADR-0013; tool schemas follow semantic versioning. Other specific limitations are not provided for now.