Skip to content
Conduit

mcp server

claude-code-channels

Connect Claude Code to messaging platforms (Telegram, Discord, Slack, LINE, WhatsApp) for bidirectional, remote interaction with your local AI agent.

osisdie/claude-code-channelscommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

This project does not publish an install method we can turn into a config. Follow the README instead.

README

synced Oct 21, 2026

claude-code-channels

CI License: MIT GitHub issues GitHub stars Bun Claude Code GitHub release

English | 繁體中文

Connect Claude Code to messaging platforms for bidirectional, remote interaction with your local AI agent.

What This Is

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.

Supported Channels

ChannelStatusDocs
TelegramReadydocs/telegram/
DiscordReadydocs/discord/
SlackBrokerdocs/slack/
LINEBrokerdocs/line/
WhatsAppBrokerdocs/whatsapp/
TeamsPlanneddocs/teams/

Quick Start

Prerequisites

  • Bun runtime
  • Claude Code v2.1.80+
  • A bot token for your target channel (e.g., Telegram's @BotFather)

Setup

  1. 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)
    
  2. 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>
    
  3. Pair your account (varies per channel — see channel docs).

  4. Launch:

    ./start.sh telegram
    

Docker (Broker Channels)

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 up

Note: Set ANTHROPIC_API_KEY in your .env file. The Claude CLI authenticates via API key inside the container.

Architecture

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.

Usage Examples

Remote Task Execution

# From Telegram/Discord, send:
What files changed in the last commit?

# Claude Code executes `git diff HEAD~1` and replies with the diff summary

Approval Workflow

# Claude Code encounters a destructive operation:
Bot: "About to run `rm -rf dist/` — approve or reject?"
You: approve
# Claude Code proceeds

Multi-Channel Launch

# Start with multiple channels simultaneously
./start.sh telegram discord

Project Structure

.
├── 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
│   └── yt/                   # YouTube-to-PDF pipeline (/yt2pdf)
│       ├── get_transcript.py # Extract transcript (subtitles → Whisper)
│       ├── build_html.py     # Markdown → styled HTML (base64 images)
│       ├── build_pdf.py      # HTML → PDF via headless Chrome
│       ├── upload_b2.py      # Upload to B2 + presigned URL
│       └── yt2pdf.py         # Orchestrator (HTML→PDF→B2)
├── .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)

Screenshots

Telegram

AskReplyInline Buttons

YouTube to PDF (/yt2pdf)

CommandResultPDF Output
summary_en.pdf

Send /yt2pdf <YouTube URL> from Telegram or Discord. Claude extracts the transcript, generates a bilingual summary (EN + zh-TW), builds a styled PDF with thumbnail, and uploads to B2 Cloud Storage with a presigned download link.

Discord

AskReply

Slack

AskReply

LINE

Ask (Flower)Ask (Weather)

LINE Relay (Cloud)

Ask (EN)Ask (zh-TW)

WhatsApp Relay (Cloud)

Ask (Flower)Ask (Weather)

Claude Code Terminal

Docs

Per-Channel

General

License

MIT

↑↓ navigate openesc close