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