Bot-based system to interact with Claude CLI on remote machines
Project description
Codecast
One bot to manage AI coding agents across all your machines
Send a message from Discord, Telegram, or Lark. It reaches an AI coding agent on your GPU server, cloud VM, or any SSH-accessible machine — and streams the response back in real time.
How is this different from the official Claude Discord bot?
The official Claude bot gives you a single conversation with Claude in the cloud. Codecast is fundamentally different:
| Official Claude Bot | Codecast | |
|---|---|---|
| Where Claude runs | Anthropic's cloud | Your own machines (GPU servers, VMs, dev boxes) |
| Session management | One conversation | Multiple persistent sessions across multiple machines |
| Code access | No file system access | Full access to your projects via Claude CLI |
| AI backends | Claude only | Claude, Codex (OpenAI), Gemini CLI, OpenCode |
| Chat platforms | Discord only | Discord, Telegram, Lark (Feishu) |
| Multiplexing | One bot = one conversation | One bot = many machines x many sessions |
Codecast turns your chat app into a remote control panel for AI coding agents running on your infrastructure.
Architecture
You (Discord / Telegram / Lark)
|
v
+------------------+ SSH tunnel +------------------+
| Head Node | -----------------------> | Daemon |
| (Python) | JSON-RPC + SSE | (Rust) |
| | | |
| - Bot adapters | Can manage multiple | - Axum HTTP |
| - Engine | machines in parallel | - Session pool |
| - SSH tunnels | | - CLI adapters |
+------------------+ +--------+---------+
|
stdin/stdout
|
+--------v---------+
| AI CLI Agent |
| Claude / Codex |
| Gemini / OpenCode|
+------------------+
A single Head Node connects to any number of remote machines. Each machine runs a lightweight Rust daemon that manages AI CLI processes. Sessions persist across disconnects — detach from your phone, resume from your laptop.
Quick Start
pip install codecast
cp config.example.yaml ~/.codecast/config.yaml
$EDITOR ~/.codecast/config.yaml # add machines + bot token
codecast
Then open your chat app and type /start my-server ~/projects/myapp.
Key Features
Multi-Machine Session Management
Connect any number of servers. Each session has a human-friendly name (e.g., bright-falcon). Detach with /exit, resume with /resume bright-falcon from any device.
Multiple AI Backends
Not just Claude. Start sessions with different AI CLIs:
/start my-server ~/project --cli codex
/start gpu-box ~/ml-project --cli gemini
/start dev-vm ~/webapp --cli claude
Three Chat Platforms
- Discord — slash commands, autocomplete, interactive buttons
- Telegram — inline keyboards, file sharing, HTML formatting
- Lark (Feishu) — rich text messages, WebSocket connection
Interactive Questions
When an AI agent asks you a question with options, Codecast presents it with native UI elements — buttons on Discord, inline keyboards on Telegram — so you can tap to respond instead of typing.
Permission Modes
Control how much autonomy the AI agent has:
| Mode | Behavior |
|---|---|
auto |
Full autonomy — no confirmations |
code |
Auto-accept file edits, confirm shell commands |
plan |
Read-only analysis |
ask |
Confirm every action |
Real-Time Streaming
Responses stream back as the AI types. Choose how tool calls are displayed:
- timer (default) — clean "Working 5s" indicator, results sent at end
- append — see each tool call as it happens
- batch — summary of all tool calls at end
SSH Security
The daemon binds to 127.0.0.1 only — never exposed to the internet. All communication goes through SSH tunnels. The daemon binary is auto-deployed to remote machines via SCP.
Commands
| Command | What it does |
|---|---|
/start <machine> <path> |
Start a new session (add --cli codex etc.) |
/resume <name> |
Resume a detached session |
/new |
New session, same directory |
/exit |
Detach (process keeps running) |
/stop |
Interrupt current operation |
/model <name> |
Switch AI model |
/mode <auto|code|plan|ask> |
Switch permission mode |
/tool-display <timer|append|batch> |
Switch tool display mode |
/ls machine |
List machines |
/ls session |
List sessions |
/status |
Current session info |
/health |
Daemon health check |
See the full command reference for all commands.
Documentation
Full documentation: chivier.github.io/codecast (English & Chinese)
| Guide | Description |
|---|---|
| Getting Started | Installation, first session walkthrough |
| Configuration | Config format, peers, bot tokens |
| Commands | Every command with examples |
| Architecture | System design and internals |
Requirements
- Python 3.11+ — head node
- SSH access — to remote machine(s) with an AI CLI installed (Claude, Codex, Gemini, or OpenCode)
- Bot token — for Discord, Telegram, and/or Lark
The Rust daemon binary is auto-deployed. To build from source:
cargo build --release
# Binary: target/release/codecast-daemon
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file codecast-0.3.0.tar.gz.
File metadata
- Download URL: codecast-0.3.0.tar.gz
- Upload date:
- Size: 173.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d993e363abdb9cd798d5ec8793b4ce0219598cfda900cc99517e71a87f250122
|
|
| MD5 |
8b1317bc63cc245b8f9a67047b472fd1
|
|
| BLAKE2b-256 |
caaa1c56811134c7da46472c7a3b45c1d18cb7d164a5fbb958eb6d20c49905ba
|
Provenance
The following attestation bundles were made for codecast-0.3.0.tar.gz:
Publisher:
release.yml on Chivier/codecast
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
codecast-0.3.0.tar.gz -
Subject digest:
d993e363abdb9cd798d5ec8793b4ce0219598cfda900cc99517e71a87f250122 - Sigstore transparency entry: 1264204683
- Sigstore integration time:
-
Permalink:
Chivier/codecast@236252b1d629cab1fa153c016d010096cc4d1dd3 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/Chivier
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@236252b1d629cab1fa153c016d010096cc4d1dd3 -
Trigger Event:
push
-
Statement type: