Bot-based system to interact with Claude CLI on remote machines
Project description
Codecast
Control Claude CLI on remote machines from Discord & Telegram
Send a message in Discord or Telegram. It reaches Claude CLI on your GPU server, your cloud VM, or any machine with SSH access — and streams the response back in real time.
Why Codecast?
| Problem | Solution |
|---|---|
| Claude CLI only runs locally | Run it on any remote machine via SSH |
| Lose context when you close the terminal | Sessions persist — detach and resume anytime |
| Can't use Claude on mobile | Chat through Discord or Telegram from any device |
| Managing multiple dev machines is tedious | One bot, many machines — switch with a command |
Architecture
Quick Start
Prerequisites: Python 3.11+, Rust/cargo, SSH access to a remote machine with Claude CLI installed.
pip install codecast
Configure:
cp config.example.yaml ~/.codecast/config.yaml
$EDITOR ~/.codecast/config.yaml # add machines + bot token
Run:
codecast
Then open Discord or Telegram and type /start my-server ~/projects/myapp.
Key Features
- Persistent sessions — Claude CLI runs as a long-lived process; context survives across messages
- SSH tunnels — daemon binds to localhost only, never exposed to the internet
- Detach & resume —
/exitkeeps the session alive,/resumepicks it back up - Multiple machines — connect any number of servers, switch between them
- Permission modes —
auto(full autonomy),code(auto-edit files),plan(read-only),ask(confirm everything) - Real-time streaming — responses stream back via SSE as Claude types
- Mobile-friendly — works from any device with Discord or Telegram
Commands
| Command | What it does |
|---|---|
/start <machine> <path> |
Start a new Claude session |
/resume <name> |
Resume a detached session |
/new |
New session, same directory |
/clear |
Fresh context, same directory |
/exit |
Detach (process keeps running) |
/ls machine |
List machines |
/ls session |
List sessions |
/mode <auto|code|plan|ask> |
Switch permission mode |
/status |
Current session info |
/health |
Daemon health check |
See Commands Reference for the full list.
Documentation
| Guide | Description |
|---|---|
| Getting Started | Installation, first session walkthrough |
| Adding a Discord Bot | Create a Discord Application step by step |
| Adding a Telegram Bot | Create a Telegram bot via BotFather |
| Adding a Server | SSH config, jump hosts, password auth |
| Commands Reference | Every command with examples |
Configuration
Config files are searched in order:
- CLI argument:
codecast /path/to/config.yaml ~/.codecast/config.yaml./config.yaml(dev fallback)
Requirements
- Python 3.11+ — head node
- SSH access — to remote machine(s) with Claude CLI installed
- Bot token — Discord and/or Telegram
- Rust toolchain (optional) — only needed to build the daemon binary from source
Building the Daemon (optional)
The head node (Python) installs without Rust. The daemon binary is a separate Rust project that runs on remote machines. If you need to build it from source:
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
# Build the daemon
git clone https://github.com/Chivier/codecast.git
cd codecast
cargo build --release
# Binary at: target/release/codecast-daemon
Note: On some systems you may also need a C compiler and development headers:
- Debian/Ubuntu:
sudo apt install build-essential pkg-config libssl-dev- Fedora/RHEL:
sudo dnf install gcc pkg-config openssl-devel- macOS:
xcode-select --install
One-line Install (from source)
curl -fsSL https://raw.githubusercontent.com/Chivier/codecast/main/scripts/install.sh | bash
This clones the repo, creates a virtualenv, installs Python dependencies, and optionally builds the daemon if Rust is available.
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.2.12.tar.gz.
File metadata
- Download URL: codecast-0.2.12.tar.gz
- Upload date:
- Size: 151.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
118669d0e3b7fd259e1ea9c2a2f1b036db81d0c49503c8832d40389251b67bd2
|
|
| MD5 |
1904c5e1bcfcfb9bee9b37be330f1b7c
|
|
| BLAKE2b-256 |
636380b0b515011ccd4f38eaf60e7126fb8b31542611fb396cbdf7555bbcf263
|
Provenance
The following attestation bundles were made for codecast-0.2.12.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.2.12.tar.gz -
Subject digest:
118669d0e3b7fd259e1ea9c2a2f1b036db81d0c49503c8832d40389251b67bd2 - Sigstore transparency entry: 1139722953
- Sigstore integration time:
-
Permalink:
Chivier/codecast@b72d5b7c94dea7dc999b616bc237b0787ddc49bb -
Branch / Tag:
refs/tags/v0.2.12 - Owner: https://github.com/Chivier
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b72d5b7c94dea7dc999b616bc237b0787ddc49bb -
Trigger Event:
push
-
Statement type: