English | 繁體中文
Connect Claude Code to messaging platforms for bidirectional, remote interaction with your local AI agent.
A project-level setup for running Claude Code with the official Channels plugin system. Send tasks from your phone, approve risky operations remotely, and share files -- all through your preferred messaging app.
| Channel | Status | Docs |
|---|---|---|
| docs/telegram/ | ||
| docs/discord/ | ||
| docs/slack/ | ||
| docs/line/ | ||
| docs/whatsapp/ | ||
| docs/teams/ |
- Bun runtime
- Claude Code v2.1.80+
- A bot token for your target channel (e.g., Telegram's @BotFather)
-
Clone and configure:
git clone https://github.com/osisdie/claude-code-channels.git cd claude-code-channels cp .env.example .env # Edit .env — add your bot token(s)
-
Install a channel plugin (inside a Claude Code session):
/plugin marketplace add anthropics/claude-plugins-official /plugin install telegram@claude-plugins-official /telegram:configure <YOUR_BOT_TOKEN> -
Pair your account (varies per channel — see channel docs).
-
Launch:
./start.sh telegram
Each broker channel can run as an isolated Docker container:
# Build and run WhatsApp broker
docker compose up whatsapp
# Run multiple brokers
docker compose up slack whatsapp
# Run all brokers
docker compose upNote: Set
ANTHROPIC_API_KEYin your.envfile. The Claude CLI authenticates via API key inside the container.
Messaging App (Mobile/Desktop)
| (Platform API, outbound polling by plugin)
Channel Plugin (Bun subprocess, MCP Server)
| (stdio transport)
Claude Code Session (local, full filesystem access)
No inbound ports, webhooks, or external servers needed. WSL2 compatible.
For a deep dive into the official plugin internals, see Plugin Architecture.
# From Telegram/Discord, send:
What files changed in the last commit?
# Claude Code executes `git diff HEAD~1` and replies with the diff summary
# Claude Code encounters a destructive operation:
Bot: "About to run `rm -rf dist/` — approve or reject?"
You: approve
# Claude Code proceeds
# Start with multiple channels simultaneously
./start.sh telegram discord.
├── start.sh # Multi-channel launcher
├── docker-compose.yml # Per-broker Docker services
├── docker/ # Per-channel Dockerfiles
├── .env.example # Environment variable template
├── .gitignore # Excludes secrets & channel state
├── CHANGELOG.md
├── CONTRIBUTING.md
├── SECURITY.md
├── LICENSE
├── README.md
├── README.zh-TW.md
├── docs/
│ ├── prerequisites.md # Shared setup (Bun, Claude Code)
│ ├── prerequisites.zh-tw.md # Shared setup (zh-TW)
│ ├── issues.md # Known issues (cross-channel)
│ ├── plugins/
│ │ ├── architecture.md # Official plugin architecture (EN)
│ │ └── architecture.zh-tw.md # Official plugin architecture (zh-TW)
│ ├── telegram/
│ │ ├── plan.md # Integration planning doc
│ │ ├── plan.zh-tw.md # Planning doc (zh-TW)
│ │ ├── install.md # Installation & integration notes
│ │ ├── install.zh-tw.md # Installation notes (zh-TW)
│ │ └── security.png
│ ├── discord/
│ │ ├── plan.md # Integration planning doc
│ │ ├── plan.zh-tw.md # Planning doc (zh-TW)
│ │ ├── install.md # Installation & integration notes
│ │ └── install.zh-tw.md # Installation notes (zh-TW)
│ ├── slack/
│ │ ├── plan.md # Integration plan (MCP only, not channel)
│ │ ├── install.md # Installation & integration notes
│ │ └── install.zh-tw.md # Installation notes (zh-TW)
│ ├── line/
│ │ ├── plan.md # Integration planning doc
│ │ ├── plan.zh-tw.md # Planning doc (zh-TW)
│ │ ├── install.md # Installation & integration notes
│ │ └── install.zh-tw.md # Installation notes (zh-TW)
│ ├── whatsapp/
│ │ ├── plan.md # Integration planning doc
│ │ ├── install.md # Installation & integration notes
│ │ └── install.zh-tw.md # Installation notes (zh-TW)
│ └── teams/
│ ├── plan.md # Integration planning doc
│ ├── install.md # Installation & integration notes
│ └── install.zh-tw.md # Installation notes (zh-TW)
├── external_plugins/
│ ├── slack-channel/
│ │ └── broker.ts # Slack message broker
│ ├── line-channel/
│ │ ├── broker.ts # LINE webhook broker (direct, needs ngrok)
│ │ ├── broker-relay.ts # LINE relay bridge (polls cloud relay)
│ │ └── relay/ # Cloudflare Worker (cloud webhook)
│ ├── whatsapp-channel/
│ │ ├── broker-relay.ts # WhatsApp relay bridge
│ │ └── relay/ # Cloudflare Worker (cloud webhook)
│ └── teams-channel/
│ ├── broker-relay.ts # Teams relay bridge
│ ├── relay/ # Cloudflare Worker (cloud webhook)
│ └── manifest/ # Teams app manifest for sideloading
├── lib/
│ ├── sessions/ # Session memory (STM + LTM + compacting)
│ └── safety/ # Content filter, quota, audit logging
├── scripts/
│ ├── verify_slack.sh # Slack token verification & smoke test
│ └── verify_whatsapp.sh # WhatsApp relay verification & smoke test
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ └── feature_request.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── workflows/ci.yml
└── .claude/ # (gitignored)
├── agents/
│ └── pre-push-reviewer.md
├── settings.local.json # Permission whitelist
└── channels/<channel>/ # Per-channel state (tokens, access)
| Ask | Reply |
|---|---|
![]() |
![]() |
| Ask | Reply |
|---|---|
![]() |
![]() |
| Ask | Reply |
|---|---|
![]() |
![]() |
| Ask (Flower) | Ask (Weather) |
|---|---|
![]() |
![]() |
| Ask (EN) | Ask (zh-TW) |
|---|---|
![]() |
![]() |
| Ask (Flower) | Ask (Weather) |
|---|---|
![]() |
![]() |
- Telegram -- Installation & Integration Notes
- Telegram -- Planning Document
- Discord -- Installation & Integration Notes
- Discord -- Planning Document
- Slack -- Installation & Integration Notes
- Slack -- Planning Document
- LINE -- Installation & Integration Notes
- LINE -- Planning Document
- LINE -- Relay Deployment Guide
- WhatsApp -- Installation & Integration Notes
- WhatsApp -- Planning Document
- Teams -- Installation & Integration Notes
- Teams -- Planning Document












