Telegram bot bridge for Claude Code. Send messages from Telegram, get responses back.
flowchart LR
A[Telegram] --> B[Cloudflare Tunnel]
B --> C[Bridge Server]
C -->|tmux send-keys| D[Claude Code]
D -->|Stop Hook| E[Read Transcript]
E -->|Send Response| A
- Bridge receives Telegram webhooks, injects messages into Claude Code via tmux
- Claude Code's Stop hook reads the transcript and sends response back to Telegram
- Only responds to Telegram-initiated messages (uses pending file as flag)
# Prerequisites
brew install tmux cloudflared
# Clone
git clone https://github.com/hanxiao/claudecode-telegram
cd claudecode-telegram
# Setup Python env
uv venv && source .venv/bin/activate
uv pip install -e .Bot receives your messages and sends Claude's responses back.
# Message @BotFather on Telegram, create bot, get tokenHook triggers when Claude finishes responding, reads transcript, sends to Telegram.
cp hooks/send-to-telegram.sh ~/.claude/hooks/
nano ~/.claude/hooks/send-to-telegram.sh # set your bot token
chmod +x ~/.claude/hooks/send-to-telegram.shAdd to ~/.claude/settings.json:
{
"hooks": {
"Stop": [{"hooks": [{"type": "command", "command": "~/.claude/hooks/send-to-telegram.sh"}]}]
}
}tmux keeps Claude Code running persistently; bridge injects messages via send-keys.
tmux new -s claude
claude --dangerously-skip-permissionsBridge receives Telegram webhooks and injects messages into Claude Code.
export TELEGRAM_BOT_TOKEN="your_token"
python bridge.pyTunnel exposes local bridge to the internet so Telegram can reach it.
cloudflared tunnel --url http://localhost:8080Tells Telegram where to send message updates.
curl "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/setWebhook?url=https://YOUR-TUNNEL-URL.trycloudflare.com"| Command | Description |
|---|---|
/status |
Check tmux session |
/clear |
Clear conversation |
/resume |
Pick session to resume (inline keyboard) |
/continue_ |
Auto-continue most recent |
/loop <prompt> |
Start Ralph Loop (5 iterations) |
/stop |
Interrupt Claude |
| Variable | Default | Description |
|---|---|---|
TELEGRAM_BOT_TOKEN |
required | Bot token from BotFather |
TMUX_SESSION |
claude |
tmux session name |
PORT |
8080 |
Bridge port |
