Agent Client Protocol · Telegram · Local-first

Your agents. In chat.

acpbot is the Telegram control surface for ACP coding agents. Each forum topic is a live session with Grok, Claude, Codex, or OpenCode — permissions, media, MCP tools, and schedules on your machine.

Grok Build Claude Codex OpenCode

Install · v0.1.0

One binary. Host + worker.

Standalone Bun-compiled executables — no Bun or Node required. macOS builds are Developer ID–signed. Linux from CI.

# Apple Silicon example — pick your platform from above
curl -fsSL -o acpbot.tgz \
  "https://github.com/pmdroid/acpbot/releases/download/v0.1.0/acpbot-v0.1.0-darwin-arm64.tar.gz"
tar -xzf acpbot.tgz
chmod +x acpbot-v0.1.0-darwin-arm64
sudo mv acpbot-v0.1.0-darwin-arm64 /usr/local/bin/acpbot
acpbot setup

GitHub release · Full install guide · Docker: docker pull ghcr.io/pmdroid/acpbot:v0.1.0

Capabilities

Built for real operator work

Not a toy chat wrapper — a durable bridge between Telegram and the Agent Client Protocol.

Topic = session

/new opens a private forum topic bound to a repo and agent. History, mode, and model stay with that thread.

acp-host required

Agent stdio lives in a long-lived host process. Restart the Telegram worker without killing agent context.

Permissions in-line

ACP permission requests, elicitation, and ask-user flows become Telegram keyboards — approve, reject, or cancel where you already are.

Models & modes

/model, /effort, and /mode read live agent catalogs over ACP — reasoning effort and permission modes when advertised.

Media & speech

Photos, files, voice STT in; agent TTS out. OpenAI and ElevenLabs are selectable per TTS/STT via config.toml.

Schedules

Durable in-repo jobs. The host can fire them even when the worker is offline.

Multi-agent & EVE

Spawn child agents in worktrees, or run agent-authored directive graphs with zero-token orchestration on the host.

Multi-host

Route repos to remote acp-host over authenticated WSS — keep the bot token on the worker, agents where the code lives.

Architecture

Local daemon. Real agents.

You (Telegram)
    │  forum topic
    ▼
acpbot worker  ──Unix──►  acp-host  ──stdio──►  grok / claude / codex / opencode
    │                        │
    ├── worker-api.sock      └── sessions · OAuth · schedules
    └── single operator (CLI pair approve)
  • Single operator — private chat; pair with a Telegram code + acpbot pair approve on the host.
  • Local-first — tokens and agent processes stay on your box (or your tailnet).
  • ACP native — session/new|load, prompt, cancel, set_mode, models, MCP.

Agents

Pick the process. Keep the topic.

Switch agent mid-session with /agent. PATH-gated picker — only installed CLIs appear.

Grok Build

grok agent stdio

effort modes · session load

Claude

via claude-agent-acp

official ACP adapter

Codex

via codex-acp

read-only · agent modes

OpenCode

opencode acp

native ACP · rich models

Ship from the chat you already live in.

Open source · MIT · v0.1.0 out now — download or read the quick start.