Claude on every messenger you already use.
Running on your machine.
Telechat is a self-hosted bot that puts Claude on Telegram, WhatsApp, Slack and a local web chat — all from one process. No server, no account, and with a Claude subscription, no API key.
$ npm install -g telechat && telechat init
Or try it first with telechat web — no account, no config. Python 3.10–3.13 · MIT licensed · v1.2.0
Migrated password hashing to argon2id, consolidated token paths, added refresh rotation. All 31 tests pass, staging verified.
The differentiator
Your Claude Code sessions can page you.
Telechat hooks into Claude Code on your desktop. When a session finishes a turn or stalls on a question, you get a triage card on Telegram — status first, decision pulled to the top. Reply to the card and your answer is injected straight back into that session.
- Glanceable digests. A fast model turns a wall of output into ✅ DONE / ⚠ NEEDS DECISION / ❌ BLOCKED — with the full text one tap away, never lost.
- Reply from anywhere. Your message resumes the session with
claude --resume. Broadcast to every running session with/desktop_all. - Approve tools from your phone. Opt in per project and every Bash, Write and Edit call waits for your tap — with an explicit timeout policy, not an accident.
- One command.
telechat bridge installwrites the hooks, installs a launchd service and runs preflight checks.
$ telechat bridge install --approval ✓ Registered hooks in ~/.claude/settings.json Stop · Notification · SubagentStop · PreToolUse ✓ Installed launchd service (auto-start at login) ✓ Preflight: claude CLI 2.1.4 found ✓ Preflight: Telegram credentials present ✓ Preflight: long-lived OAuth token present Approval mode is off per project by default. Reply /desktop_approve_on to any session card to gate Bash/Write/Edit on that project. $ # now go make coffee — your phone has the rest
Features
A personal assistant, not a demo
Everything runs in one process against one local SQLite file. Nothing here needs a second service.
Four surfaces, one process
Telegram, WhatsApp (Green API), Slack (Socket Mode) and a local web chat. Set BOT_MODE=all and they share the same sessions, memory and history.
No API key required
CLI mode shells out to the Claude Code CLI, so your existing subscription covers it. Prefer the API? Set CLAUDE_MODE=api and a key.
Memory that persists
/remember anything and it survives every reset — per-user memories with SQLite FTS5 search, export and import.
Multi-session conversations
Create, switch, rename, pin, archive and fork named sessions. Resume a Claude CLI session by id from your phone.
Knowledge base
Upload PDFs and docs with /kb; they're chunked, indexed and searchable, then quoted back with the answer.
Coding agent
/code and /project run end-to-end development tasks in a directory you nominate, with progress streamed to the chat.
Smart model routing
Trivial questions go to Haiku, hard ones to Opus, everything else to Sonnet — or pin a model with /model.
Cost tracking & budgets
Per-day and per-month ceilings with alerts before you hit them, and /usage for where the money went.
Media generation
Images, text-to-speech, music and video from a chat command — plus voice transcription and document extraction inbound.
MCP servers
Attach Model Context Protocol servers and Claude can use them from any of your messengers, with the resolved binary vetted first.
Health & self-healing
An HTTP /health endpoint with component status and DB write-path counters, circuit breakers, and a watchdog that restarts a wedged process.
Locked down by default
Flat allowlist per platform, web chat bound to loopback and refusing to start exposed without a token, and secrets masked in every log.
Platforms
Pick the one you already have open
Telegram is the most complete adapter; the others cover the core chat loop. The web chat needs no account anywhere, which makes it the fastest way to try Telechat.
| Telegram | Slack | Web chat | ||
|---|---|---|---|---|
| Bridge | Bot API | Green API free tier | Bolt + Socket Mode | Local aiohttp |
| Setup | Talk to @BotFather | Scan a QR code | Create a Slack app | Nothing — open the URL |
| Photos & files | Yes | Text only | Text only | Text only |
| Interactive UI | Inline buttons | — | Reactions as status | Full browser UI |
| Desktop bridge | Yes | — | — | — |
| Works without a public URL | Yes (polling) | Yes (polling) | Yes (WebSocket) | It is local |
| Works on corporate Wi-Fi | Depends | Yes | Yes | Yes |
How it compares
Against the other ways to get Claude in a chat
Most Claude-on-Telegram projects are a single-file script around one API call. Hosted assistants are the opposite trade: no setup, but your conversations live on someone else's box.
| Telechat | Typical bot script | Hosted AI assistant | |
|---|---|---|---|
| Where it runs | Your machine | Your machine | Vendor cloud |
| Cost model | Free with a Claude subscription | API tokens | Monthly seat |
| Messengers supported | Telegram + WhatsApp + Slack + web | One | Varies, usually one |
| Conversation storage | Local SQLite you can read | In memory, lost on restart | Vendor database |
| Claude Code integration | Desktop bridge with remote replies | — | — |
| Access to your files | Yours, scoped by config | Usually none | None |
| Runs as a service | launchd / systemd + watchdog | A terminal you can't close | Not yours to run |
| Auditable | MIT, tests in CI on 3.10–3.13 | Varies | Closed |
Telechat is a single-operator tool by design. If you need per-user isolation, roles or a shared workspace, use a hosted assistant — that is a different product, and SECURITY.md says so plainly.
Get started
Running in about three minutes
The only prerequisite is the Claude Code CLI, and only if you want the free CLI mode.
Install the Claude Code CLI
Skip this if you plan to use API mode with an ANTHROPIC_API_KEY.
$ npm install -g @anthropic-ai/claude-code $ claude auth login
Install Telechat
npm, pip, npx or from source — the CLI is the same either way.
# npm (recommended) $ npm install -g telechat # or pip $ pip install telechatai # or no install at all $ npx telechat init
Try it before configuring anything
One command, no bot token, no messenger account, nothing written to disk. It checks you have a way to reach Claude first, and says what to install if you don't.
$ telechat web Starting the local web chat — no messenger account needed. Claude: CLI mode (free with your Claude subscription) Web chat: http://localhost:8585
Run the setup wizard
telechat init is AI-guided: it opens the right pages, collects your tokens, validates them and writes your .env. Prefer plain prompts? Use telechat setup.
$ telechat init Which platforms? [telegram] whatsapp slack web Claude mode? [cli] api ✓ Token validated · ✓ Wrote ~/.telechat/.env ✓ Try it now: http://127.0.0.1:8585
Start it — and forget it
It runs detached, survives closing the terminal, and comes back after a crash. telechat doctor tells you what's wrong when something is.
$ telechat # start in the background $ telechat status # is it alive? $ telechat logs # tail the log $ telechat doctor # diagnose config + connectivity $ telechat bridge install # hook up Claude Code
Running in Docker? docker compose up -d starts it in API mode with a persistent volume for bot.db and a loopback-only health endpoint. Full reference: every environment variable, generated from the source.
Use cases
What people actually do with it
Babysit long Claude Code runs from the sofa
Kick off a refactor, close the laptop lid on the question of whether to keep the legacy flow, and answer it from Telegram when the card arrives. The session resumes without you touching the keyboard.
A second brain that survives restarts
/remember the things you keep re-explaining — stack, conventions, who owns what — and every future conversation on every platform starts with them already loaded.
Ask your own documents anything
Drop contracts, RFCs or a manual into the knowledge base and query them in the same thread where you ask everything else. The files never leave your disk except as prompt context.
Claude in a team channel, without a vendor
Socket Mode means no public URL and no inbound firewall rule. The bot lives on one laptop, answers in a channel, and the allowlist keeps it to the people you named.
From the community
Running Telechat? Tell us how
This space is for real quotes from real users, so it stays empty until there are some. If Telechat is part of your setup, open a discussion or an issue — what you built, what broke, what's missing. Both shape what ships next.
FAQ
Questions people ask first
Do I need an Anthropic API key?
ANTHROPIC_API_KEY is available if you prefer it, and is what the Docker image runs, since the container has no host Claude authentication.Where does my data go?
Does it need a public URL, a webhook or a tunnel?
127.0.0.1. Telechat works behind NAT, on a corporate network, and on a laptop that sleeps.What exactly is the Claude Desktop bridge?
~/.claude/settings.json. When a Claude Code session on your machine stops, needs input, or finishes a subagent, Telechat posts a triage card to Telegram summarising the result and surfacing any pending decision. Replying to the card injects your message into that session via claude --resume, and with --approval every Bash, Write and Edit call waits for a tap first.Can more than one person use it?
What does it cost?
/budget for daily and monthly ceilings plus alerts before you hit them.Which platform should I start with?
telechat web needs no account anywhere and writes nothing to disk. Telegram, if you want the full feature set — it is the only adapter with inline buttons, photo and file handling, and the Desktop bridge.Is it safe to run on my work laptop?
CLAUDE_CLI_WORK_DIR, keep the allowlist to yourself, and don't run it on a machine you don't trust.One command. Then it's just a chat.
Install it, answer four prompts, and message your own bot.
$ npm install -g telechat && telechat init