{"id":50876144,"url":"https://github.com/bujosa/claude-telegram-server","last_synced_at":"2026-06-15T10:01:39.975Z","repository":{"id":346452131,"uuid":"1189031110","full_name":"bujosa/claude-telegram-server","owner":"bujosa","description":"Run Claude Code as a 24/7 Telegram bot on any machine. Send messages from your phone — Claude reads your files, writes code, runs commands, and replies in Telegram. Supports macOS, Linux, and Windows.","archived":false,"fork":false,"pushed_at":"2026-05-03T21:57:20.000Z","size":74,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-17T14:58:25.932Z","etag":null,"topics":["ai","ai-assistant","anthropic","automation","chatbot","claude","claude-code","claude-code-telegram","developer-tools","headless-server","mcp","remote-development","telegram","telegram-bot"],"latest_commit_sha":null,"homepage":"https://docs.anthropic.com/en/docs/claude-code","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bujosa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-22T22:36:25.000Z","updated_at":"2026-05-03T21:57:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/bujosa/claude-telegram-server","commit_stats":null,"previous_names":["bujosa/claude-telegram-server"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bujosa/claude-telegram-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bujosa%2Fclaude-telegram-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bujosa%2Fclaude-telegram-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bujosa%2Fclaude-telegram-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bujosa%2Fclaude-telegram-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bujosa","download_url":"https://codeload.github.com/bujosa/claude-telegram-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bujosa%2Fclaude-telegram-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34357282,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-assistant","anthropic","automation","chatbot","claude","claude-code","claude-code-telegram","developer-tools","headless-server","mcp","remote-development","telegram","telegram-bot"],"created_at":"2026-06-15T10:01:37.966Z","updated_at":"2026-06-15T10:01:39.966Z","avatar_url":"https://github.com/bujosa.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Claude Code Telegram Server\n\nTurn any computer into a 24/7 Claude Code assistant you can talk to from Telegram. Send a message from your phone — Claude reads your files, writes code, runs commands, and replies right back.\n\n\u003e **Heads-up (April 2026):** if you're setting this up on macOS, read\n\u003e [`docs/postmortem-2026-04-07.md`](docs/postmortem-2026-04-07.md) first.\n\u003e The `yes |` line in the original launch instructions causes claude to fall\n\u003e back to `--print` mode and trigger a 100 MB/sec ArrayBuffer leak that can\n\u003e freeze the entire machine within 90 seconds. The launcher and watchdog in\n\u003e `scripts/` were rewritten to v4 to address this and four other latent bugs.\n\u003e Most relevant: use `claude setup-token` (not `claude auth login`) for\n\u003e headless setups, and let `setup.sh` install the plugin so it actually\n\u003e verifies the install.\n\n## How It Works\n\n```\n┌──────────────┐         ┌─────────────────────────┐         ┌──────────────┐\n│              │         │    Your Server (any OS)  │         │              │\n│   Telegram   │────────▶│  tmux / screen session   │────────▶│  Your Code   │\n│   on phone   │◀────────│  Claude Code + Plugin    │◀────────│  \u0026 Terminal  │\n│              │         │                          │         │              │\n└──────────────┘         └─────────────────────────┘         └──────────────┘\n```\n\n1. You message your Telegram bot from anywhere\n2. The official Telegram plugin pushes the message into Claude Code\n3. Claude reads files, edits code, runs tests, makes commits — whatever you ask\n4. Claude replies directly in your Telegram chat\n\nIt's like having your IDE in your pocket.\n\n## Requirements\n\n| Requirement | Details |\n|-------------|---------|\n| **Claude Code** | v2.1.80+ ([install guide](https://docs.anthropic.com/en/docs/claude-code)) |\n| **Claude subscription** | Pro, Max, Team, or Enterprise (OAuth login) |\n| **Node.js** | v18+ |\n| **Bun** | Required for channel plugins |\n| **tmux or screen** | To keep the session alive after disconnecting |\n| **Telegram account** | To create a bot via BotFather |\n\n## Quick Start\n\n### Step 1 — Install Claude Code\n\n```bash\nnpm install -g @anthropic-ai/claude-code\n```\n\nAuthenticate with your Claude subscription. Pick the right command for your setup:\n\n**On a graphical Mac (browser available locally):**\n\n```bash\nclaude auth login --claudeai\n```\n\nThis opens a browser, you sign in, and the token lands in macOS Keychain.\n\n**On a headless server (SSH-only, no browser, repurposed Mac mini, etc.):**\n\n```bash\nclaude setup-token\n```\n\n`setup-token` prints a URL *and* waits on stdin for the code. Open the URL on\nany device with a browser, sign in with your Claude subscription, copy the\ncode it gives you back, and paste it into the running `claude setup-token`\nprompt. You'll get a long-lived `sk-ant-oat01-…` token. Save it as an env file:\n\n```bash\necho 'export CLAUDE_CODE_OAUTH_TOKEN=\"sk-ant-oat01-…\"' \u003e ~/.claude-auth.env\nchmod 600 ~/.claude-auth.env\n```\n\nThe launcher in `scripts/watchdog/claude-safe-launch.sh` sources this file\non every claude launch, so the token survives across reboots and restarts.\n\n\u003e Why two paths: `claude auth login --claudeai` exits immediately after\n\u003e printing the URL — it does not wait for a code paste-back, so it's only\n\u003e useful when there's a local browser+keychain on the same machine. See\n\u003e [`docs/postmortem-2026-04-07.md`](docs/postmortem-2026-04-07.md) for the\n\u003e full story.\n\n### Step 2 — Install Bun\n\nClaude Code plugins run on Bun.\n\n**macOS / Linux:**\n\n```bash\ncurl -fsSL https://bun.sh/install | bash\n```\n\n**Windows (PowerShell):**\n\n```powershell\nirm bun.sh/install.ps1 | iex\n```\n\n### Step 3 — Create a Telegram Bot\n\n1. Open [@BotFather](https://t.me/BotFather) in Telegram\n2. Send `/newbot`\n3. Pick a name and a username (must end in `bot`)\n4. Copy the **token** BotFather gives you\n\n### Step 4 — Install the Telegram Plugin\n\n```bash\n# Add the official plugin marketplace\nclaude plugin marketplace add anthropics/claude-plugins-official\n\n# Install the plugin\nclaude plugin install telegram@claude-plugins-official\n```\n\n### Step 5 — Configure Your Bot Token\n\n```bash\nmkdir -p ~/.claude/channels/telegram\necho 'TELEGRAM_BOT_TOKEN=\u003cyour-token-here\u003e' \u003e ~/.claude/channels/telegram/.env\n```\n\nReplace `\u003cyour-token-here\u003e` with the token from BotFather.\n\n### Step 6 — Launch Claude Code with Telegram\n\n\u003e **Do NOT use `yes |` here.** Piping stdin into claude triggers `--print`\n\u003e mode and the ArrayBuffer leak ([#32729][32729]) — your machine *will*\n\u003e freeze within 90 seconds. Use a real tmux pty instead. The launcher in\n\u003e `scripts/watchdog/claude-safe-launch.sh` does this correctly.\n\n```bash\nclaude --channels plugin:telegram@claude-plugins-official\n```\n\n[32729]: https://github.com/anthropics/claude-code/issues/32729\n\nYou should see:\n\n```\nListening for channel messages from: plugin:telegram@claude-plugins-official\n```\n\n### Step 7 — Pair Your Telegram Account\n\n1. Send any message to your bot in Telegram\n2. The bot replies with a **pairing code**\n3. In Claude Code, type:\n\n```\n/telegram:access pair \u003ccode\u003e\n```\n\n### Step 8 — Lock It Down\n\nSet the access policy to **allowlist** so only you can use the bot:\n\n```\n/telegram:access policy allowlist\n```\n\nAnyone else who messages the bot will be silently ignored.\n\n### That's It\n\nMessage your bot from Telegram. Claude Code responds.\n\n## Running 24/7\n\nThe bot only works while Claude Code is running. To keep it alive permanently, use a terminal multiplexer.\n\n### With tmux\n\n```bash\n# Start a detached session\ntmux new-session -d -s claude-telegram \\\n  'claude --channels plugin:telegram@claude-plugins-official'\n\n# Verify it's running\ntmux list-sessions\n\n# Attach to see output\ntmux attach -t claude-telegram\n\n# Detach without stopping: Ctrl+B, then D\n```\n\n### With screen\n\n```bash\nscreen -dmS claude-telegram \\\n  claude --channels plugin:telegram@claude-plugins-official\n\n# Reattach\nscreen -r claude-telegram\n\n# Detach: Ctrl+A, then D\n```\n\n### Auto-Start on Boot (Recommended)\n\nIf the machine reboots (power outage, update, crash), the bot won't come back on its own unless you configure auto-start.\n\n**macOS (LaunchAgent):**\n\nCreate `~/Library/LaunchAgents/com.claude.telegram.plist`:\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003c!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\"\n  \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\"\u003e\n\u003cplist version=\"1.0\"\u003e\n\u003cdict\u003e\n    \u003ckey\u003eLabel\u003c/key\u003e\n    \u003cstring\u003ecom.claude.telegram\u003c/string\u003e\n    \u003ckey\u003eProgramArguments\u003c/key\u003e\n    \u003carray\u003e\n        \u003cstring\u003e/bin/zsh\u003c/string\u003e\n        \u003cstring\u003e-c\u003c/string\u003e\n        \u003cstring\u003esleep 10 \u0026amp;\u0026amp; export PATH=/opt/homebrew/bin:$HOME/.bun/bin:$PATH \u0026amp;\u0026amp; tmux kill-session -t claude-telegram 2\u003e/dev/null; tmux new-session -d -s claude-telegram \"export PATH=/opt/homebrew/bin:$HOME/.bun/bin:$PATH \u0026amp;\u0026amp; yes | claude --channels plugin:telegram@claude-plugins-official --dangerously-skip-permissions --permission-mode bypassPermissions\"\u003c/string\u003e\n    \u003c/array\u003e\n    \u003ckey\u003eRunAtLoad\u003c/key\u003e\n    \u003ctrue/\u003e\n    \u003ckey\u003eStandardOutPath\u003c/key\u003e\n    \u003cstring\u003e/tmp/claude-telegram.log\u003c/string\u003e\n    \u003ckey\u003eStandardErrorPath\u003c/key\u003e\n    \u003cstring\u003e/tmp/claude-telegram.err\u003c/string\u003e\n\u003c/dict\u003e\n\u003c/plist\u003e\n```\n\nKey details about this LaunchAgent:\n\n- **`sleep 10`** — waits for the network to be ready after boot\n- **`yes |`** — auto-accepts the workspace trust dialog that Claude Code shows on first launch\n- **`--permission-mode bypassPermissions`** — skips the trust folder and bypass permissions prompts\n- **`--dangerously-skip-permissions`** — skips all command permission checks\n\nWithout `yes |` and `--permission-mode bypassPermissions`, Claude Code will get stuck on interactive prompts after a reboot and the bot won't respond.\n\nLoad it:\n\n```bash\nlaunchctl load ~/Library/LaunchAgents/com.claude.telegram.plist\n```\n\nVerify it's loaded:\n\n```bash\nlaunchctl list | grep claude\n```\n\nCheck logs after a reboot:\n\n```bash\ntail -f /tmp/claude-telegram.log\n```\n\n\u003e **Note:** The LaunchAgent launches a tmux session, so even after auto-start you can attach to it with `tmux attach -t claude-telegram` to see what Claude is doing.\n\n### With systemd (Linux)\n\nCreate `/etc/systemd/system/claude-telegram.service`:\n\n```ini\n[Unit]\nDescription=Claude Code Telegram Bot\nAfter=network-online.target\nWants=network-online.target\n\n[Service]\nType=simple\nUser=your-username\nEnvironment=PATH=/usr/local/bin:/usr/bin:/bin:/home/your-username/.bun/bin\nExecStart=/usr/local/bin/claude --channels plugin:telegram@claude-plugins-official\nRestart=on-failure\nRestartSec=10\nWorkingDirectory=/home/your-username\n\n[Install]\nWantedBy=multi-user.target\n```\n\n```bash\nsudo systemctl daemon-reload\nsudo systemctl enable --now claude-telegram\n```\n\n## Platform Guides\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e🐧 Linux (Ubuntu / Debian)\u003c/strong\u003e\u003c/summary\u003e\n\n### Install dependencies\n\n```bash\n# Node.js\ncurl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -\nsudo apt install -y nodejs\n\n# Bun\ncurl -fsSL https://bun.sh/install | bash\n\n# tmux\nsudo apt install -y tmux\n\n# Claude Code\nnpm install -g @anthropic-ai/claude-code\n```\n\n### Enable SSH\n\n```bash\nsudo apt install -y openssh-server\nsudo systemctl enable --now ssh\n```\n\n### Set static IP (Netplan)\n\nEdit `/etc/netplan/01-config.yaml`:\n\n```yaml\nnetwork:\n  version: 2\n  ethernets:\n    eth0:\n      addresses: [10.0.0.19/24]\n      routes:\n        - to: default\n          via: 10.0.0.1\n      nameservers:\n        addresses: [8.8.8.8, 8.8.4.4]\n```\n\n```bash\nsudo netplan apply\n```\n\n### Disable sleep\n\n```bash\nsudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e🪟 Windows\u003c/strong\u003e\u003c/summary\u003e\n\n### Install dependencies\n\n```powershell\n# Node.js\nwinget install OpenJS.NodeJS\n\n# Bun\nirm bun.sh/install.ps1 | iex\n\n# Claude Code\nnpm install -g @anthropic-ai/claude-code\n```\n\n### Keep it running\n\nFor always-on operation, use one of these methods:\n\n**Task Scheduler:** Create a task that runs at login:\n\n```\nclaude --channels plugin:telegram@claude-plugins-official\n```\n\n**NSSM (service wrapper):**\n\n```powershell\nnssm install ClaudeTelegram \"C:\\Program Files\\nodejs\\claude.cmd\" \"--channels plugin:telegram@claude-plugins-official\"\nnssm start ClaudeTelegram\n```\n\n### Set static IP\n\nSettings \u003e Network \u0026 Internet \u003e Wi-Fi/Ethernet \u003e Edit IP \u003e Manual\n\nOr via PowerShell:\n\n```powershell\nNew-NetIPAddress -InterfaceAlias \"Wi-Fi\" -IPAddress 10.0.0.19 -PrefixLength 24 -DefaultGateway 10.0.0.1\nSet-DnsClientServerAddress -InterfaceAlias \"Wi-Fi\" -ServerAddresses 8.8.8.8,8.8.4.4\n```\n\n### Disable sleep\n\n```powershell\npowercfg /change standby-timeout-ac 0\npowercfg /change hibernate-timeout-ac 0\npowercfg /change monitor-timeout-ac 0\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e🍎 macOS\u003c/strong\u003e\u003c/summary\u003e\n\n### Install dependencies\n\n```bash\n# Homebrew\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\necho 'eval $(/opt/homebrew/bin/brew shellenv)' \u003e\u003e ~/.zshrc\n\n# Node.js \u0026 tmux\nbrew install node tmux\n\n# Bun\ncurl -fsSL https://bun.sh/install | bash\n\n# Claude Code\nnpm install -g @anthropic-ai/claude-code\n```\n\n### Set static IP\n\n```bash\nsudo networksetup -setmanual Wi-Fi 10.0.0.19 255.255.255.0 10.0.0.1\nsudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4\n```\n\n\u003e **Important:** On macOS, CLI-configured static IPs may not persist across reboots. For reliability, set it via **System Settings \u003e Network \u003e Wi-Fi \u003e Details \u003e TCP/IP \u003e Manually**.\n\n### Disable sleep\n\n```bash\nsudo pmset -a sleep 0 displaysleep 0 disksleep 0 \\\n  standby 0 autopoweroff 0 hibernatemode 0 networkoversleep 0\n```\n\n### Enable SSH\n\n```bash\nsudo systemsetup -setremotelogin on\n```\n\n### Headless MacBook?\n\nIf you're repurposing a MacBook as a dedicated server, check out the full walkthrough:\n\n**[→ Headless MacBook Server Guide](guides/headless-macbook/README.md)**\n\nCovers fake HDMI adapters, Wi-Fi issues with the lid closed, auto-start on boot, SSH setup, and common troubleshooting.\n\n\u003c/details\u003e\n\n## Security\n\n- **Allowlist mode** — Only paired Telegram IDs can interact with the bot. Everyone else is silently dropped\n- **Permission prompts** — Claude Code asks for approval before running potentially dangerous operations. These prompts can only be approved in the local terminal, not from Telegram\n- **OAuth tokens** — Stored locally on the server, no API keys exposed\n- **Bot token** — Stored in `~/.claude/channels/telegram/.env` — keep it private and out of version control\n\n### Bypassing Permission Prompts (Dangerous)\n\n\u003e **WARNING:** This gives Claude Code full unrestricted access to your machine. Only use this on a dedicated server where you are the sole user and the Telegram allowlist is properly configured.\n\nBy default, Claude Code asks for confirmation before running shell commands, editing files, and other potentially destructive operations. When running as a Telegram bot, these prompts **block the entire session** — they can only be approved from the local terminal, not from Telegram.\n\nIf your bot stops responding, it's probably stuck on a permission prompt. Check by attaching to the tmux session:\n\n```bash\ntmux attach -t claude-telegram\n```\n\nTo skip all permission prompts on a dedicated server, use the `--dangerously-skip-permissions` flag:\n\n```bash\nclaude --channels plugin:telegram@claude-plugins-official --dangerously-skip-permissions\n```\n\nIn tmux for 24/7 operation:\n\n```bash\ntmux new-session -d -s claude-telegram \\\n  'claude --channels plugin:telegram@claude-plugins-official --dangerously-skip-permissions'\n```\n\n**When to use this:**\n\n- The machine is dedicated to Claude Code (not your daily driver)\n- The Telegram allowlist is configured (only your account can message the bot)\n- The machine is on a trusted network\n- You understand that Claude can execute any command without asking\n\n**When NOT to use this:**\n\n- On your primary development machine\n- On shared servers or multi-user environments\n- If untrusted users could potentially message the bot\n- If the machine has access to production systems or sensitive credentials\n\n## Example Prompts\n\nOnce your bot is live, try these from Telegram:\n\n```\n\"list all TODO comments in the codebase\"\n\"the login endpoint returns 500 — find and fix the bug\"\n\"add input validation to the signup form\"\n\"run the test suite and report results\"\n\"create a new branch, fix the typo in README, and commit\"\n\"what changed in the last 5 commits?\"\n\"set up a new Express API with TypeScript\"\n```\n\n## FAQ\n\n**Does my computer need to stay on?**\nYes. Claude Code must be running for the bot to respond. Use tmux + a startup service so it auto-starts on boot.\n\n**Can I use an API key instead of a subscription?**\nThe `--channels` flag requires OAuth login with a Claude subscription (Pro/Max/Team/Enterprise). Console API keys don't support channels.\n\n**Can multiple people use the bot?**\nYes. Add more Telegram IDs to the allowlist:\n```\n/telegram:access allow \u003ctelegram-user-id\u003e\n```\n\n**Does it work on a Raspberry Pi / ARM device?**\nClaude Code requires Node.js 18+ and Bun, both of which run on ARM64 Linux. If your device runs a 64-bit OS, it should work.\n\n**Can Claude see my screen or browser?**\nNo. Claude Code works with files and terminal only. For browser testing, configure a [Playwright](https://playwright.dev/) or [Puppeteer](https://pptr.dev/) MCP server.\n\n**What happens if the session crashes?**\nUse a process supervisor (systemd on Linux, LaunchAgent on macOS, NSSM on Windows) to auto-restart it.\n\n## References\n\n- [Claude Code Channels \u0026 Telegram setup walkthrough](https://x.com/trq212/status/2034761016320696565) — Community post that inspired this project\n- [Claude Code Official Documentation](https://docs.anthropic.com/en/docs/claude-code) — Installation, configuration, and features\n- [Claude Code Channels Guide](https://docs.anthropic.com/en/docs/claude-code/channels) — Official docs on the Channels feature (research preview)\n- [Claude Code Plugins](https://docs.anthropic.com/en/docs/claude-code/plugins) — How plugins and marketplaces work\n\n## Watchdog (CPU Burn Fix)\n\nClaude Code has a [known bug](https://github.com/anthropics/claude-code/issues/22275) where processes keep running at 80-100% CPU after sessions close. This affects all platforms and has been open since October 2025 with no official fix.\n\nThe watchdog script runs every 5 minutes and kills:\n- Orphaned `caffeinate` processes (macOS)\n- Claude processes burning \u003e80% CPU with no terminal attached\n- Orphaned child processes from dead sessions\n\n**[→ Watchdog Setup Guide](scripts/watchdog/README.md)**\n\nQuick test (dry run, no kills):\n\n```bash\nDRY_RUN=true bash scripts/watchdog/claude-watchdog.sh\n```\n\n## Guides\n\n| Guide | Description |\n|-------|-------------|\n| [Headless MacBook Server](guides/headless-macbook/README.md) | Complete walkthrough for running on a MacBook with no monitor |\n| [Watchdog](scripts/watchdog/README.md) | Auto-kill hung Claude Code processes that burn CPU |\n\n## License\n\nMIT","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbujosa%2Fclaude-telegram-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbujosa%2Fclaude-telegram-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbujosa%2Fclaude-telegram-server/lists"}