crossagent MCP server
Commit Oct 23, 2026Pairs two coding agents in adjacent tmux panes to enable a driver-reviewer workflow where every plan and diff requires a verdict.
Also known as k8adev/crossagent
- Stars
- 7
- Tools
- 8
- Downloads, 30 days
- —
- Latest version
- —
- Last commit
- Oct 23, 2026
- License
- MIT
What is crossagent MCP?
crossagent pairs two coding agents in adjacent tmux panes to enable a driver-reviewer workflow where every plan and diff requires a verdict. It exposes 8 tools, such as ping, list_peers, send.
Summary generated from the project's README
About crossagent MCP server
Pairing two coding agents in adjacent tmux panes to establish a driver-reviewer workflow is what crossagent enables. This setup allows one agent to propose plans or diffs while a second agent acts as a peer reviewer, ensuring every change receives a formal verdict before proceeding. It operates entirely through tmux as a transport mechanism, meaning it requires no network connections, shared files, or sockets to function.
Developers using Claude Code or Codex CLI can integrate this server by adding it via npx. The system relies on a ping command for automatic peer discovery within the same git repository. Once linked, agents use tools like discuss, ask_review, and list_peers to communicate. The protocol enforces a strict contract where every review must conclude with a specific verdict such as AGREE, ADJUST, or OBJECT to guide the driver agent's next steps.
What you can do with it
- 1Enforce peer review for code changesAsk the AI to send a proposed implementation to a second agent for a formal verdict.
- 2Clear stale agent conversationsInstruct the client to reset the peer agent's conversation history to start fresh.
Written from the project's README. Every use case is checked against a quote from it.
crossagent MCP tools 8
Detected from the READMEpinglist_peerssendreadwait_replybriefdiscussask_review
| ping | — | |
| list_peers | — | |
| send | — | |
| read | — | |
| wait_reply | — | |
| brief | — | |
| discuss | — | |
| ask_review | — |
Automated checks
Ran Nov 14, 2026Full report →Not verified yet. A server needs a score of 80, no serious finding, and enough data for us to check. How checks work · What to fix for more points
- Source repository linked and reachablek8adev/crossagent is public and reachablegithub.com/k8adev/crossagent ↗Pass
- Package names this repository as its sourceNot checked
- Build provenance (Sigstore attestation)Not checked
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-10-23github.com/k8adev/crossagent ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNot checked
- No critical advisory in the package or its dependenciesNot checked
- No hidden instructions to the model8 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNo tool named like delete, drop or execPass
- Remote endpoint answers the MCP handshakeNot checked
README
View on GitHubcrossagent
crossagent pairs two coding agents running in adjacent tmux panes: one drives, the other reviews. Every plan and diff goes through the peer before it ships, and the reply always ends in a verdict. tmux is the only transport — no network, no shared file, no socket.
Install
Requirements: Node.js 22 or newer, tmux, and two panes each running a coding agent (Claude Code, Codex CLI), both inside the same git repository for automatic peer discovery. Each agent must call ping once — registration happens on that call, not on server startup.
Run npx from outside a clone of this repo — inside it, npx resolves the local package instead of the published one.
Step 1. Add the MCP server to each agent.
claude mcp add crossagent -- npx -y crossagent-mcp
codex mcp add crossagent -- npx -y crossagent-mcp
Step 2. Link the pair skill so both agents load the pairing protocol proactively.
npx -y crossagent-mcp setup --link
This symlinks skills/pair into ~/.claude/skills/pair, ~/.codex/skills/pair (or $CODEX_HOME/skills/pair) and ~/.agents/skills/pair. setup --unlink reverses it, removing only the symlinks it created.
Without step 2, the protocol is still available as the pair MCP prompt (/mcp__crossagent__pair in Claude Code). Details in docs/skill.md.
brief sends the harness's reset command to the peer pane (/clear for Claude Code, /new for Codex), clearing its current conversation. It is never needed for discuss to work and never runs automatically.
How it works
- ping — each agent registers its pane, harness and repository so the peer can be found.
- brief — resets the peer's conversation. Call it by hand only to clear a stale peer; it sends no role text.
- discuss — every round's task and context go here. Each message carries a short role brief (same-level copilot or reviewer bound to the
VERDICT:contract), so the peer needs no setup, and every plan or diff sent this way ends in one verdict line.
The last line of every review is VERDICT: <word>:
| Verdict | Meaning | Driver does |
|---|---|---|
AGREE |
No corrections. | Ships it as is. |
ADJUST |
Fine once the listed items are fixed. | Fixes them, or argues back when one is wrong. |
OBJECT |
Do not proceed as written, reasons included. | Reworks the plan and asks again. |
ESCALATE |
Only the human can call this one. | Stops and brings it to the user. |
UNPARSED |
Not a verdict — reply had no readable VERDICT: line. |
Asks again. |
The full round format, review extraction and verdict parsing are in docs/protocol.md.
Tools
| Tool | Description |
|---|---|
ping |
Registers this pane's identity and returns pane/harness/repo/mode. |
list_peers |
Lists other crossagent-visible tmux panes. |
send |
Sends literal text + Enter to a tmux pane. |
read |
Captures the last N lines from a tmux pane. |
wait_reply |
Waits until the peer pane's harness looks idle, returns the new content. |
brief |
Resets the peer pane's conversation (/clear, /new). |
discuss |
Sends a review round (role brief + message), parses the VERDICT: line. |
ask_review |
Alias of discuss with kind: "implementation". |
pair (prompt) |
The full pairing protocol as a single user message. |
Arguments and defaults: docs/tools.md. When pane is omitted, the target is the repo-scoped agent peer: shell panes are ignored, and with several agents the one in your own tmux window wins if it is the only one there.
Configuration
Optional config lives at ~/.config/crossagent/config.toml. Each harness's idle/busy detection regexes and its reset command (used by brief, e.g. /clear for Claude Code, /new for Codex) are overridable per harness, with tunable defaults for timeout, quiet period, and tail-window size. See docs/configuration.md for the full reference and examples.
How it finds the other pane
Each pane resolves its own tmux pane id, harness, and repo identity when ping is called, then self-declares them as tmux pane options so list_peers can find it. Codex CLI starts MCP servers lazily, so a Codex pane may not be discoverable by its declared identity until its first tool call. See docs/discovery.md for the full resolution logic and fallbacks.
Contributing
Bug reports, harness support, and protocol improvements are welcome. See CONTRIBUTING.md for dev setup, tests, and how to add a new harness. This project follows the Contributor Covenant.
Using another coding agent? Adding a harness means a detection entry in src/harness.ts and a config block; see CONTRIBUTING.md.
License
MIT
crossagent MCP questions
What tools does crossagent MCP provide?
It exposes 8 tools, including ping, list_peers, send, read, wait_reply.
How do the agents communicate with each other?
The agents communicate using tmux as the transport mechanism, requiring no network, shared files, or sockets.
What are the possible verdicts an agent can receive?
The possible verdicts are AGREE, ADJUST, OBJECT, ESCALATE, and UNPARSED, each dictating a specific action for the driver agent.
How do I register my agent with the server?
Registration happens when each agent calls the ping tool once; it is not done automatically on server startup.
Can I use this with agents other than Claude Code or Codex CLI?
Yes, you can add support for other agents by adding a detection entry in the harness configuration.