Skip to main content
A computer use env is a Plato VM running a full Linux desktop (Xvfb, window manager, Chrome, real filesystem). The agent operates the VM directly: pixels, keyboard, shell, files. Currently the desktop sim is ubuntu-vm (any sim with is_desktop=True qualifies). The session and environment APIs are the same as any other env. The only thing that’s different is env.sdk, which on a desktop env exposes four tool surfaces: status, computer, bash, edit — plus login for getting cookies into the VM’s Chrome.
Requires plato-sdk-v2 >= 2.61.4.

Hello desktop

What this script touches:
  1. status() — health and display resolution.
  2. bash — shell command on the VM.
  3. computer(screenshot) — get a PNG of the desktop, base64-encoded.
  4. computer(left_click) — point + click.
  5. computer(key) + computer(type) — keyboard input.
  6. edit(create) + edit(view) — structured file ops.

Picking the env

Three ways to get a desktop env in your session:
In a multi-env session, use session.desktop_env to grab the desktop:
session.desktop_env returns the first env with is_desktop=True, or None if there isn’t one.

Liveview

env.sdk.get_liveview_url() returns a noVNC URL you can open in a browser to watch the VM in real time. Useful for debugging an agent loop.
This one is sync — no await even on AsyncPlato.

Async

The async client mirrors the sync one. Swap PlatoAsyncPlato and await everything except get_liveview_url():

What’s next

Tools

Full reference for computer, bash, edit, status

Login

Get cookies into the VM’s Chrome before the agent runs

Agent loop

Wire model tool calls to computer / bash / edit