Skip to main content
Runs on macOS, Windows, and Linux. Python only: the SDK or the holo CLI. The environment is {"kind": "desktop", "host": "user_device"}. This page builds your own desktop agent. For a ready-made one, holo -a h/holo-desktop "task" runs h/holo-desktop, which also gets a shell running as you and a Chrome (a workstation environment). See Drive your desktop.

Run a session

Install
Create an agent whose environment sets host to user_device, then run a session with it. In Python there is nothing else to set up. From the CLI, serve your desktop and point the agent at the session_id it prints (the CLI example uses the agent the Python example creates). All flags: holo local.
The program running the agent (your terminal, or the app that launches Python) needs desktop permissions. Your first session triggers the prompts and stops with an error until you grant them. Run the program in a normal desktop session so it can reach the display.

Fields

Behavior and limits

When a session starts, the SDK opens a connection inside your Python process. It receives the agent’s actions, carries them out on your desktop, and ties the session to this machine. Observe and steer, changes, and Agent View work as for a cloud run.
  • One at a time. A Python process drives one local desktop at a time. A new session on it takes it over and cancels the earlier session. Another process that tries to drive the same desktop waits up to 10 seconds, then fails with DesktopBusyError.
  • Tied to your process. The connection closes when your Python process exits, and the sessions it served are cancelled. If the connection drops mid-session, the session is cancelled too.
  • Screenshots. holo local desktop downscales and recompresses screenshots before upload. The environment’s screenshot_max_width caps width again on the agent’s side, so the smaller limit applies.

Auto-connect scope