Running#
Controlled machine#
opendesk serve
Long-running daemon. Accepts paired peers only — refuses anyone whose
static key isn’t in trusted-peers.json. Logs each connection /
disconnection to stderr. Survive reboots: see Service Install.
Ask Claude (on the controller)#
Once the daemon is running on the controlled machine and MCP is registered on the controller, ask Claude:
“What machines are available?”
“Switch to the mini machine”
“Take a screenshot of the mini”
“Open TextEdit on the mini and type hello”
“What’s running on the remote machine?”
Claude discovers, selects, and acts on remote machines automatically.
Controller#
The agent uses opendesk through the existing MCP server — pointing
Claude Code (or whatever) at opendesk-mcp just works. See MCP Integration.
For ad-hoc smoke tests:
opendesk connect mini
# Connected to mini backend=local/darwin
# Capabilities: ['apps.lifecycle', 'clipboard.read', 'clipboard.write', ...]
opendesk connect mini --screenshot ~/Desktop/mini-screen.png
Next: MCP Integration → — how the agent picks which machine to act on.