MuhammadTalhaMT/claude-intercom
View on GitHub ↗Two-way communication bridge between Claude Code sessions using the Channels API
11 ★3 forksTypeScriptUpdated 19d ago
What you need to know
Claude Intercom — a two-way, real-time messaging bridge between Claude Code sessions on different machines using the Channels API: two Claude Code instances (each running the same intercom.ts via npx) POST messages to each other over your own network/VPN/tunnel and receive them as channel notifications, with send_message and check_message tools.
Install
No install — npx fetches it on first run on both machines; you need Bun on PATH (Bun.serve powers the HTTP listener). Claude Code v2.1.80 or later is required; both machines must reach each other over HTTP (Tailscale recommended). Source: git clone https://github.com/MuhammadTalhaMT/claude-intercom.git && bun install, then point "command": "bun" at intercom.ts. Configure both sides in .mcp.json with MY_ROLE, REMOTE_HOST (host:port or tunnel URL), INTERCOM_SECRET (must match), INTERCOM_PORT (default 8788).
Usage
- •Start on both machines: claude --dangerously-load-development-channels server:intercom.
- •In either session, ask: "Send a message to the other developer asking what API endpoints are available" — Claude uses send_message, the other Claude receives it as a channel notification.
- •Use check_message to ask whether a reply is slow or never coming; states are sent (no ack), delivered-to-process, or answered.
- •Options: send_message message + optional replyTo and per-message expectReplyWithin ("30s", "5m", "2h"); /health returns status+role+version.
Key features
- ✓send_message (fire-and-forget with an id; ack doesn't claim the other developer read it) and check_message with per-message overdue windows.
- ✓Shared-secret HTTP auth (X-Intercom-Secret; 401 without it); inbound messages treated as data, not instructions — slash commands stay inert.
- ✓No data persistence (messages forwarded in real time), configurable listen port and outbound send timeout.
- ✓Tailscale recommended (stable tailnet addresses, no public listener); ngrok auto-detected with HTTPS switch.
- ✓Works on native Windows, between two different people, and without transiting Anthropic servers — the gaps the native feature doesn't cover; MIT.
Best for
Two developers (e.g. backend + frontend) with separate Claude Code sessions who want a private hotline — especially on Windows, between different users, or when messages must not transit Anthropic servers.
Caveats
- ⚠Superseded for the common case: since 2026-08-07, Claude Code v2.1.224 ships native cross-session messaging (ListAgents/SendMessage) — the README recommends native messaging for same-user macOS/Linux sessions.
- ⚠Security warning: intercom is a raw pipe with a shared secret — anyone holding your secret and address can push text into your session; native messaging enforces in/outbound controls, this does not.
- ⚠Does not guarantee delivery to the other developer — only that the remote accepted it; replies are matched via replyTo.
- ⚠Uses an experimental channel mechanism (--dangerously-load-development-channels); the stdio leg is what attaches it to a live Claude Code session.
Platforms: macOS · Linux · WindowsClients: Claude Code
Reviewed 2026-08-18
Topics
agent-communicationai-agentsanthropicbunclaudeclaude-codedeveloper-toolsmcpmcp-servermodel-context-protocoltypescript
- Stars
- 11★
- Forks
- 3
- Language
- TypeScript
- License
- MIT
- Created
- 2026-03-30
- Last push
- 2026-08-16