Skip to main content

Lightweight self-hosted session manager for Claude Code Remote Control

Project description

rcpilot

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.

rcpilot main view rcpilot project actions


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
  • 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. No app install needed.


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 * * *"

Supported cron syntax: *, */n, a-b, a,b,c (5-field, local time).


Requirements

  • Python 3.11+
  • claude — Claude Code CLI, on PATH and authenticated
  • gh — 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rcpilot-1.8.0.tar.gz (56.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rcpilot-1.8.0-py3-none-any.whl (60.7 kB view details)

Uploaded Python 3

File details

Details for the file rcpilot-1.8.0.tar.gz.

File metadata

  • Download URL: rcpilot-1.8.0.tar.gz
  • Upload date:
  • Size: 56.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for rcpilot-1.8.0.tar.gz
Algorithm Hash digest
SHA256 46c244a701b9b6f49d9e846ba3e535843f37be44b66c8ec907c76774a465fd07
MD5 0028e27863ebf03e6b2fa2cff2218d62
BLAKE2b-256 1f3601a8d8ebb9987dbbe072d6e62b7ab95f5aba588ebe7ac0f26f1038a96497

See more details on using hashes here.

File details

Details for the file rcpilot-1.8.0-py3-none-any.whl.

File metadata

  • Download URL: rcpilot-1.8.0-py3-none-any.whl
  • Upload date:
  • Size: 60.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for rcpilot-1.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6a3faec459fab4d9fe57390d958f4ab4da09fd426fedfb40e9736b1220adafb2
MD5 93bd3a4df04e329136b6e6f98805dc87
BLAKE2b-256 7b67f4166c4985f312752044d8cf4b6bafbd175bfca58fb636ba0c4a0a1a7cd4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page