Skip to content

Releases: artickc/opencode-telegram-bot

v2.0.0 - First Stable Release

Choose a tag to compare

@github-actions github-actions released this 11 Jul 10:48

First Stable Release — v2.0.0

OpenCode Telegram Bot is now stable. This is the first production-ready release with all features complete and verified.

Control OpenCode from Telegram over the Agent Client Protocol (ACP)opencode acp over JSON-RPC/stdio. Switch projects, resume sessions, stream responses with live diffs and rich tool-call detail, queue follow-ups, run scheduled tasks, and run 24/7 as a cross-platform background service.


Complete Feature Set

  • Projects and Sessions — Browse folders, create projects, resume/attach to live sessions, multi-session control with /running
  • Streaming and Rendering — Live typing indicators, MarkdownV2 rendering, unified edit diffs, chunking for long messages
  • Tool Call Visibility — Rich detail for every tool: searches (pattern + scope + filters), reads (path + line/offset), edits (diff blocks with stats), writes (content preview + syntax highlighting), deletes, moves (source to dest), shell commands (bash blocks), fetches (URL + method + body), web searches, MCP calls (server + method + args)
  • Tool Status Tracking — See pending to completed/failed for each tool call as it completes
  • Subagent Visibility — Watch subagents start, work, and finish in real-time
  • Self-Healing — Auto-fork on context-full, transient-error retry with backoff, auto-restart, single-instance guard
  • Progress Bar — Live {progress: N%} bar with bot-computed fallback
  • Scheduled Tasks — Run tasks on a schedule with /tasks
  • Voice Messages — Transcribe voice to prompts (configurable STT endpoint)
  • Image Prompts — Send photos to the agent, receive generated images back
  • File Ingestion — Send documents for the agent to read
  • MCP Control/mcp to inspect, health-check, enable/disable MCP servers
  • Inline Approvals — Approve/deny risky tool calls from Telegram buttons
  • Cross-Platform Daemon — Windows (Startup folder / Task Scheduler), Linux (systemd), macOS (launchd)
  • npm Packagenpm install -g @artickc/opencode-telegram-bot gives you the opencode-tg CLI
  • Auto-Update — Checks hourly, updates when idle
  • Status Panel — Pinned live status with activity, location, config, progress
  • Threaded Replies — Every message threaded to your prompt with searchable hashtags
  • Self-Cleaning UI — Transient menus auto-remove for a tidy chat history
  • JSONC Support — MCP config reader handles comments + trailing commas

What Changed

  • Transport: HTTP/SSE → ACP over stdio. The bot now runs opencode acp and speaks JSON-RPC on the agent process pipe. Mid-turn freezes from dropped SSE streams, wrong-directory event scopes, and silent TCP half-closes no longer apply.
  • formatToolCall rewritten to per-kind formatter functions with rich detail.
  • Diff rendering improved — smart-truncated (keeps first/last hunks, drops middle with summary).
  • Removed @opencode-ai/sdk dependency (no longer needed with ACP/stdio).

Fixed

  • Second (and later) turns ended instantly with empty Done — model aliases are now expanded to full provider/model ids.
  • Tool cards stuck on ⏳ after Done — streamer now upserts the same card through pending → completed.
  • First message showed only your prompt and no reply — client tracks message roles and emits only newly-appended suffix.
  • Single-instance lock could terminate an unrelated process — now verifies command line before killing.

Install

npm install -g @artickc/opencode-telegram-bot
opencode-tg setup    # configure .env + detect opencode CLI
opencode-tg install  # install as 24/7 background service

Or see the Install Guide.


Architecture

A fork of artickc/kiro-telegram-bot, re-architected for OpenCode ACP (opencode acp over JSON-RPC/stdio).

  • Runtime: Node.js >= 20, TypeScript via tsx (no build step)
  • Key deps: grammy (Telegram), dotenv, diff
  • Entry point: src/index.ts / CLI/daemon: src/cli.ts

Full changelog: CHANGELOG.md

v1.0.5

Choose a tag to compare

@artickc artickc released this 09 Jul 14:16

Fixed

  • First message showed only your prompt and no reply: filter the user's own message parts, stream only the new suffix of each growing snapshot, and drop the redundant message.part.delta emit (no echo, no duplication).
  • Assistant reply could be lost or the prompt echoed on resumed sessions: buffer out-of-order parts until the role resolves, with a safety flush at session.idle.
  • Single-instance lock could terminate an unrelated node/tsx process (e.g. a sibling kiro-telegram-bot) via a recycled PID: it now verifies the target's command line belongs to this bot before killing.