afk-claude-telegram-bridge

SKILL.md

AFK Claude Telegram Bridge

Remote-control Claude Code sessions from your phone via Telegram when AFK (away from keyboard).

When to Use

  • "set up telegram bridge" / "configure telegram AFK"
  • "enable remote control" / "activate AFK mode"
  • "I want to control Claude from my phone"
  • Installing this skill on a new machine

What This Skill Does

Installs a complete Telegram ↔ Claude Code bridge that allows you to:

  1. Approve/deny tool calls from Telegram inline keyboards
  2. Continue tasks by sending new instructions when Claude finishes
  3. Auto-approve read-only tools (Read, Glob, Grep, WebSearch, WebFetch)
  4. Multi-session support β€” up to 4 concurrent sessions (S1-S4)
  5. Minimal dependencies β€” Node.js with fp-ts only

Installation

Install via curl (recommended):

curl -fsSL https://raw.githubusercontent.com/gmotyl/afk-claude-telegram-bridge/main/install.sh | bash

Or from a local clone:

git clone https://github.com/gmotyl/afk-claude-telegram-bridge.git
cd afk-claude-telegram-bridge
npm install && npm run deploy

The installer downloads pre-built binaries from GitHub and handles everything:

  • Copies hook.js, bridge.js, cli.js, hook.sh to ~/.claude/hooks/telegram-bridge/
  • Installs /afk, /back, and /afk-reset commands to ~/.claude/commands/
  • Registers Stop, Notification, and PreToolUse hooks in ~/.claude/settings.json
  • Prompts for your bot token and auto-detects your Telegram group

Restart Claude Code after installation to load the new commands.

Prerequisites

Before running the installer, create a Telegram bot:

  1. Open Telegram -> search @BotFather -> send /newbot
  2. Name it "Claude Bridge" (or your preferred name)
  3. Copy the bot token
  4. Create a Telegram Group with Topics enabled
  5. Add the bot to the group as Administrator
  6. Send a message in the group (so the bot can detect it)

Usage

Activate AFK Mode

In any Claude Code session:

/afk

You'll see a confirmation on Telegram: "πŸ“‘ S1 β€” AFK Activated"

Deactivate AFK Mode

/back

From Telegram

When Claude needs approval for a tool call, you'll see:

πŸ” S1 β€” Permission Request
Tool: Bash
`npm install express`
[βœ… Approve] [❌ Deny]

When Claude finishes a task:

βœ… S1 β€” Task Complete
I've implemented the login form...
[πŸ›‘ Let it stop]

Reply with text to send Claude a new instruction!

Multi-Session

With multiple sessions, prefix instructions:

S1: now add unit tests
S2: push to remote

File Structure

After installation:

~/.claude/hooks/telegram-bridge/
  hook.sh        β€” Bash wrapper (Claude Code calls this)
  hook.js        β€” Compiled hook entry point (Node.js)
  bridge.js      β€” Compiled Telegram daemon (Node.js)
  config.json    β€” Bot token, group ID, settings
  state.json     β€” Runtime state
  daemon.log     β€” Daemon log
  ipc/           β€” Per-session IPC

~/.claude/commands/
  afk.md         β€” /afk command
  back.md        β€” /back command
  afk-reset.md   β€” /afk-reset command

Commands Reference

Command Description
hook.sh --activate <session_id> [project] Activate AFK mode
hook.sh --deactivate <session_id> Deactivate AFK mode
hook.sh --reset Nuclear reset (kill daemons, clear state)
hook.sh --status Show active sessions
hook.sh --setup Configure bot token/chat_id
hook.sh --help Show help

Troubleshooting

  • Daemon log: cat ~/.claude/hooks/telegram-bridge/daemon.log
  • Status: ~/.claude/hooks/telegram-bridge/hook.sh --status
  • Manual start: node ~/.claude/hooks/telegram-bridge/bridge.js
  • Kill daemon: Check PID in state.json, then kill <pid>

Dependencies

  • Node.js 18+
  • bash
  • Telegram bot token

Changelog

See CHANGELOG.md for release history.

Credits

Originally built by Greg Motyl (@gmotyl).

Weekly Installs
15
First Seen
11 days ago
Installed on
opencode15
gemini-cli15
amp15
github-copilot15
codex15
kimi-cli15