Your Desktop, From Anywhere
AI-powered remote desktop control from your phone
Latest mobile release Latest desktop release License Python TypeScript (mobile) TypeScript (desktop) React Native Expo Tauri FastAPI Google ADK PinchTab v0.8.2 Platform
Contop turns your phone into an AI remote control for any desktop. Speak or type a command on your mobile, and an autonomous agent on your computer observes your screen, runs CLI commands, clicks buttons, fills forms, automates browsers, and streams progress back - all in real time over a peer-to-peer WebRTC tunnel.
No port forwarding. No VPN. No SSH. Scan a QR code and start working.
macOS (Homebrew - recommended):
brew install slopedrop/contop/contop # Update to latest version brew update && brew upgrade contop
No security warnings. Python dependencies install automatically on first launch.
macOS (manual):
Download the .dmg from Releases, open it, and drag to Applications.
First launch: right-click the app → Open → click Open in the dialog. This is standard for open-source apps without code signing.
Windows (Scoop - recommended):
scoop bucket add contop https://github.com/slopedrop/scoop-contop scoop install contop # Update to latest version scoop update && scoop update contop
No SmartScreen warnings. Python dependencies install automatically on first launch. NVIDIA GPU with CUDA is auto-detected.
Windows (manual):
Download the .exe installer from Releases and run it.
SmartScreen may show a warning - click More info → Run anyway. This is standard for open-source apps without code signing.
Linux:
# AppImage (any distro) chmod +x Contop*.AppImage && ./Contop*.AppImage # Debian / Ubuntu sudo dpkg -i contop-desktop_*.deb
Download from Releases.
Download the Android .apk from Releases.
Enable Install from unknown sources when prompted.
iOS is not yet available for public alpha.
How It Works - Phone to Agent to Screen
contop_final_demo.mov
Manual Control - direct touch control of the remote screen Landscape split view - live video beside the execution thread
Landscape Split View - live video beside the execution thread
Session History Session history - restored conversation with full execution thread
Restored Session Settings - models and API keys
Settings - Models Settings - security rules and system prompts
Settings - Security
- 30+ execution tools - CLI, GUI automation, file operations, browser control, window management, document processing, app lifecycle, and more
- Smart vision routing - 9 backends: OmniParser V2, Gemini Computer Use, Accessibility Tree, and 6 OpenRouter vision models (UI-TARS, Kimi, Qwen, Phi, Molmo, Holotron)
- Multi-step planning - plan-generation tool with research sub-agent, tool chaining, and up to 50 iterations per task
- Multi-provider LLM - Gemini, OpenAI, Anthropic, and OpenRouter (100+ models including Groq, Mistral, DeepSeek, and more) via LiteLLM
- Subscription mode - use your existing Claude Pro/Max, Gemini Pro, or ChatGPT Plus/Pro subscription instead of API keys via the built-in CLI proxy (Claude Code, Gemini CLI, Codex CLI - text-only, no LLM vision fallback)
- Skills system - extensible via SKILL.md standard with YAML workflows and Python tool loading
- Real-time feedback - step-by-step progress, screenshots, and model/backend transparency streamed to your phone
- Dual-Tool Evaluator - every command classified and routed through a security gate before execution
- Destructive action approval - dangerous operations require explicit user confirmation
- Sandboxed execution - high-risk commands run in an isolated Docker container
- Restricted path isolation - prevents agent from accessing protected directories
- JSONL audit log - every tool call logged with timestamps, commands, and outcomes
- Away Mode - PIN-locked secure overlay with auto-engage on idle (Windows)
- QR code pairing - scan to connect with 30-day persistent tokens, no IP configuration needed
- Cloudflare Tunnel - automatic public URL, zero port forwarding
- WebRTC P2P - dual data channels (reliable + unreliable) with live video streaming
- Paired device management - geo-location tracking, connection path visibility, per-device revoke, OS notifications
- Connection loss resilience - automatic execution kill on disconnect, chat-only fallback mode
- Lightweight native shell (Rust) with settings GUI
- Manages the Python server as a sidecar process
- API key and subscription mode configuration, security rules, system prompts
- CLI proxy lifecycle management - auto-start, health monitoring, and watchdog restart
- Cross-platform: Windows, macOS, Linux
- Adaptive layouts: split-view, side-by-side, fullscreen video, thread-focus
- Real-time execution thread with tool outputs and screenshots
- Session history with persistence and restore
- Model selection, extended thinking toggle, custom instructions
Architecture - Mobile, Desktop Host, External Services
| Layer | Technology |
|---|---|
| Mobile | React Native 0.83, Expo 55, TypeScript, NativeWind v4, Zustand |
| Desktop | Tauri v2 (Rust + Vite), Win32 APIs for Away Mode |
| Server | Python 3.12, FastAPI, asyncio, aiortc |
| AI Agent | Google ADK, LiteLLM (multi-provider routing) |
| AI Models | Gemini, OpenAI, Anthropic, Any model on OpenRouter (API keys or CLI subscriptions) |
| Vision | OmniParser V2, Gemini Computer Use, Accessibility Tree, 6 OpenRouter models |
| Automation | PyAutoGUI, platform adapters (Win/Mac/Linux), PinchTab CDP |
| Networking | WebRTC (aiortc), Cloudflare Tunnels, DTLS encryption |
| Security | Dual-Tool Evaluator, Docker sandbox |
- Python 3.12+ with uv
- Node.js 18+
- At least one LLM API key: Gemini, OpenAI, Anthropic, or OpenRouter - or an existing Claude Pro/Max, Gemini Pro, or ChatGPT Plus/Pro subscription via the built-in CLI proxy
- Android / iOS device with Expo dev build
cd contop-server
uv sync
uv run uvicorn main:app --host 0.0.0.0 --port 8000cd contop-desktop
npm install
npm run tauri devcd contop-mobile npm install npx expo run:android # or: npx expo run:ios
- Open the desktop app (or visit
http://localhost:8000) to see the QR code - Scan the QR code from the mobile app
- Start speaking or typing - the agent observes your screen and executes your commands
For detailed setup, platform-specific instructions, and configuration options, see the full documentation.
contop/
├── contop-server/ # Python FastAPI server + AI agent
│ ├── core/ # Agent, evaluator, signaling, pairing, skills engine
│ ├── tools/ # Vision backends, Docker sandbox, browser automation
│ ├── platform_adapters/ # OS-specific automation (Win / Mac / Linux)
│ ├── skills/ # Built-in skills (web research, IDE chat, CLI patterns)
│ ├── prompts/ # Agent system prompts
│ └── tests/ # pytest (unit + ATDD)
├── contop-mobile/ # Expo / React Native mobile client
│ ├── app/ # Expo Router screens
│ ├── components/ # ExecutionThread, ExecutionInputBar, RemoteScreen
│ ├── hooks/ # useWebRTC, useConversation
│ ├── stores/ # Zustand state management
│ └── services/ # AI settings, session storage
├── contop-cli-proxy/ # CLI subscription proxy (Node.js / TypeScript)
│ └── src/ # OpenAI-compatible proxy wrapping Claude/Gemini/Codex CLIs
├── contop-desktop/ # Tauri v2 desktop app
│ ├── src/ # Vite frontend (HTML/CSS/JS)
│ └── src-tauri/ # Rust backend, Away Mode, sidecar + proxy management
├── website/ # Next.js 15 marketing site
└── docs/ # Docusaurus 3 documentation
cd contop-server && uv run pytest # all server tests cd contop-mobile && npx jest # all mobile tests
| Resource | URL |
|---|---|
| Website | contop.app |
| Documentation | docs.contop.app |
| Releases | GitHub Releases |
| Issues | GitHub Issues |