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.2.0.tar.gz (1.3 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.2.0-py3-none-any.whl (652.7 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for rdc-0.2.0.tar.gz
Algorithm Hash digest
SHA256 7d364307830dc0dc72f8e6132cd31fc625a8fdd6c1eda1508a4f902b774be6da
MD5 330d6307befdd9406a6d5ce8f153b8eb
BLAKE2b-256 06bcf3cbffaabacb2878da45c06e082d21963c7b97b1e66d7ab229b3ebc9df80

See more details on using hashes here.

Provenance

The following attestation bundles were made for rdc-0.2.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.2.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for rdc-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1f2c34e06fde7e70477209f1e2d49c5be2c01f927e879c58e49c85447b045527
MD5 692a109758b6f04fc08417725c0f5858
BLAKE2b-256 2dd77bd0b0d56f84de99a1315df7d3b135d34939ab1ecf1f8734766ddf56a86a

See more details on using hashes here.

Provenance

The following attestation bundles were made for rdc-0.2.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