Skip to main content

Command center for AI-assisted development. Manage multiple AI coding agents from any device.

Project description

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

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

rdc-0.1.0.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

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

rdc-0.1.0-py3-none-any.whl (619.3 kB view details)

Uploaded Python 3

File details

Details for the file rdc-0.1.0.tar.gz.

File metadata

  • Download URL: rdc-0.1.0.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rdc-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d03fc43d1859857d692b74a2c7c1ee7951df5e05c9f32b7906e55fcf39397f0e
MD5 5887e082a542435dcfb86b638efb65ec
BLAKE2b-256 84d94ad2a338166d5354319c875a946000f9de0ad0caf32b1e0969062b26a4d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for rdc-0.1.0.tar.gz:

Publisher: publish.yml on dawalama/remote-dev-control

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rdc-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: rdc-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 619.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rdc-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 047b5580c25b7c6a68111802db442727c7d15846a4acbcc5e150c6812394d011
MD5 57a0090383edf05c10473de54cd96f05
BLAKE2b-256 818df0b0a42adc9d27d88f4ed3c1936319d8bbfcedc72b7c0a959e6f46b4dda9

See more details on using hashes here.

Provenance

The following attestation bundles were made for rdc-0.1.0-py3-none-any.whl:

Publisher: publish.yml on dawalama/remote-dev-control

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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