HelixML

Sandbox runtimes

Desktop environment options, container images, and resource requirements for Helix agent sandboxes.

Desktop environments

Each agent sandbox runs one of three desktop configurations:

EnvironmentDisplay serverBase imageBest for
SwayNative WaylandUbuntu 22.04 + SwayLightweight, fast startup, lowest resource usage
UbuntuGNOME (Xwayland)Ubuntu 22.04 + GNOMEFull desktop experience, broader app compatibility
ZorinGNOME (Xwayland)Zorin OSUser-friendly interface

All three include:

  • Zed IDE (connected to the code agent via ACP)
  • Firefox browser
  • Docker CLI
  • Git
  • Standard developer tooling (curl, jq, make, etc.)

The default desktop is Sway. This can be changed per-deployment in the sandbox configuration.

Resource requirements per session

ResourceMinimumRecommended
CPU2 vCPU4 vCPU
RAM4 GB8 GB
GPUNot required1 GPU for hardware H.264 encoding
Disk20 GB50 GB (for larger repo clones and Docker images)

On NVIDIA hardware, one GPU is typically shared across multiple sessions. The sandbox streams video via H.264; without a GPU, software encoding still works but uses more CPU.

Video streaming

The agent desktop is streamed as H.264 video over WebSocket (HTTPS). The streaming pipeline:

  1. Desktop renders to Wayland compositor
  2. PipeWire captures the frame
  3. GStreamer encodes to H.264 (hardware or software)
  4. WebSocket delivers the stream to your browser

Encode modes (set via HELIX_VIDEO_MODE):

  • zerocopy — DMA-BUF → CUDA → NVENC. Fastest; requires NVIDIA GPU
  • native — DMA-BUF via GStreamer 1.24+. Works on Intel/AMD
  • shm — Shared memory. Most compatible; higher CPU usage

Encoders (set via HELIX_ENCODER):

  • nvenc — NVIDIA (default on NVIDIA hardware)
  • vaapi — Intel/AMD (default on AMD hardware where supported)
  • openh264 / x264 — Software fallback

Session lifecycle

EventWhat happens
Session startContainer created, repo cloned, agent process started
Session runningVideo streamed, agent makes commits to working branch
Session end (normal)Container destroyed, commits preserved on branch
Session end (crash)Container destroyed, commits preserved on branch; new session can resume
Keep-alive timeoutSession ends if idle for the configured timeout (default: 30 minutes)

Concurrency limits

DeploymentConcurrent sessions
Helix CloudScales automatically with your plan
Mac App (16 GB)~2–3
Mac App (32 GB)~6–8
Mac App (64 GB+)12–15
Linux / K8sLimited by available GPU memory and CPU

On Kubernetes, the sandbox chart's sandbox.maxSessions value caps concurrent sessions.