Skip to Content
DocsConceptsMulti-client

Multi-Client

TL;DR

In the execution-state continuity layer, one single-homed CMDOP session can have many clients attached at once, all viewing the same output stream. Clients of every kind — Desktop, CLI, mobile, SDK, and AI — attach as either operators (may send input) or observers (read-only). Operators take turns steering the one shared session, with no merge — last write wins. This powers collaborative debugging, shadowing, audit, AI assist, and seamless device switching.

A CMDOP session can have many clients attached at once. All of them see the same output stream. Some have permission to send input (operators); others can only watch (observers). This is how collaborative debugging, AI assist, and seamless device switching work.

The model

Same session object on the agent. Each client opens its own stream and sees output as it arrives. Operators can submit input; observers cannot.

Operator vs Observer

CapabilityOperatorObserver
View outputyesyes
Send inputyesno
Execute commandsyesno
File readyesyes
File writeyesno
Resize terminalyesno
Send signals (SIGINT, …)yesno

Observer mode is useful for shadowing, audit/compliance, and AI-assisted analysis where you want the LLM to see output without changing it.

Taking turns

Multiple operators can be attached to one session at once. They take turns steering it — each operator’s input lands in the one shared live session, and everyone sees the same result. There is no merge or conflict resolution: for stateful work, the last operator to act wins, so coordinate (or use observer mode) when several people are attached.

For the persistent multi-command shape (one channel, many commands within one operator), see Remote Sessions — that’s the persistent-session flow, not the terminal session described here.

Use cases

  • Collaborative debugging. Two engineers attach to the same session; one types, both watch. Same output, no screen-share latency.
  • Shadowing / training. Senior runs the session as operator; junior attaches as observer.
  • Audit / compliance. Security observer attaches while production work happens.
  • AI assist. AI joins as observer, watches output, raises suggestions; humans stay in control. See AI Operators.
  • Device switching. Start in Desktop on the laptop, attach on the phone after closing the lid, keep watching the deploy. Sessions outlive any single device — see Sessions.

Reading the attached-client list

The session metadata exposes every attached client:

{ "session_id": "prod-1:slot3", "attached_clients": [ { "user": "[email protected]", "mode": "operator", "client": "desktop" }, { "user": "[email protected]", "mode": "observer", "client": "cli" } ] }

Use this in tooling to warn before attaching as a second operator, or to record audit trails of who saw what.

Limits

  • One PTY per terminal session.
  • Commands are queued, not merged.
  • Output is broadcast to every attached client — bandwidth scales linearly with audience. For large observer audiences, prefer observer-only attaches.

For multiple persistent commands per machine (rather than multiple clients on one PTY), use the connect_session agent tool. See Remote Sessions.

Reconnecting from any device

Sessions are addressable by ID. You can detach from the laptop and reconnect from the phone:

# laptop cmdop connect prod-1 # (laptop closes; session continues) # phone — list sessions, then reattach interactively cmdop session list cmdop connect prod-1 # live interactive reattach cmdop session attach <session-id> # metadata only (takeover pending)

Interactive reattach (a live terminal) is done with cmdop connect; cmdop session attach currently reports the session’s metadata, with interactive takeover planned but not yet implemented. The 30-second grace period on terminal sessions covers brief network blips so a quick reconnect resumes seamlessly.