cdesktop
v0.2.3
Published
NPX wrapper around cdesktop and cdesktop-mcp
Readme

Sponsors
Want your logo featured here? Get in touch.
Overview
cdesktop is an open-source alternative to Anthropic's Claude Code Desktop. It's a web UI for 5 coding agents — Claude Code, Codex, Gemini CLI, OpenCode, and Hermes — wrapping each CLI as a child process on your machine, with your code, transcripts, and worktrees all kept on disk.
The layout is modeled after the Code tab of Anthropic's official desktop app: a sessions sidebar, a transcript with an integrated terminal and diff viewer, and a right-side pane for plan, files, and app preview. Unlike the official app, cdesktop is local-only, agent-agnostic, and provider-agnostic — pick an agent, pick a provider from the built-in catalog or wire up your own.
As of May 7, 2026, Anthropic's Claude Code Desktop no longer accepts third-party model names. cdesktop fully supports third-party providers and models.
- 5 coding agents in one UI — Claude Code, Codex, Gemini, OpenCode, Hermes; pick per session, transcripts stay separate per agent
- Plug in any provider in one click — 20+ built-in presets (OpenRouter, AWS Bedrock, DeepSeek, Kimi, ModelScope, MiniMax, Nvidia, …) or add a custom
ANTHROPIC_BASE_URLendpoint; switch providers and tune reasoning effort per session - Agent teams — spawn teammates that share your workspace and divide work; mix agents and models per teammate; lead delegates via
npx cdesktop team spawn - Run sessions side by side — split the workspace into up to 4 cells and drag any session into a new cell
- Switch between sessions instantly — no reload between threads; transcripts stay where you left them
- Routines — schedule recurring agent runs (hourly, daily, weekdays, weekly) or save manual-fire templates; each run spawns its own workspace you can open and review
- Optional Git worktrees — opt in per project for an isolated branch per session, or work directly in the folder; non-Git directories work too
- Review diffs and leave inline comments — send feedback directly to the agent without leaving the UI
- Preview your app — built-in browser with devtools, inspect mode, and device emulation
- Create pull requests and merge — open PRs with AI-generated descriptions, review on GitHub, and merge
- Speaks your language — built-in support for English, Simplified/Traditional Chinese, Spanish, French, Japanese, and Korean
- Works on your phone — fully responsive UI; check progress, review diffs, and send follow-ups from any device
- Runs in your browser today — start with
npx cdesktopand open it in any modern browser; a Tauri desktop build is wired up but not yet shipped
Beta software. Expect bugs and rough edges. Please file issues when you hit them.
Installation
npx cdesktopRoadmap
- Desktop app build — ship Tauri installers for macOS, Windows, and Linux
- Voice input — push-to-talk dictation for hands-free prompts
- Files panel — browse the full project file tree, not just the session working directory
- Performance optimization — faster cold start, smaller bundle, lower idle CPU
- Skill browser — in-app discovery and one-click install for slash commands and skills
Support
File bug reports and feature requests at cdesktop-ai/cdesktop/issues.
Contributing
Please raise ideas and changes in GitHub Discussions before opening a PR, so we can align on implementation details and roadmap fit.
Development
Prerequisites
Additional development tools:
cargo install cargo-watch
cargo install sqlx-cliInstall dependencies:
pnpm iRunning the dev server
pnpm run devThis will start the backend and web app. A blank DB will be copied from the dev_assets_seed folder.
Building the web app
To build just the web app:
cd packages/local-web
pnpm run buildBuild from source (macOS)
- Run
./local-build.sh - Test with
cd npx-cli && node bin/cli.js
Environment Variables
The following environment variables can be configured at build time or runtime:
| Variable | Type | Default | Description |
|----------|------|---------|-------------|
| POSTHOG_API_KEY | Build-time | Empty | PostHog analytics API key (disables analytics if empty) |
| POSTHOG_API_ENDPOINT | Build-time | Empty | PostHog analytics endpoint (disables analytics if empty) |
| PORT | Runtime | Auto-assign | Production: Server port. Dev: Frontend port (backend uses PORT+1) |
| BACKEND_PORT | Runtime | 0 (auto-assign) | Backend server port (dev mode only, overrides PORT+1) |
| FRONTEND_PORT | Runtime | 3000 | Frontend dev server port (dev mode only, overrides PORT) |
| HOST | Runtime | 127.0.0.1 | Backend server host |
| MCP_HOST | Runtime | Value of HOST | MCP server connection host (use 127.0.0.1 when HOST=0.0.0.0 on Windows) |
| MCP_PORT | Runtime | Value of BACKEND_PORT | MCP server connection port |
| DISABLE_WORKTREE_CLEANUP | Runtime | Not set | Disable all git worktree cleanup including orphan and expired workspace cleanup (for debugging) |
| CDT_ALLOWED_ORIGINS | Runtime | Not set | Comma-separated list of origins that are allowed to make backend API requests (e.g., https://my-cdesktop.example.com) |
Build-time variables must be set when running pnpm run build. Runtime variables are read when the application starts.
Self-Hosting with a Reverse Proxy or Custom Domain
When running cdesktop behind a reverse proxy (e.g., nginx, Caddy, Traefik) or on a custom domain, you must set the CDT_ALLOWED_ORIGINS environment variable. Without this, the browser's Origin header won't match the backend's expected host, and API requests will be rejected with a 403 Forbidden error.
Set it to the full origin URL(s) where your frontend is accessible:
# Single origin
CDT_ALLOWED_ORIGINS=https://cdesktop.example.com
# Multiple origins (comma-separated)
CDT_ALLOWED_ORIGINS=https://cdesktop.example.com,https://cdesktop-staging.example.comRemote Deployment
When running cdesktop on a remote server (e.g., via systemctl, Docker, or cloud hosting), you can configure your editor to open projects via SSH:
- Access via tunnel: Use Cloudflare Tunnel, ngrok, or similar to expose the web UI
- Configure remote SSH in Settings → Editor Integration:
- Set Remote SSH Host to your server hostname or IP
- Set Remote SSH User to your SSH username (optional)
- Prerequisites:
- SSH access from your local machine to the remote server
- SSH keys configured (passwordless authentication)
- VSCode Remote-SSH extension
When configured, the "Open in VSCode" buttons will generate URLs like vscode://vscode-remote/ssh-remote+user@host/path that open your local editor and connect to the remote server.
See the documentation for detailed setup instructions.
License
Apache License 2.0 — see LICENSE.
cdesktop is a derivative work of BloopAI/vibe-kanban (Apache 2.0). The provider preset catalog is derived from farion1231/cc-switch (MIT). See NOTICE for full attribution.
