Skip to content

qingxuantang/claude-code-telegram-deploy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Claude Code Telegram Deploy

English | 中文


English

Open-source skills for deploying Claude Code on remote servers with Telegram integration, and for migrating a full OpenClaw agent (Soul, Memory, Skills, workspace identity) over to Claude Code.

Background: As of April 5, 2026, Anthropic blocked OpenClaw from using Claude Pro/Max subscriptions. These skills provide a first-party alternative using Claude Code's native Channels feature.

Skills

🚀 deploy-telegrammulti-platform: Linux + macOS + Windows

Deploy a Claude Code daemon that listens for messages over Telegram and replies through the same channel. The daemon runs as a separate process from any local interactive Claude Code (e.g. your Desktop app), sharing ~/.claude/skills/ and ~/CLAUDE.md so personality is consistent.

Structured as a thin core + platform overlays + shared references:

skills/deploy-telegram/
├── SKILL.md                              # Core: contract, architecture, do-not, platform router
├── platforms/
│   ├── linux.md                          # apt + systemd + tmux + GNU sed; remote SSH + local self-execution
│   ├── macos.md                          # brew + launchd (wrapper pattern) + tmux + BSD sed; Desktop App scope isolation
│   └── windows.md                        # winget + Task Scheduler + FileSystemWatcher + PowerShell hooks
└── references/
    ├── architecture-and-design.md        # bun-as-child-of-claude, server.ts patch, hooks, inbox mover
    ├── claude-md-rules.md                # channel-routing-rule + no-interactive-select-rule (both universal)
    ├── pairing-and-access.md             # /telegram:access pair + policy allowlist + access.json
    ├── process-supervisors.md            # systemd vs launchd vs Task Scheduler comparison
    ├── post-deploy-hardening.md          # 9 production incidents + their permanent fixes
    └── troubleshooting.md                # cross-platform decision tree

Validation status:

Platform Tested on Status
Linux Ubuntu 22.04 / 24.04 across 4 production servers (HK / SG / JP) Stable since 2026-04-07
macOS Mac mini (Darwin 24.6.0 arm64), macOS 15 (Sequoia) Stable since 2026-05-14 with 4 hardening fixes
Windows Windows 11 Pro 26100 + Desktop app 2.1.142 + Bun 1.3.14 End-to-end verified 2026-05-21

Common requirements (universal across platforms):

  • Telegram bot token from @BotFather /newbotmust be a fresh bot
  • Network access to api.telegram.org, github.com, api.anthropic.com (mainland-China networks blocked)
  • Existing Claude Code authentication (Desktop app login on Windows, or claude setup-token token on Linux/macOS)

Platform-specific notes:

  • Linux: supports both remote-SSH mode (controller agent → server) and local self-execution mode (e.g. OpenClaw migrating to CC on the same host)
  • macOS: requires --scope local plugin install to avoid Desktop App contending for the bot token (verified incident)
  • Windows: reuses the bundled claude.exe from %APPDATA%\Claude\claude-code\<version>\ — no separate npm install needed; PowerShell hooks (no Python dependency); no tmux automation (operator dismisses first-launch dialogs at the keyboard)

Migrate a complete OpenClaw agent to Claude Code — not just files, but the full identity, memory, and deployment.

What it does:

  • Inventories the real OpenClaw structure (workspace/SOUL.md, AGENTS.md, IDENTITY.md, TOOLS.md, MEMORY.md, memory/, skills/, agents/{name}/agent/agent.yaml, openclaw.json)
  • Merges SOUL.md + AGENTS.md + IDENTITY.md + TOOLS.md into a single CLAUDE.md
  • Auto-appends a mandatory Telegram Channel reply-tool rule to CLAUDE.md (fixes a real production bug — see Key Learnings)
  • Parses MEMORY.md into Claude Code's typed memory files (user / feedback / project / reference)
  • Archives daily memory logs for manual review
  • Copies all global and workspace-local skills (format is identical)
  • Extracts environment variables from openclaw.json for settings.json
  • Extracts and converts the model ID from agent.yaml (strips the anthropic/ provider prefix)
  • Provides per-plugin migration guidance (telegram → deploy-telegram skill, duckduckgo → built-in WebSearch, etc.)
  • Supports multi-agent setups (workspace-{name}/ via the AGENT_NAME parameter)
  • Physically deploys the migrated files into ~/.claude/ (not just a staging dir)
  • Optionally creates start-claude.sh and launches it in tmux with the Telegram channel attached
  • Never stops OpenClaw — designed for dual-track (OpenClaw + Claude Code running in parallel)

Each step is tagged with an automation policy: 🤖 AUTO / 🟡 AUTO-FIRST / 👤 MANUAL / 🚫 DO NOT — so agents know exactly what to execute and what to hand back to the user.

Design: Agent-First

These skills are designed to be executed by AI agents, not read by humans. Any agent (Claude Code, OpenClaw, Codex) can:

  1. Read the SKILL.md file
  2. Collect the required inputs from the user
  3. Execute each step sequentially
  4. Handle errors using the troubleshooting decision tree

The skills use deterministic shell commands — no judgment calls required.

Quick Start

For Claude Code users

# Option 1: Reference directly
"Use the skill at /path/to/skills/deploy-telegram/SKILL.md to deploy Claude Code on my server"

# Option 2: Copy to project
cp -r skills/deploy-telegram .claude/skills/

For humans (manual deployment)

Click to expand manual steps
  1. Create a Telegram bot via @BotFather → get bot token
  2. Run claude setup-token on a machine with a browser → get OAuth token
  3. SSH into your server
  4. Follow Steps 1–9 in deploy-telegram/SKILL.md
  5. Message your bot on Telegram → get pairing code
  6. Run the pairing command from the skill

Key Learnings

Hard-won discoveries from real deployments:

Pitfall Symptom Fix
Missing channelsEnabled: true Messages silently dropped, debug log shows "Channel notifications skipped" Add to ~/.claude/settings.json
Using --plugin-dir with --channels "skipped...from inline" in debug log Never combine these flags
Zombie bun/claude processes Telegram 409 Conflict error Kill all processes before restart
setup-token on headless server "Raw mode is not supported" error Run on machine with browser, copy token to server
Wrong env var name Auth fails silently Use CLAUDE_CODE_OAUTH_TOKEN (not CLAUDE_CODE_USE_CLAUDE_AI_TOKEN)
Mainland China servers All network checks fail Use servers in HK, SG, JP, US, EU
Plugin installed but disabled Plugin shows ✘ disabled in claude plugin list claude plugin enable telegram@claude-plugins-official
Reusing OpenClaw's bot token for Claude Code Telegram 409 Conflict (two polls) Always create a new bot from @BotFather
Missing --channels flag in startup script Bun MCP server never spawns Add --channels plugin:telegram@claude-plugins-official
Claude replies in terminal but user gets nothing tmux pane shows the reply, Telegram does not Claude forgot to call plugin:telegram:telegram - reply MCP tool. Add the Telegram Channel reply-tool rule to CLAUDE.md and restart the session
Migrate-openclaw v1: files staged but not deployed User sees staging dir but Claude Code sees nothing Skill now has an explicit Step 9 that copies into ~/.claude/
NVM not on PATH in non-interactive shells claude: command not found in startup script Source NVM in ~/.bashrc and in start-claude.sh
Telegram spams Allow/Deny permission cards on every tool call Edit/Write/Bash from Telegram triggers a 🔐 Permission: <tool> card even with --dangerously-skip-permissions and a full permissions.allow list Plugin server.ts declares 'claude/channel/permission': {} as an opt-in capability. Claude Code relays channel-session permission prompts to Telegram independently of terminal bypass flags. Comment out that single line and restart. Skill auto-patches this as Step 10b.
Claude silently stops responding mid-session tmux pane shows an "allow Claude to edit its own settings" dialog; Telegram gets no reply Hard-coded safety prompt fires whenever Claude edits any file under ~/.claude/ (e.g. tweaking a skill's own source). Not covered by --dangerously-skip-permissions, no settings switch. Recover by sending Down then Enter via tmux send-keys to pick option 2 — unblocks the session until next restart.
Local Claude Code keeps prompting for permission even with permissions.allow full-wildcard Edit/Write still pops a permission card despite permissions.allow: ["Bash(*)","Edit(*)",…] and skipDangerousModePermissionPrompt: true Those two keys only control the judgment after a check is triggered, not the check itself. Add permissions.defaultMode: "bypassPermissions" to ~/.claude/settings.json — equivalent to launching with --dangerously-skip-permissions every time. Six modes exist (default/acceptEdits/plan/auto/dontAsk/bypassPermissions); only the last truly silences prompts. Self-edit guard on ~/.claude/ files still cannot be bypassed.
Telegram user uploads a file → Claude session silently freezes Telegram user sends an image/PDF/xlsx, Claude tries to cp/Read it from ~/.claude/channels/telegram/inbox/, tmux pane freezes on "Claude requested permissions to edit … which is a sensitive file", Telegram gets nothing for minutes Hard-coded sensitive-file guard fires on any path under ~/.claude/, independent of all bypass flags including defaultMode: bypassPermissions. Fix architecturally: install a systemd --user path-unit that moves new files out of ~/.claude/channels/telegram/inbox/ to ~/telegram-inbox/ the instant they land (inotify, millisecond latency). Then update CLAUDE.md to instruct Claude to look at ~/telegram-inbox/ instead. The deploy-telegram skill automates this as Step 7b; the migrate-openclaw skill bakes the CLAUDE.md rule in. Recovery for an already-stuck session: tmux send-keys -t claude Down Enter to pick "always allow access to inbox/".
Slash commands sent over Telegram are NOT recognized by Claude Code User sends /model opus, /clear, /compact, /cost, /help etc. from Telegram. Instead of switching models / clearing context / compacting, Claude either replies "I can't change my own model" or processes the literal string as a user prompt Claude Code's slash-command parser only intercepts input typed directly into the local terminal. Messages arriving via the Telegram channel plugin are injected into the prompt stream, bypassing the CLI parser entirely. The model receives the literal string /model opus as a user message and has no way to act on it. There is no in-band remote way to trigger CLI-level operations (model switch, context clear, compact, cost, etc.) over Telegram. To change model: SSH into the server, edit ~/start-claude.sh to add --model <name> (or set env.ANTHROPIC_MODEL in ~/.claude/settings.json), then tmux kill-session -t claude && tmux new-session -d -s claude ~/start-claude.sh. To clear context remotely: same restart procedure (a fresh session has empty context).

The Telegram Channel Reply-Tool Rule

If you have a CLAUDE.md on a server running Claude Code with the Telegram channel, append this rule. It prevents a silent failure mode where Claude generates a reply but never actually sends it back to the user.

## Telegram Channel 强制规则(最高优先级 / Highest Priority)

When a message arrives via the Telegram channel (you see `← telegram · <user_id>:` in your input), you **MUST** reply by calling the `plugin:telegram:telegram - reply` MCP tool. Terminal text output is **NOT** delivered to the user — only explicit tool calls are.

Rules:
1. Every Telegram user message must be followed by at least one `plugin:telegram:telegram - reply` tool call.
2. Do not assume follow-up replies in the same session send automatically. Each new message needs its own explicit reply call.
3. Markdown written to the terminal is invisible to the user unless passed through the reply tool.
4. The task is not complete until the reply tool has been called successfully.

The migrate-openclaw skill appends this automatically when generating CLAUDE.md.

Architecture

┌──────────────┐
│  Telegram    │
│  (Phone)     │
└──────┬───────┘
       │ Bot API long-polling
       v
┌──────────────┐
│  bun         │  MCP server (child process of claude)
│  server.ts   │  Token: ~/.claude/channels/telegram/.env
└──────┬───────┘
       │ stdio (MCP protocol)
       v
┌──────────────┐
│  claude      │  CLI in tmux, managed by systemd
│  --channels  │  channelsEnabled: true in settings.json
└──────┬───────┘
       │ filesystem, git, bash, tools
       v
┌──────────────┐
│  Server      │
└──────────────┘

中文

开源技能集:在远程服务器上部署 Claude Code 并通过 Telegram 进行远程访问,以及把一整个 OpenClaw agent(Soul、Memory、Skills、workspace 身份)完整迁移到 Claude Code。

背景:2026 年 4 月 5 日起,Anthropic 封禁了 OpenClaw 使用 Claude Pro/Max 订阅。本项目提供基于 Claude Code 原生 Channels 功能的第一方替代方案。

技能列表

🚀 deploy-telegram多平台:Linux + macOS + Windows

部署一个 Claude Code daemon 进程,监听 Telegram 入站消息并通过同样的 channel 回复。Daemon 作为独立进程跟你本地交互用的 Claude Code(比如桌面版)并行运行,共享 ~/.claude/skills/~/CLAUDE.md,所以人格 / 技能一致,但 context 隔离、互不打扰。

结构是薄核心 + 平台 overlay + 共享 references

skills/deploy-telegram/
├── SKILL.md                              # 核心:契约、架构、do-not、平台路由
├── platforms/
│   ├── linux.md                          # apt + systemd + tmux + GNU sed;支持 remote SSH + local self-execution
│   ├── macos.md                          # brew + launchd(wrapper 模式)+ tmux + BSD sed;Desktop App 隔离
│   └── windows.md                        # winget + Task Scheduler + FileSystemWatcher + PowerShell hooks
└── references/
    ├── architecture-and-design.md        # bun 作为 claude 子进程、server.ts 补丁、hooks、inbox 搬运
    ├── claude-md-rules.md                # channel-routing-rule + no-interactive-select-rule(两条都跨平台必装)
    ├── pairing-and-access.md             # /telegram:access pair + policy allowlist + access.json
    ├── process-supervisors.md            # systemd vs launchd vs Task Scheduler 对比
    ├── post-deploy-hardening.md          # 9 个生产事故 + 永久修复
    └── troubleshooting.md                # 跨平台诊断决策树

验证状态

平台 验证环境 状态
Linux Ubuntu 22.04 / 24.04,4 台生产服务器(HK / SG / JP) 2026-04-07 以来稳定运行
macOS Mac mini(Darwin 24.6.0 arm64)、macOS 15 Sequoia 2026-05-14 以来稳定运行,含 4 个生产 hardening 修复
Windows Windows 11 Pro 26100 + Desktop app 2.1.142 + Bun 1.3.14 2026-05-21 端到端实测通过

通用前置条件(三平台共用):

  • @BotFather /newbot 创建的全新 Telegram bot token
  • 能访问 api.telegram.orggithub.comapi.anthropic.com(大陆网络过不了)
  • 已有 Claude Code 认证(Windows:Desktop app 登录态;Linux/macOS:claude setup-token 获取 token)

平台特有要点

  • Linux:支持远端 SSH 模式(控制端 agent → 服务器)和本地 self-execution 模式(例如 OpenClaw 在原机迁移到 CC)
  • macOS:必须用 --scope local 装插件以避免 Desktop App 抢 bot token(生产事故已验证)
  • Windows:复用 Desktop app 自带的 claude.exe(路径 %APPDATA%\Claude\claude-code\<version>\),不需要单独装 CLI;PowerShell hooks(不依赖 Python);不做 tmux 仿真——首次对话框由 operator 在键盘前手动按掉

🔄 migrate-openclaw — 迁移 OpenClaw

把一整个 OpenClaw agent 完整迁移到 Claude Code —— 不只是文件转换,还包括身份、记忆、部署全流程。

功能:

  • 清点真实的 OpenClaw 目录结构(workspace/SOUL.mdAGENTS.mdIDENTITY.mdTOOLS.mdMEMORY.mdmemory/skills/agents/{name}/agent/agent.yamlopenclaw.json
  • SOUL.md + AGENTS.md + IDENTITY.md + TOOLS.md 合并成单个 CLAUDE.md
  • CLAUDE.md 末尾自动追加 Telegram Channel 回复工具强制规则(修复真实踩过的坑,见踩坑经验)
  • MEMORY.md 解析成 Claude Code 的 typed memory 文件(user / feedback / project / reference 四类)
  • 把每日记忆日志归档到 archive/ 供手动 review
  • 复制所有全局和 workspace 级别的 skills(格式完全相同)
  • openclaw.json 提取环境变量供 settings.json 使用
  • agent.yaml 提取并转换模型 ID(自动去掉 anthropic/ 前缀)
  • 对每个插件给出迁移建议(telegram → deploy-telegram skill;duckduckgo → 内置 WebSearch 等)
  • 支持多 agent 场景(通过 AGENT_NAME 参数迁移 workspace-{name}/
  • 实际把迁移产物部署到 ~/.claude/,不只是生成 staging 目录
  • 可选地生成 start-claude.sh 并用 tmux 启动,自动挂上 Telegram channel
  • 绝不停 OpenClaw —— 设计为双轨运行(OpenClaw 和 Claude Code 并行)

每个步骤都有自动化策略标签: 🤖 AUTO / 🟡 AUTO-FIRST / 👤 MANUAL / 🚫 DO NOT,让 agent 明确知道哪些自动执行、哪些交给用户。

设计理念:Agent-First(代理优先)

这些技能专为 AI 代理执行而设计,而非供人类阅读。任何代理(Claude Code、OpenClaw、Codex)都可以:

  1. 读取 SKILL.md 文件
  2. 向用户收集所需输入参数
  3. 按顺序执行每个步骤
  4. 使用故障排除决策树处理错误

所有技能使用确定性的 Shell 命令 —— 不需要任何主观判断。

快速开始

Claude Code 用户

# 方式一:直接引用
"使用 /path/to/skills/deploy-telegram/SKILL.md 这个 skill 在我的服务器上部署 Claude Code"

# 方式二:复制到项目
cp -r skills/deploy-telegram .claude/skills/

手动部署

点击展开手动步骤
  1. 通过 @BotFather 创建 Telegram Bot → 获取 Bot Token
  2. 在有浏览器的机器上运行 claude setup-token → 获取 OAuth Token
  3. SSH 登录服务器
  4. 按照 deploy-telegram/SKILL.md 中的步骤 1–9 执行
  5. 在 Telegram 上给你的 Bot 发消息 → 获取配对码
  6. 执行 Skill 中的配对命令

踩坑经验

真实部署中的血泪教训:

症状 解决方案
缺少 channelsEnabled: true 消息静默丢弃,调试日志显示 "Channel notifications skipped" 添加到 ~/.claude/settings.json
--plugin-dir--channels 同时使用 调试日志中出现 "skipped...from inline" 永远不要同时使用这两个标志
僵尸 bun/claude 进程 Telegram 409 Conflict 错误 重启前先杀掉所有相关进程
在无头服务器上运行 setup-token "Raw mode is not supported" 错误 在有浏览器的机器上运行,将 Token 复制到服务器
环境变量名错误 认证静默失败 使用 CLAUDE_CODE_OAUTH_TOKEN(不是 CLAUDE_CODE_USE_CLAUDE_AI_TOKEN
中国大陆服务器 所有网络检查失败 使用港、新、日、美、欧等地区的服务器
插件安装后状态为 disabled claude plugin list 显示 ✘ disabled claude plugin enable telegram@claude-plugins-official
Claude Code 复用了 OpenClaw 的 bot token Telegram 409 Conflict(两端抢 long-polling) 一定要用 @BotFather 新建一个 bot
启动脚本漏了 --channels 参数 Bun MCP 服务器根本不会启动 加上 --channels plugin:telegram@claude-plugins-official
Claude 在终端里写了回复,但用户没收到 tmux 里能看到回复文本,Telegram 没收到 Claude 忘了调 plugin:telegram:telegram - reply MCP 工具。把 Telegram Channel 回复工具规则写进 CLAUDE.md 并重启 session
v1 的 migrate-openclaw:文件只 staging 没部署 用户能看到 staging 目录,但 Claude Code 读不到任何东西 新版 Skill 增加了 Step 9,显式把文件复制到 ~/.claude/
非交互式 shell 里 NVM 不在 PATH 启动脚本里 claude: command not found ~/.bashrcstart-claude.sh 里 source NVM
Telegram 每次调用工具都弹 Allow/Deny 权限卡片 即便 --dangerously-skip-permissions + permissions.allow 全开,Telegram 端一触发 Edit/Write/Bash 还是弹 🔐 Permission: <tool> 插件 server.ts 里声明了 opt-in 能力 'claude/channel/permission': {},Claude Code 会独立于终端 bypass 标志,把 channel 会话的权限请求转发到 Telegram。把那一行注释掉并重启即可。Skill 的 Step 10b 会自动打这个补丁。
Claude 跑着跑着突然不回复 tmux pane 卡在 "allow Claude to edit its own settings" 对话框,Telegram 收不到任何回复 只要 Claude 要编辑 ~/.claude/ 目录下的文件(比如改 skill 自己的源码),就会触发这个硬编码的安全确认。--dangerously-skip-permissions 绕不过去,settings.json 也没开关。恢复方式:通过 tmux send-keys 发送 Down + Enter 选第 2 项,可以让本 session 剩余时间内都不再弹(重启后会再来)。
本地 Claude Code 即便 permissions.allow 全通配也仍弹权限卡片 permissions.allow: ["Bash(*)","Edit(*)",…] + skipDangerousModePermissionPrompt: true 都加了,Edit/Write 还是弹卡 这两个 key 只控制"检查触发后的判定",并不抑制检查本身。在 ~/.claude/settings.json 里加 permissions.defaultMode: "bypassPermissions" 才是真正等价于每次都用 --dangerously-skip-permissions 启动。Schema 里六种 mode(default/acceptEdits/plan/auto/dontAsk/bypassPermissions),只有最后一个真正静默所有提示。但 ~/.claude/ 自编辑保护仍无法绕过。
Telegram 用户上传文件 → Claude session 静默卡死 用户从 Telegram 发图片/PDF/xlsx,Claude 想从 ~/.claude/channels/telegram/inbox/ 把文件 cp/Read 出来,tmux pane 卡在 "Claude requested permissions to edit … which is a sensitive file",Telegram 几分钟没回复 ~/.claude/ 下的 sensitive-file 硬编码保护对任何路径生效,所有 bypass 标志都没用,包括 defaultMode: bypassPermissions架构级解决方案:装一个 systemd --user 的 path-unit 监听 ~/.claude/channels/telegram/inbox/,新文件落盘瞬间(inotify,毫秒级)就 mv~/telegram-inbox/,然后改 CLAUDE.md 让 Claude 只看 ~/telegram-inbox/deploy-telegram skill 的 Step 7b 自动部署这个;migrate-openclaw skill 生成的 CLAUDE.md 自带这条规则。已经卡住的 sessiontmux send-keys -t claude Down Enter 选 "always allow access to inbox/" 解开。
通过 Telegram 发斜杠命令无法被 Claude Code 正确识别 从 Telegram 发 /model opus/clear/compact/cost/help 等斜杠命令,不会切换模型/清上下文/压缩——Claude 要么回一句"我没法切换自己的模型",要么把字面字符串当成普通 prompt 处理 Claude Code 的斜杠命令解析器拦截直接在终端键入的输入。Telegram channel plugin 发来的消息是注入到 prompt 流里的,完全绕过了 CLI 解析器。模型收到的是字面字符串 /model opus,自己没有能力切换自己。结论:所有 CLI 级操作(切模型、清上下文、压缩、查费用等)无法通过 Telegram 远程触发。 要切模型必须 SSH 到服务器,改 ~/start-claude.sh--model <名称>(或在 ~/.claude/settings.jsonenv 段加 ANTHROPIC_MODEL),然后 tmux kill-session -t claude && tmux new-session -d -s claude ~/start-claude.sh 重启。要远程清上下文:同样要重启 session(新 session 上下文为空)。

Telegram Channel 回复工具规则

如果你的服务器上运行着带 Telegram channel 的 Claude Code 且有 CLAUDE.md,务必把下面这条规则加进去。它防止一种静默失败:Claude 生成了回复,但从来没真正发回给用户。

## Telegram Channel 强制规则(最高优先级)

当消息来源是 Telegram channel(输入中看到 `← telegram · <user_id>:` 标记时),你**必须**通过调用 `plugin:telegram:telegram - reply` MCP 工具来回复用户,**不能**只在终端输出文本。终端里写的任何内容,用户在 Telegram 端**完全看不到**。

规则:
1. 每一条来自 Telegram 的用户消息,都必须对应**至少一次** `plugin:telegram:telegram - reply` 工具调用
2. 不要假设同一 session 里后续回复会自动发出 —— 每一条新消息都要重新显式调用 reply 工具
3. 终端里的 markdown / 代码块 / 解释,如果不通过 reply 工具发出,用户就收不到
4. 回复工具调用成功前,不算任务完成

migrate-openclaw skill 在生成 CLAUDE.md 时会自动追加这条规则。

架构图

┌──────────────┐
│  Telegram    │
│  (手机)      │
└──────┬───────┘
       │ Bot API 长轮询
       v
┌──────────────┐
│  bun         │  MCP 服务器(claude 的子进程)
│  server.ts   │  Token 位置:~/.claude/channels/telegram/.env
└──────┬───────┘
       │ stdio(MCP 协议)
       v
┌──────────────┐
│  claude      │  在 tmux 中运行的 CLI,由 systemd 管理
│  --channels  │  settings.json 中需要 channelsEnabled: true
└──────┬───────┘
       │ 文件系统、git、bash、工具
       v
┌──────────────┐
│  服务器       │
└──────────────┘

License

MIT

About

Use Telegram as main communicator with Claude code on Linux, MacOS and Windows devices. All tested and running.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors