qwwiwi/dashi-plugin-claude-code

11 stars · Last commit 2026-06-14

Turn a live Claude Code session into a Telegram agent — one interactive session, no per-message SDK billing. Replaces the claude -p gateway pattern. Multichat, media, voice transcription, terminal mirror.

README preview

# dashi-plugin-claude-code

> **Read in your language:** English (this page) · [**Русская версия →**](README.ru.md)

[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
[![Runtime: Bun](https://img.shields.io/badge/runtime-Bun_1.3+-f9f1e1.svg)](https://bun.sh)
[![Language: TypeScript](https://img.shields.io/badge/TypeScript-strict-3178c6.svg)](https://www.typescriptlang.org/)
[![Claude Code](https://img.shields.io/badge/Claude_Code-v2.1.80+-d97757.svg)](https://code.claude.com/docs/en/channels-reference)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](#license-and-author)

**A Telegram → Claude Code channel plugin.** It turns an ordinary, live Claude Code session into a Telegram agent: the bot listens to one or more chats, replies inside the same session, and keeps all the work within your regular Anthropic Max subscription — with no separate SDK billing.

It replaces the deprecated `claude -p` gateway pattern (a Python daemon that spawned a fresh headless session for every message). Cutover deadline — **2026-06-15** (Anthropic is splitting billing; details in section [13](#13-why-migrate--the-2026-06-15-deadline)).

> **Migrating from the old gateway? There is now a doctor — use it.** The read-only [`doctor-dashi-plugin`](skills/doctor-dashi-plugin/SKILL.md) skill diagnoses the whole cutover — workspace placement, hooks (profile-aware), the permission gate and its policy, multichat invariants, webhook bind + token-file hygiene, MCP comms config, allowlist, fleet isolation, and live-session health — and encodes every mistake we already paid for so you don't repeat them. Run it during EVERY migration and whenever the bridge misbehaves: `bun skills/doctor-dashi-plugin/scripts/doctor.ts` (on a systemd host it autodetects the rest).
>
> **And one hard rule: migrate from a Claude Code terminal session, not through Telegram.** The migration changes the very bridge that carries your Telegram messages — if it breaks mid-change, the agent you were instructing through Telegram goes silent and can no longer fix itself. Work in a terminal (`tmux attach`, or a plain `claude` session on the host); let Telegram be the thing you test, not the thing you work through.

![Architecture — Telegram ↔ plugin ↔ Claude Code session](docs/assets/architecture-hero.svg)

View full repository on GitHub →