Remote Computer Use — JavaScript / TypeScript SDK#
Use an opendesk agent on one machine to control another over the LAN. Every
existing tool (screenshot, mouse, keyboard, ui, app, clipboard,
ocr) works the same — the RemoteComputer abstraction just lives on the
other end of an encrypted WebSocket.
flowchart LR
A["<b>Controller</b><br/>Claude Code, etc<br/>RemoteComputer"]
B["<b>Controlled Machine</b><br/>opendesk-js serve<br/>ToolDispatcher"]
A <-->|"ws + msgpack + AEAD · Wi-Fi / Ethernet"| B
Cross-SDK compatibility. The JS and Python SDKs share the same wire protocol and the same
~/.opendesk/trusted-peers.jsonformat (snake_case keys). A machine paired withopendesk pair(Python) can be connected to fromconnect()(JS) and vice versa — no re-pairing needed.
Mental model#
Term |
Means |
|---|---|
Controlled machine |
The one being controlled. Runs |
Controller |
The machine running the agent (Claude Code, Claude Desktop, etc.). Runs |
Pairing |
One-time exchange that establishes mutual trust via a 6-digit code shown on the controlled machine. After pairing both ends know each other’s long-lived public keys and can reconnect without the code. |
Trusted-peers store |
|
ToolDispatcher |
Server-side class that maps incoming |
Guides#
Setup — one-time pairing
Running —
opendesk-js serveandopendesk-js connectMCP Integration — peer resolution, admin tools, agent example
Audit Log — JSONL audit file, CLI viewer, programmatic access
Security — threat model, files on disk
Concurrency — single-controller policy, disconnect vs unpair
Programmatic Use — connect, pair, serve from Node.js