Tower makes your team's coding agents work as one crew on one repo. Hand a task to a teammate's agent — even from your phone — and it runs on their machine with their tokens, commits, and opens a PR. And because every agent declares intent first, no two ever collide on the same code. Model-agnostic, over MCP.
npx -y tower-mcp demo
They can't hand off work. Every vendor gives an agent tools and memory — nobody connects it to your teammate's agent. You can't tell your Claude to give the auth task to your co-founder's Codex and get a PR back.
They collide, silently. Git catches text conflicts at merge — after everyone's agents have already burned tokens on the same code. Two people, ten agents, one codebase: the real cost is duplicated work found far too late.
Tower is the missing coordination layer: a shared tower every agent talks to over MCP. It sits above git and works with any model — coordination only matters if the other vendor's agent is in the room.
You delegate from your terminal (or your phone); their agent picks it up on their machine, with their account — no API keys shared, ever. It runs headless, commits on a branch, opens a PR, and reports back with the sha.
Run tower work on any machine to turn it into a task worker — --auto to run unattended, --approve remote to wait for a human tap, and it slows itself down when the account hits a rate limit. Full guide → docs/worker.md.
The live board (/board) is a remote control, not just a dashboard. Open it on your phone and:
Before an agent edits, it claims the files and symbols it's about to touch. Tower compares that against every other active claim — semantically, from tree-sitter ASTs — so AuthService.verify collides with AuthService.verify even across different diff hunks. The second agent is held before it spends a token.
Your agent hands work to a teammate's agent — it runs on their machine and account, commits on a branch, opens a PR, and reports back the sha. First-accept-wins, so a broadcast runs exactly once.
Delegate and approve from your phone. Push notifications when a task needs your OK; one-tap sign-in via a #token link. Your agents, commanded from anywhere.
Overlap detection from tree-sitter ASTs (TS/JS/Python), so the second agent is held before the keystroke — not found at merge, after both burned tokens.
Pin standing orders ("always write tests") from the board; they're prepended to every delegated prompt. Phone-editable guardrails, no git commit.
Turn any machine into a task worker — headless claude -p / codex exec / custom runner, branch-per-task, auto-PR, per-task confirm or fully unattended, with rate-limit-aware backoff and a --budget cap.
A Claude Code PreToolUse hook turns "please coordinate" into a guarantee: a hard-conflicting edit is stopped, reason fed back to the agent. A universal git pre-commit guard covers every other editor.
Every hosted Tower ships /board: the delegation tree, who's editing what, collisions flashing red, and a Map tab showing who directs which agent — tap any node to command it.
It's an MCP server — Claude Code, Cursor, Codex, and anything that speaks MCP work today. Coordination is only useful if the other vendor's agent is in the room.
A zero-dependency GitHub Action comments when two open PRs touch overlapping lines, and shows which files an agent is editing right now. One workflow file, no server needed.
Log architecture decisions and the why; agents recall them before acting, so nobody re-litigates a settled call. The same store powers phone-pinned team rules.
Declare module dependencies once; next_task hands each agent work whose dependencies aren't mid-change. Fewer conflicts by construction.
npx tower-mcp demo shows a live collision + delegation in 30 seconds. tower doctor checks Node, git, runners, and your server in one command. No native deps — node:sqlite, nothing to compile.
The Map tab draws the command hierarchy: the repo at the root, every commander (including 📱 you), the agents they've tasked, and the status of each job. Tap any agent to command it directly.
Before editing, an agent calls claim_intent with the files and symbols it's about to touch — and gets any collisions in the same reply.
Tower grades the overlap: clear, soft, or hard. A hard conflict holds the edit and tells the agent who holds it, why, and their ETA.
Held or out of scope? Hand it off: send_message with kind:"task" — or the board's send box — assigns it to another agent.
A worker accepts it, runs the agent headless, commits, opens a PR, and replies with a task_update carrying the sha. You see it live on the board.
# See it work first — a live collision + delegation, in 30 seconds: npx -y tower-mcp demo # In your repo — writes .mcp.json, agent rules, and (with --hooks) enforcement: npx -y tower-mcp setup # Joining a team server? npx -y tower-mcp setup --url https://tower-xxxx.onrender.com/mcp --token <secret> --hooks
setup merges the tower server into .mcp.json and adds the claim-first rule to CLAUDE.md. Reload your editor — done. Stuck? Run tower doctor. Details: enforcement.
# ~/.cursor/mcp.json { "mcpServers": { "tower": { "command": "npx", "args": ["-y", "tower-mcp", "serve"] } } }
Team server? Use "type": "http", "url": "…/mcp" with an Authorization header — same shape as Claude Code.
# ~/.codex/config.toml — Codex speaks stdio, so bridge with mcp-remote: [mcp_servers.tower] command = "npx" args = ["-y", "mcp-remote", "https://tower-xxxx.onrender.com/mcp", "--header", "Authorization: Bearer <secret>"]
Then add the claim-first rule to AGENTS.md — your Codex now sees (and can be handed tasks by) everyone else's agents.
git clone https://github.com/Rohanxmalik/Tower && cd Tower npm install && npm run build node packages/cli/dist/index.js serve