Skip to main content

RDC - Remote Dev Ctrl

Monitor and control your AI coding agents from anywhere - phone, tablet, or browser.

RDC is an open-source command center for developers running multiple AI agents (Claude Code, Cursor, Gemini CLI) across multiple projects. One dashboard, all your terminals, accessible from any device.

License

Why RDC?

  • See all your agents in one place - 5 projects with Claude Code running? See them all, switch instantly
  • Check on agents from your phone - Mobile-first UI with terminal access, virtual keyboard, and touch controls
  • Shared browser preview - You and the AI agent see the same page. Click, type, navigate together
  • Terminals that survive everything - PTY sessions persist across server restarts and network drops

Quick Start

# Install from PyPI
pip install rdc
rdc setup          # Guided config: API keys, presets, remote access
rdc server start   # Open http://localhost:8420

Or install from source:

# One-line install (clones, installs deps, builds, runs guided setup)
curl -sSL https://raw.githubusercontent.com/dawalama/remote-dev-ctrl/main/install.sh | bash

# Or manual:
git clone https://github.com/dawalama/remote-dev-ctrl.git
cd remote-dev-ctrl
uv sync && cd frontend && pnpm install && pnpm run build && cd ..
rdc setup
rdc server start

Prerequisites

Python 3.11+, Node.js 18+, and Chrome (for browser preview).

# If you don't have uv/pnpm:
curl -LsSf https://astral.sh/uv/install.sh | sh
npm install -g pnpm

Features

Three Layouts, All First-Class

Desktop Mobile Kiosk
IDE-like split view Card-based, touch-optimized Tablet sidebar + terminal
Terminal + sidebar tabs Fullscreen terminal overlay Collapsible side panels

Terminal Management

  • Spawn Claude Code, Cursor, Gemini CLI, or plain shell per project
  • WebSocket streaming with auto-reconnect and snapshot-based session restore
  • Terminal switcher: tap title or long-press Back to switch between terminals
  • Virtual keyboard with arrow keys, Ctrl-C, Tab, Enter for mobile
  • Waiting-for-input detection with visual alerts

Browser Automation

  • Local Chrome (no Docker required) with CDP screencast viewer
  • 5 agent tools: observe, click, type, navigate, screenshot
  • Observe-act loop: agent sees the page, decides actions, executes, verifies
  • Same page shared between you and the agent - no separate sessions

Actions (Services & Commands)

  • Auto-discover project scripts from package.json, Makefile, etc.
  • Services (dev servers) with port detection and browser preview
  • Commands (builds, tests, lints) with output capture
  • Start, stop, restart, attach to orphaned processes

AI Orchestrator

Natural language control via chat:

  • "Start a terminal for my-project"
  • "Show running tasks"
  • "Switch to kiosk mode"

Remote Access

Access from anywhere via Cloudflare Tunnel + Caddy reverse proxy:

Internet -> Cloudflare Tunnel -> Caddy (:8888) -> RDC (:8420)
                                               -> Dev servers (:3000, :5173, etc.)

Each dev server gets its own preview subdomain automatically.

Architecture

src/remote_dev_ctrl/server/
  app.py            # FastAPI app, routes, lifespan
  chrome.py         # Local Chrome process lifecycle
  browser.py        # Browser sessions, CDP connections
  browser_use.py    # Agent browser control (observe/act/screenshot)
  terminal.py       # PTY management, WebSocket relay, snapshots
  worker.py         # Task execution engine
  config.py         # Config loading
  agents/tools.py   # Agent tool definitions (file, git, browser)

frontend/src/
  layouts/          # desktop.tsx, mobile.tsx, kiosk.tsx
  features/         # terminal, browser, chat, tasks, processes
  stores/           # Zustand state management
  hooks/            # use-browser-agent, use-mount-effect

Stack: Python (FastAPI) + React + TypeScript + Tailwind + Zustand + xterm.js + SQLite

Configuration

Config lives at ~/.rdc/config.yml (auto-created on first run):

server:
  host: 127.0.0.1
  port: 8420

browser:
  backend: chrome     # Local Chrome, no Docker needed
  headless: true

providers:
  cursor:
    type: cursor-agent
    default: true
  ollama:
    type: ollama
    model: qwen3.5

API keys go in the vault, not config files:

rdc config set-secret ANTHROPIC_API_KEY sk-ant-...

CLI

rdc server start [-d]              # Start server (optionally as daemon)
rdc server stop                    # Stop server
rdc add <path> [-n name]           # Register a project
rdc list                           # List projects
rdc config set-secret KEY VALUE    # Store API key securely

API

Interactive docs at http://localhost:8420/docs when the server is running.

Key endpoints:

Endpoint Description
WS /ws/state Real-time state updates
WS /terminals/{id}/ws Terminal I/O stream
POST /terminals Spawn terminal session
POST /tasks Create task
POST /browser/start Start browser session
POST /browser/sessions/{id}/agent/loop Multi-step browser agent
POST /orchestrator Natural language command
GET /processes List actions

MCP Integration

For AI assistants that support Model Context Protocol:

{
  "mcpServers": {
    "remote-dev-ctrl": {
      "command": "python",
      "args": ["-m", "remote_dev_ctrl.mcp.server"],
      "env": { "PYTHONPATH": "/path/to/remote-dev-ctrl/src" }
    }
  }
}

Remote Access Setup

For accessing RDC from your phone or another machine:

  1. Cloudflare Tunnel - Exposes your local machine to the internet (free tier)
  2. Caddy - Routes subdomains locally (auto-downloaded by RDC)
# Install and configure cloudflared
brew install cloudflared
cloudflared tunnel login
cloudflared tunnel create rdc

# Add to ~/.rdc/config.yml
caddy:
  enabled: true
  base_domain: yourdomain.com
  rdc_domain: rdc.yourdomain.com
  listen_port: 8888

# Start
cloudflared tunnel run rdc
rdc server start

Dashboard at https://rdc.yourdomain.com. Enable auth with:

rdc config set-secret RDC_SECRET_KEY $(openssl rand -hex 32)

Contributing

Contributions welcome. Please open an issue first to discuss what you'd like to change.

License

MIT

Metadata

Release files for rdc 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rdc 0.3.0
File Size Uploaded
rdc-0.3.0.tar.gz 1.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for rdc 0.3.0
File Interpreter ABI Platform
rdc-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.0 MB

Release files / rdc-0.3.0.tar.gz

Download URL rdc-0.3.0.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
469c7701f699a5d12139001bb1d971cc5af630655d12994e48bbea8f1c1b058e
BLAKE2b-256 checksum
How to use checksums
bc71471f6cd7a616a9435492c7fa3dd4769e108d3d853bd37642f78573fb7d6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 24, 2026.

Transparency log

Release files / rdc-0.3.0-py3-none-any.whl

Download URL rdc-0.3.0-py3-none-any.whl
Size 675.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3853c35b636d1cab24ce85e845ee969f096d0ae7399a5e8d65367388adbdab79
BLAKE2b-256 checksum
How to use checksums
d7ffadc2c978d7e875568c1aa9d1659ef187d0efc6f6eb2616afde11b1d25f98
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 24, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page