Skip to main content

CCGram — Control AI Coding Agents from Telegram

CI PyPI License

Control AI coding agents from your phone. Walk away mid-session. Keep monitoring and responding from Telegram—without losing terminal access.

Why CCGram?

AI coding agents run in your terminal. Other Telegram bots wrap agent SDKs into isolated API sessions you can't resume in your terminal. CCGram is different. It sits on top of your terminal multiplexer (tmux or herdr), not any agent SDK. Your agent process stays exactly where it is—your session is the source of truth.

This means:

  • Desktop to phone, mid-conversation — walk away and keep monitoring from Telegram
  • Phone back to desktop, anytime — attach to your terminal and you're back with full scrollback
  • Multiple sessions in parallel — each Telegram topic maps to a separate tmux window or guarded Herdr agent session

How It Works

graph LR
  subgraph phone["📱 Telegram Group (Forum Topics)"]
    direction TB
    T1["💬 api — Claude"]
    T2["💬 ui — Codex"]
    T3["💬 data — Gemini"]
    T4["💬 ops — Shell"]
    T5["💬 lab — Pi"]
  end

  subgraph bridge["⚡ CCGram"]
    direction TB
    B1["read output\n(transcripts + terminal)"]
    B2["send keystrokes\n(tmux / herdr)"]
    B3["instant notifications\n(Claude hooks)"]
  end

  subgraph machine["🖥️ Your Machine — tmux / herdr"]
    direction TB
    W1["window @0 · claude"]
    W2["window @1 · codex"]
    W3["window @2 · gemini"]
    W4["window @3 · bash"]
    W5["window @4 · pi"]
  end

  phone -- "messages / voice" --> bridge
  bridge -- "responses / live view" --> phone
  bridge <--> machine

  style phone fill:#e8f4fd,stroke:#0088cc,stroke-width:2px,color:#333
  style bridge fill:#fff8e1,stroke:#f9a825,stroke-width:2px,color:#333
  style machine fill:#f0faf0,stroke:#2ea44f,stroke-width:2px,color:#333

Each Telegram topic maps to one tmux window. With Herdr, it maps instead to one guarded agent session: agent.list is the sole identity source and CCGram persists only an opaque herdr-session-v1-… target, never a tab or pane ID. Every action reads a fresh agent.list record and fails closed for missing, duplicate, malformed, sessionless, or legacy bindings. A session can still change after that guard and before Herdr dispatches, so delivery is not atomic and may be indeterminate after this post-guard race.


What You Can Do

  • Bind agents to topics — one agent per Telegram topic; create via directory browser
  • Auto-detect providers — Supports Claude Code, Codex, Gemini, Pi, and Shell simultaneously
  • Monitor live — Terminal screenshots on demand or auto-refresh every 5 seconds
  • Send commands — Slash commands, voice messages (transcribed via Whisper), or raw shell input
  • Run multiple agents in parallel — each topic independent; run different agents at once
  • Recover gracefully — Resume, continue, or start fresh if a session crashes
  • Send workspace files — Share files to Telegram via /send (glob, path, or substring search)
  • Action toolbar — Provider-specific buttons for common actions (Screenshot, Mode, Esc, Enter, etc.)

Quick Start

Install:

uv tool install ccgram          # recommended
# or: pipx install ccgram | brew install alexei-led/tap/ccgram

Telegram setup:

  1. Create a bot via @BotFather — full instructions
  2. Add bot to a Telegram group with Topics enabled; promote to Admin
  3. Create ~/.ccgram/.env:
TELEGRAM_BOT_TOKEN=your_bot_token_here
ALLOWED_USERS=your_telegram_user_id
CCGRAM_GROUP_ID=your_telegram_group_id

Get user ID from @userinfobot. Get group ID via @RawDataBot (prefix Peer ID with -100).

Run:

ccgram

Open your Telegram group, create a topic, send a message — directory browser appears. Pick a project directory, choose your agent (Claude, Codex, Gemini, Pi, or Shell), and you're connected.

Prerequisites: Python 3.14+, tmux or herdr, and one agent CLI. CCGram does not modify agent SDKs.

Herdr setup

CCGram supports Herdr socket protocols 14–17 and 19–20. Unknown protocol versions are attempted with a warning for forward compatibility; individual command failures still surface if the protocol is not usable. Install Herdr's integration before launching an agent that needs a native session identity:

herdr integration install pi
herdr integration install antigravity-cli

Restart an already-running agent after installation. Antigravity receives a native Herdr session identity after its first prompt creates a conversation.

Start new agents, or restart already-running agents, after installing the integration so they publish their agent_session identity. Then set CCGRAM_MULTIPLEXER=herdr and run ccgram hook --install as usual.

Platform Support

CCGram supports Linux, macOS, and WSL2. Native Windows is not supported.

On Windows, install and run CCGram inside WSL2. Install tmux or herdr and the agent CLI inside the WSL distribution.

Native Windows does not provide the Unix file locking, signal handling, and terminal multiplexer features that CCGram requires.


Documentation

  • Guides — CLI reference, configuration, voice transcription, multi-instance setup, session recovery, testing
  • Providers — Claude Code, Codex, Gemini, Pi, Shell; session modes, LLM config, custom commands, git worktrees

Optional Features

Web Dashboard — Live terminal (xterm.js), transcript search, multi-pane grid in Telegram. Disabled by default. Enable here.


Development

git clone https://github.com/alexei-led/ccgram.git && cd ccgram
uv sync --extra dev
make check         # lint, format, typecheck, test
make test-e2e      # end-to-end tests (requires agent CLIs; see docs/guides.md#e2e-tests)

License

MIT

Release files for ccgram 4.6.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ccgram 4.6.6
File Size Uploaded
ccgram-4.6.6.tar.gz 16.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for ccgram 4.6.6
File Interpreter ABI Platform
ccgram-4.6.6-py3-none-any.whl Python 3 none any Details

Total release size: 32.4 MB

Release files / ccgram-4.6.6.tar.gz

Download URL ccgram-4.6.6.tar.gz
Size 16.5 MB
Tags Source
SHA-256 checksum
How to use checksums
138dc6503ddb67bf3b789fda3e617c23b97e24d4f968510b53a9e99dfd5dd3da
BLAKE2b-256 checksum
How to use checksums
c2c6e2766c3c086084c5a074a611f6207ab776da7127df9561d71414cf99ca13
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.

Transparency log

Release files / ccgram-4.6.6-py3-none-any.whl

Download URL ccgram-4.6.6-py3-none-any.whl
Size 15.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
86710163bd375573a8a2434df749b738c9d23e89b7041f4b94b03a3a4517e090
BLAKE2b-256 checksum
How to use checksums
6c36544d3f010fd46319837c0d0e680452bead92c21b5d00af0248f73a01a9bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.

Transparency log

Release history Release notifications | RSS feed

4.12.3

2 release files

4.12.2

2 release files

4.12.1

2 release files

4.12.0

2 release files

4.11.4

2 release files

4.11.3

2 release files

4.11.2

2 release files

4.11.1

2 release files

4.11.0

2 release files

4.10.5

2 release files

4.10.4

2 release files

4.9.8

2 release files

4.9.7

2 release files

4.9.6

2 release files

4.9.5

2 release files

4.9.4

2 release files

4.9.3

2 release files

4.9.2

2 release files

4.9.1

2 release files

4.9.0

2 release files

4.8.0

2 release files

4.7.1

2 release files

4.7.0

2 release files

4.6.8

2 release files

4.6.7

2 release files

This release

4.6.6 This release

2 release files

4.6.5

2 release files

4.6.4

2 release files

4.6.3

2 release files

4.6.2

2 release files

4.6.1

2 release files

4.6.0

2 release files

4.5.3

2 release files

4.5.2

2 release files

4.5.1

2 release files

4.5.0

2 release files

4.4.2

2 release files

4.4.1

2 release files

4.4.0

2 release files

4.3.11

2 release files

4.3.10

2 release files

4.3.9

2 release files

4.3.7

2 release files

4.3.6

2 release files

4.3.5

2 release files

4.3.4

2 release files

4.3.3

2 release files

4.3.2

2 release files

4.3.1

2 release files

4.3.0

2 release files

4.2.0

2 release files

4.1.0

2 release files

4.0.1

2 release files

4.0.0

2 release files

3.6.0

2 release files

3.5.2

2 release files

3.5.1

2 release files

3.5.0

2 release files

3.4.1

2 release files

3.4.0

2 release files

3.3.3

2 release files

3.3.2

2 release files

3.3.1

2 release files

3.3.0

2 release files

3.2.0

2 release files

3.1.3

2 release files

3.1.2

2 release files

3.1.1

2 release files

3.1.0

2 release files

3.0.9

2 release files

3.0.8

2 release files

3.0.7

2 release files

3.0.6

2 release files

3.0.5

2 release files

3.0.4

2 release files

3.0.3

2 release files

3.0.2

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.11.3

2 release files

2.11.2

2 release files

2.11.1

2 release files

2.11.0

2 release files

2.10.0

2 release files

2.9.0

2 release files

2.8.2

2 release files

2.8.1

2 release files

2.8.0

2 release files

2.7.2

2 release files

2.7.1

2 release files

2.7.0

2 release files

2.6.1

2 release files

2.6.0

2 release files

2.5.0

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.5

2 release files

2.3.4

2 release files

2.3.3

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.5

2 release files

2.2.4

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.1

2 release files

2.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page