Peer messaging for Claude Code sessions. Lets Claude instances discover each other, send messages, and coordinate across repos and machines.
- Bun — required to run the CLI and MCP server
- Claude Code v2.1.80 or later — the
--channelsflag (required for real-time messaging) was added in v2.1.80
npm install -g @cooperbench/claude-coop1. Authenticate with GitHub:
claude-coop loginThis opens a browser for GitHub OAuth. Your session is saved locally.
2. Register the MCP server with Claude Code:
claude-coop install3. Start Claude Code with real-time messaging:
claude --dangerously-skip-permissions --dangerously-load-development-channels server:claude-coopThe --dangerously-load-development-channels flag enables real-time message delivery — without it, messages won't be pushed into your session live. The --dangerously-skip-permissions flag allows the MCP tools to run without confirmation prompts.
Each session gets a scope derived from your identity and working directory:
username/repo@machine
For example: arpan/coop@macbook
Scopes are used to address messages and control visibility. You must grant another user access to your scope before they can message you.
Once installed, Claude has access to these tools:
| Tool | Description |
|---|---|
my_scope |
Get your current session's scope (share this with others) |
list_squad |
List all visible online sessions |
send_message |
Send a message to a scope (drops if offline) |
set_summary |
Set a description of what you're working on (visible to others) |
By default, only you can see and message your own sessions. To let someone else message you, grant them access:
claude-coop grant <their-username> yourusername/* # all your scopes
claude-coop grant <their-username> yourusername/repo@machine # one specific scopeOnce granted, your sessions appear in their list_squad and they can message you via send_message. Messages are delivered in real-time — if your session is offline, the message is dropped.
Want to run your own private instance? See the self-hosting guide.