[FEATURE] Remote Control: one server per machine, pick the project and worktree per session (like Desktop SSH, for always-on hosts)
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Note: this extends #88404 (project picker for Remote Control), which is labeled platform:windows only. The limitation is cross-platform; this issue covers the Linux / headless-server case and the per-session worktree choice that #88404 doesn't mention.
Problem Statement
A claude remote-control server is bound to the directory it was launched in, and its spawn mode (same-dir / worktree / session) is fixed for the whole server at launch. From claude.ai/code or the mobile app you can't pick which project a new session runs in, nor whether it gets its own worktree.
This matters most on an always-on remote machine. On my headless Linux dev VPS, Remote Control is the only way to reach Claude Code when my laptop is off: Desktop SSH sessions depend on the laptop being on. So to work on several projects I run one always-on server per project, as a systemd user template claude-remote@<project>.service. That's N processes and N entries in the environment picker, plus another server per project if I also want worktree mode.
Proposed Solution
Let one Remote Control server per machine act as a host, the way a Desktop SSH connection does, without depending on the client machine:
- Project picker: when starting a new session from claude.ai/code or mobile, choose its working directory from the projects Claude Code already knows (
~/.claude.json), or browse under a configured root (e.g.claude remote-control --root ~/Projects). Trust rules still apply per directory. - Per-session worktree choice: choose at session creation whether the session runs in the folder directly or in a fresh git worktree, instead of a server-wide
--spawnflag.
Alternative Solutions
- One always-on server per project (what I do now): works, but wastes processes and clutters the picker, and needs a second server per project for worktree mode.
- One server on a parent directory (
~/Projects) and asking Claude tocdinto a subfolder: sessions are still rooted, labeled and permissioned at the parent,/cddoesn't work in Remote Control sessions (#82670), and there's no worktree choice. - Desktop app over SSH: has exactly the right UX (pick folder, choose worktree), but only works while the laptop running the app is on.
Priority
High - Significant impact on productivity
Feature Category
CLI commands and flags
Use Case Example
- A headless Ubuntu 24.04 VPS runs a single
claude remote-control --root ~/Projectssystemd user service, always on. - Laptop is off. From the Claude mobile app, I open the VPS environment, tap "New session", choose
high-intent, and toggle "own worktree". - The session starts in a new worktree of
~/Projects/high-intent. Later, from a browser, I start another session in~/Projects/codex-monteurdirectly in the folder, on the same server.
Additional Context
- Platform: Linux (Ubuntu 24.04, headless, systemd user service with linger), Claude Code 2.1.292. Not Windows-specific: applies on every platform.
- Prior art: Codex's remote mode exposes a project list on a single remote host and starts sessions in the chosen project.
- Related: #88404 (project registry picker, Windows-labeled), #96269 (
--nameignored, so multiple servers are hard to tell apart in the picker, which makes the one-server-per-project workaround worse), #82670 (/cddoesn't work in Remote Control sessions).