Feature: headless mode for remote-control (--headless/--daemon flag)

Resolved 💬 3 comments Opened Feb 26, 2026 by Foodcoman Closed Mar 3, 2026

Feature Request: Headless Remote Control

Problem

claude remote-control currently requires a TTY, which means on headless servers (e.g., Ubuntu VPS, dev boxes accessed via SSH) the only reliable option is wrapping it in tmux or screen. You can't nohup it, run it as a systemd service, or daemonize it in any standard way — because the process renders a terminal UI locally even though all interaction happens through the remote client (claude.ai/code or the mobile app).

Observation

The pieces already exist separately:

  • Headless mode (claude -p): Proves the execution engine runs without a TTY
  • Remote control: Proves the UI can live entirely elsewhere (phone, browser)
  • The local terminal rendering is redundant in remote-control mode — the user is interacting through the remote UI, not the local terminal

Proposal

Add a --headless (or --daemon) flag to remote-control:

claude remote-control --headless

Behavior:

  • Runs the execution engine + HTTPS polling loop as a plain process (no PTY required)
  • Prints the session URL/token to stdout once, then runs in the background
  • No local terminal rendering — all UI is on the remote client
  • Works with nohup, systemd, Docker containers, or any process supervisor

Use Cases

# Simple background process
nohup claude remote-control --headless > /tmp/rc-session.txt 2>&1 &

# systemd service on a dev server — always available from your phone
# Docker container with your dev environment
# CI/CD or cloud dev environments without interactive terminals

Why This Matters

Remote-control is fantastic for mobile/cross-device development. But requiring a TTY limits it to machines where you can maintain an interactive terminal session — which is exactly the constraint remote-control is supposed to free you from. Combining headless execution with the remote-control networking would make it truly run-anywhere.

The architecture is already there. The execution engine doesn't need a terminal. The remote UI doesn't need a terminal. They just need to be wired together without the local TUI in the middle.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗