Skip to content

osisdie/claude-code-channels

Repository files navigation

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

Channel Status Docs
Telegram Ready docs/telegram/
Discord Ready docs/discord/
Slack Broker docs/slack/
LINE Broker docs/line/
WhatsApp Broker docs/whatsapp/
Teams Planned docs/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
├── .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

Ask Reply
Telegram Ask Telegram Reply

Discord

Ask Reply
Discord Ask Discord Reply

Slack

Ask Reply
Slack Ask Slack Reply

LINE

Ask (Flower) Ask (Weather)
LINE Flower LINE Weather

LINE Relay (Cloud)

Ask (EN) Ask (zh-TW)
LINE Relay EN LINE Relay zh-TW

WhatsApp Relay (Cloud)

Ask (Flower) Ask (Weather)
WhatsApp Flower WhatsApp Weather

Claude Code Terminal

Claude Code Channel Messages

Docs

Per-Channel

General

License

MIT