claude-ipc-broker
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@claude-ipc-brokerTell the backend peer to run the database migrations"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
claude-ipc-broker
A message broker that lets multiple Claude Code terminals talk to each other. Includes a real-time web dashboard where you can watch and send commands to any connected session.
Works across terminals on the same machine or across different PCs on a network.
What it does
Peer registry -- each Claude session registers with a role (e.g. "backend", "linux-client") so everyone knows who's who
Command system -- send orders to specific sessions by role, they execute and report back
Channels -- named message streams for broadcasting data between sessions
Signals -- one-shot events with wait/notify for coordination timing
Web dashboard -- real-time UI showing all peers, messages, commands, and activity
Dual authority -- both a Claude orchestrator AND a human from the dashboard can give orders
Install
1. Clone and install dependencies
git clone <repo-url> claude-ipc-broker
cd claude-ipc-broker
npm install2. Start the broker
node index.jsRuns on http://0.0.0.0:9100 by default. Change with flags:
node index.js --port 8080 --host 127.0.0.13. Open the dashboard
Go to http://localhost:9100/dashboard in your browser.
4. Configure Claude Code (MCP)
Add the broker as an MCP server so Claude gets native tools. Pick one of these options:
Option A: Project-level (just this project)
Create or edit .mcp.json in your project root:
{
"mcpServers": {
"claude-ipc": {
"type": "sse",
"url": "http://localhost:9100/mcp/sse"
}
}
}Option B: Global (all projects)
Add to ~/.claude/settings.json under mcpServers:
{
"mcpServers": {
"claude-ipc": {
"type": "sse",
"url": "http://localhost:9100/mcp/sse"
}
}
}Option C: Cross-PC
Run the broker on one machine, point other machines to its IP:
{
"mcpServers": {
"claude-ipc": {
"type": "sse",
"url": "http://192.168.1.100:9100/mcp/sse"
}
}
}5. Verify
Open a Claude Code terminal and say:
"Connect to the IPC broker"
Claude will automatically discover who's online and ask you what role this session should play.
Usage
Quick start -- just talk to Claude
Once the MCP is configured, you don't need to remember any tool names. Just tell Claude what you want in plain English:
You say | Claude does |
"Connect to the IPC broker" | Calls |
"Who else is online?" | Calls |
"Tell the backend to start the server" | Calls |
"Wait for a command" | Calls |
"Signal that the server is ready" | Calls |
"Wait until the server is ready" | Calls |
MCP tools reference
These tools are available to Claude when connected:
Tool | Purpose |
| Discover peers + register this session |
| Register with a specific role |
| Show this session's ID and role |
| See who's online |
| Send an order to a peer by role |
| Block until a command arrives |
| Report command completion |
| Post to a message channel |
| Read from a channel |
| Emit a named event |
| Block until an event fires |
| Full broker state |
| Clear everything |
HTTP API reference
Everything Claude can do via MCP, you can also do with curl or any HTTP client.
Peers:
# Discover who's online
curl http://localhost:9100/peers/discover
# Register
curl -X POST http://localhost:9100/peers/connect \
-H 'Content-Type: application/json' \
-d '{"role":"backend","capabilities":["tcp","server"]}'
# List all
curl http://localhost:9100/peersCommands:
# Send a command (as the human)
curl -X POST http://localhost:9100/commands/send \
-H 'Content-Type: application/json' \
-d '{"from":"human","target":"backend","action":"start_server","params":{"port":7400}}'
# Check commands for a peer
curl http://localhost:9100/commands/<peer-id>
# Wait for a command (long-poll)
curl http://localhost:9100/commands/<peer-id>/wait?timeout=30000
# Acknowledge
curl -X POST http://localhost:9100/commands/<command-id>/ack \
-H 'Content-Type: application/json' \
-d '{"result":{"status":"ok"}}'Channels:
# Send message
curl -X POST http://localhost:9100/channels/results/send \
-H 'Content-Type: application/json' \
-d '{"test":"handshake","status":"pass"}'
# Read messages
curl http://localhost:9100/channels/results/messages
# Read only new messages
curl http://localhost:9100/channels/results/messages?since=5Signals:
# Emit
curl -X POST http://localhost:9100/signals/server_ready \
-H 'Content-Type: application/json' \
-d '{"data":{"port":7400}}'
# Wait (long-poll)
curl http://localhost:9100/signals/server_ready/wait?timeout=30000
# Check without waiting
curl http://localhost:9100/signals/server_readySystem:
curl http://localhost:9100/status # Full state
curl -X POST http://localhost:9100/reset # Clear everythingDashboard
The web dashboard at http://localhost:9100/dashboard shows:
Peers -- who's connected, their roles and capabilities
Channels -- message streams (click to inspect)
Signals -- emitted events with data
Live Activity -- real-time feed of everything happening
Command Center -- send commands to any peer, see pending/acked status
The dashboard updates in real-time via Server-Sent Events. No polling, no refresh needed.
Example: 4-session cross-platform test
Terminal 1 (start broker):
$ node index.js
Terminal 2 (orchestrator):
$ claude
> "Connect to the IPC broker as the orchestrator"
Terminal 3 (linux client):
$ claude
> "Connect to the IPC broker"
Claude asks: "What role?" -> "linux-client"
Terminal 4 (backend server):
$ claude
> "Connect to the IPC broker"
Claude asks: "What role?" -> "backend"
Dashboard (browser):
Open http://localhost:9100/dashboard
Select target: "backend"
Action: "start_server"
Params: {"port": 7400}
Click Send
-> Backend Claude receives the command, starts the server, acks.
Select target: "linux-client"
Action: "connect_and_test"
Params: {"ip": "localhost", "port": 7400}
Click Send
-> Linux client Claude connects, runs test, acks with results.
All activity visible in real-time on the dashboard.Architecture
+---------------------------+
| BROKER (Node.js) |
| |
| Peers - registry |
| Commands - per-peer inbox |
| Channels - msg streams |
| Signals - one-shot |
+----------+----------------+
|
+--------------------+--------------------+
| | |
+------+------+ +------+------+ +-------+------+
| Claude A | | Claude B | | Dashboard |
| MCP (SSE) | | MCP (SSE) | | Browser |
| orchestrator| | linux-client| | human ctrl |
+-------------+ +-------------+ +--------------+The broker runs as a standalone HTTP server. Claude Code connects via MCP (SSE transport). The dashboard connects via Server-Sent Events. Commands, messages, and signals all flow through the broker.
Tests
npm testRuns 46 tests covering peers, discovery, commands, channels, signals, and reset.
License
MIT
Related MCP Connectors
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
- ParleyOAuthdev.weldra
Coordination hub for AI coding agents: message teammates, ask humans, audit every event.
Ephemeral REST chatrooms for AI agents to coordinate. Share a room URL — agents talk live.