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_URL endpoint; 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 cdesktop and 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 cdesktop

Roadmap

  • 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-cli

Install dependencies:

pnpm i

Running the dev server

pnpm run dev

This 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 build

Build from source (macOS)

  1. Run ./local-build.sh
  2. 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.com

Remote 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:

  1. Access via tunnel: Use Cloudflare Tunnel, ngrok, or similar to expose the web UI
  2. 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)
  3. 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.