inter-agent communication over tmux

Your AI agents should talk to each other, not through you

MCP server built on tmux. Run Claude, Codex, and Copilot in adjacent panes and they hand off work automatically via tmux send-keys. No orchestrator. No config files.

$ curl -fsSL https://raw.githubusercontent.com/kilospark/tmux-agent-bus/main/install.sh | sh
built on tmux single binary ~700KB zero dependencies macOS & Linux
0:agents* tmux
claude-1 pane 0:0.0
codex-1 pane 0:0.1
01

Auto-register

Each agent spawns an MCP server. It detects its tmux pane, session, and agent type. Assigns itself a name like claude-1.

02

Discover

Agents call who to see all other agents on the same tmux session. No config needed — same session = same channel.

03

Hand off

When done, an agent calls signal_done with a summary and request. The message is injected into the target pane via tmux send-keys.

04

Clean up

When an agent exits, it unregisters automatically. No stale entries. No orphan processes. No manual cleanup.

who
List all agents on your channel. Shows name, type, and pane location.
no params
signal_done
Hand off to another agent when you're done. Sends summary + request to their pane.
next summary request
send_message
Send a message to another agent without handing off. For questions and FYIs.
to message
Channel
= tmux session. Agents in the same session see each other. Different sessions are isolated.
Registration
Automatic. Process tree walking detects pane, session, and agent type at startup.
Routing
tmux send-keys injects messages directly into the target pane's stdin. No sockets, no HTTP.
State
One JSON file per channel at ~/.agent-bus/channels/<session>.json
Protocol
Raw JSON-RPC over stdio. No MCP SDK. No async runtime. ~300 lines of Rust.
Cleanup
Agents unregister via Drop trait on exit. SIGINT/SIGTERM handled automatically.