# OSWorld — the computer-use agent OSWorld is the computer-use (CUA) path: the agent operates a real desktop GUI — taking screenshots, moving the mouse, typing — to complete tasks. It is the largest environment, with its own subsystem under `experience/cua/`, and is multimodal: the policy tokenizer loads an `AutoProcessor` (`policy.tokenizer.use_processor=true`) so per-turn screenshots are encoded through it. ## The episode A turn is: observe (a screenshot, optionally an accessibility tree), the model emits an action, the action is actuated on the guest, repeat — up to `max_turns`. Actions are parsed (`experience/cua/actions/`, e.g. pyautogui-style) and actuated through a backend. ## Backends `env.osworld.backend` selects the actuation/observation stack: | Backend | Guest | | --- | --- | | `official` | `desktop_env.DesktopEnv` (Docker KVM provider) — the offline-validated reference default. | | `control_center` | In-house Linux stack (The-Eye + control-center + an OSWorld guest server for setup/grading). | | `windows` / `macos` | Windows / macOS guests via control-center actuation. No built-in grading — supply a custom `env.osworld.grader` for non-Ubuntu task sets. | The `official` backend's provider is `docker` (KVM-in-container, slow reset) or `aws` (snapshot-revert, fast reset at scale). Each concurrent episode needs one live container/VM, so actor concurrency is bounded by the provisioned host pool (`experience/cua/provisioner.py`); exceeding it is intended backpressure. ## Grading Ubuntu-authored OSWorld tasks grade through the guest server; custom Windows/macOS tasks require a supplied grader. Grading material and helpers live under `experience/cua/grading/` and `experience/cua/tasks/`. Config: `examples/configs/grpo_osworld.yaml` (its `env.osworld` block documents every backend, provider, and provisioning knob).