Lightweight self-hosted session manager for Claude Code Remote Control
Project description
Claude Code RC is powerful but ephemeral. rcpilot gives it a home.
Self-hosted session manager for Claude Code Remote Control. Run it on a Raspberry Pi (or any always-on machine) and get a mobile-friendly web UI to launch, reconnect to, and manage your coding sessions from anywhere.
Features
- Session management — launch, reconnect, kill, and name RC sessions per project; full history with terminal snapshots
- Git integration — branch status, diff viewer, pull, and Claude-powered commit & push (auto-generates the commit message)
- PR review — trigger a Claude code review on any open GitHub PR; results posted as a PR comment
- Usage tracking — built-in Anthropic API proxy shows live 5h window utilization in the header
- Schedulers — cron-based usage-window warmer and Claude CLI auto-updater, both configurable
- Self-update — checks PyPI every 6 hours; shows a banner when a new version is available (or upgrades silently in auto mode)
- Project import — clone a GitHub repo directly from the UI
- YOLO mode — global toggle for
--dangerously-skip-permissions - Watchdog — marks crashed or timed-out sessions automatically
- Restart-safe — sessions survive rcpilot restarts and Pi reboots
Mobile-first UI, works great on iOS Safari and Android Chrome. Install as a PWA from Android Chrome for a native app feel — rcpilot will prompt you automatically on first visit.
Quick start
uvx rcpilot # one-shot, no install
Or install permanently and run as a systemd service:
uv tool install rcpilot
curl -o ~/.config/systemd/user/rcpilot.service \
https://raw.githubusercontent.com/kjozsa/rcpilot/main/rcpilot.service
systemctl --user enable --now rcpilot
Open http://localhost:8000 (or your Pi's IP/Tailscale hostname on the configured port).
Configuration
Config is auto-created at ~/.config/rcpilot/config.toml on first run. All fields are optional.
projects_dir = "~/projects" # each subdirectory becomes a project
host = "0.0.0.0"
port = 8000
db_path = "~/.config/rcpilot/pilot.db"
# Cron to fire "claude -p hi" and start the 5h rolling usage window
window_cron = "0 7,12,17 * * *"
# Cron to run "claude update" (set to "" to disable)
claude_update_cron = "0 6,18 * * *"
# Self-update mode: "prompt" shows a banner; "auto" upgrades and restarts silently
rcpilot_update_mode = "prompt"
Supported cron syntax: *, */n, a-b, a,b,c (5-field, local time).
Requirements
- Python 3.11+
claude— Claude Code CLI, onPATHand authenticatedgh— GitHub CLI, only needed for PR review
Security
By default rcpilot has no authentication — designed for a private trusted network. If visitors use your local network, enable a keyphrase and HTTPS.
Keyphrase auth
Add to ~/.config/rcpilot/config.toml and restart:
admin_keyphrase = "your-secret-here"
The UI shows a login screen. Sessions last 7 days per browser.
HTTPS with mkcert
Without HTTPS the keyphrase is visible in plaintext on the network. mkcert creates a locally-trusted certificate with no browser warnings.
# Install mkcert
sudo apt install mkcert # Debian/Raspberry Pi OS
# brew install mkcert # macOS
# Create local CA (once — also run on each browser/device that needs to trust it)
mkcert -install
# Generate certificate
mkdir -p ~/.config/rcpilot/tls
mkcert -key-file ~/.config/rcpilot/tls/key.pem \
-cert-file ~/.config/rcpilot/tls/cert.pem \
localhost raspberrypi.local 192.168.1.x
Add to config and restart:
ssl_certfile = "~/.config/rcpilot/tls/cert.pem"
ssl_keyfile = "~/.config/rcpilot/tls/key.pem"
Then open https:// instead of http://. For mobile devices, copy ~/.local/share/mkcert/rootCA.pem from the Pi to the device and install it as a trusted certificate.
Do not expose rcpilot to the public internet.
MIT License
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rcpilot-1.9.7.tar.gz.
File metadata
- Download URL: rcpilot-1.9.7.tar.gz
- Upload date:
- Size: 90.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d88f3609748a2db39a045037cd96c6d59cbe6a33677737159165e3432e174244
|
|
| MD5 |
c28b965cd5b0a0bd0354fc9471d63b0d
|
|
| BLAKE2b-256 |
52c81bb8189bf36fa2aa8662a2b635fe531ccc5282f42d70974104088d17fb3e
|
File details
Details for the file rcpilot-1.9.7-py3-none-any.whl.
File metadata
- Download URL: rcpilot-1.9.7-py3-none-any.whl
- Upload date:
- Size: 94.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0739d70aad08e7ad967c1dcffc28b5fb16b3b1c1bf85e4e9c240b55d938e95b
|
|
| MD5 |
ed0e443fb3a12405240c1ae41ccf96b8
|
|
| BLAKE2b-256 |
d8435ee3b6c0acf584f80dcd36077d019159dadd2f174c55fe1df8358dc7dbd9
|