{
  "slug": "spaces-cold-start",
  "question": "How fast does a Cua Space start on a Mac?",
  "answer": "On a Mac Studio (Apple M2 Max, 96 GB), a new headless Cua Space ran its first command 234.6 ms after create as a gVisor container, 341.1 ms as a microVM and 637.3 ms as a QEMU VM (p50, n = 30 each), measured 2026-10-25 on Cua Spaces 0.15.0.",
  "status": "measured",
  "url": "https://cua.ai/benchmarks/spaces-cold-start",
  "csv": "https://cua.ai/benchmarks/spaces-cold-start.csv",
  "markdown": "https://cua.ai/benchmarks/spaces-cold-start.md",
  "group": "Start",
  "series": [
    {
      "label": "gVisor container",
      "run": {
        "run": "2026-10-25",
        "schema": "cua.bench-result/v1",
        "bench": "spaces-startup.gvisor",
        "slug": "spaces-cold-start",
        "metric": "create_to_first_exec_ms",
        "value": 234.6,
        "unit": "ms",
        "stat": "p50",
        "n": 30,
        "percentiles": {
          "p50": 234.6,
          "p90": 257.7,
          "p95": 258.5,
          "p99": 270.1,
          "min": 204.8,
          "max": 270.1
        },
        "extra": {
          "first_create_ms": 13014.3,
          "failed": 0
        },
        "samples_csv": "samples.csv",
        "measured_at": "2026-10-25T00:44:00Z",
        "build": {
          "cua": "0.9.0",
          "cua_spacesd": "0.8.0",
          "app": "0.15.0",
          "source": "Cua Spaces 0.15.0 DMG (https://github.com/trycua/cua/releases/download/cua-spaces-v0.15.0/cua-spaces-0.15.0-darwin-universal.dmg, sha256 8725a09ba4132aa8a1667fa48c86416c91d5dec0d3c7dc93f88f5f3e29e0aba0): bundled cua 0.9.0, Helpers/cua-spacesd 0.8.0, cua-vz",
          "published": true,
          "harness": "built from tag cua-spaces-v0.15.0 (709b18d9ee) on the host: cargo build --release -p cua-sdk --example rollout_bench --example channel_bench (Rust 1.97.1)"
        },
        "host": {
          "name": "Mac Studio",
          "model": "Mac14,13 (Mac Studio)",
          "chip": "Apple M2 Max",
          "cpus": 12,
          "memory_gb": 96,
          "os": "macOS 26.6.2 (25G83)",
          "where": "local"
        },
        "environment": {
          "kind": "gvisor",
          "image": "ghcr.io/trycua/linux:24.04-slim",
          "shape": "1 vCPU, 1 GiB, --headless",
          "load_avg_before": [
            1.49,
            1.57,
            1.41
          ],
          "other_vms": 2,
          "network": "n/a (local)",
          "settings": "CUA_POOL_AUTO=off (no warm pool); golden snapshots at their default (on)"
        },
        "method": "Driver on the host: `rollout_bench create` (Rust SDK example built from the release tag) talks to this release's own `cua daemon` (isolated CUA_HOME). Workload: a gVisor container in the built-in Linux runtime VM (Lima on Virtualization.framework, default 4 vCPU / 32 GiB) Space created from ghcr.io/trycua/linux:24.04-slim with `--kind container --runtime gvisor --cpus 1 --memory-mb 1024 --headless` (only cua-spacesd in the guest, no desktop).\n\nEach sample = `SandboxCreateOptions` create call start → the Space's cua-spacesd answers a first `sh -c true` with exit 0 (create + attach + first exec). n=30, serial (one at a time), each Space deleted after its sample. The warm pool is off (`CUA_POOL_AUTO=off`), so every sample is a real create. One warm-up create before the samples is excluded (image pull/unpack and the golden snapshot it records: 13014 ms).",
        "reproduce": "# On an Apple silicon Mac (macOS 26), with Rust (rustup) and git:\ncurl -fLO https://github.com/trycua/cua/releases/download/cua-spaces-v0.15.0/cua-spaces-0.15.0-darwin-universal.dmg\nhdiutil attach -nobrowse -mountpoint /tmp/cua-dmg cua-spaces-0.15.0-darwin-universal.dmg\nmkdir -p ~/bench && ditto \"/tmp/cua-dmg/Cua Spaces.app\" ~/bench/\"Cua Spaces.app\" && hdiutil detach /tmp/cua-dmg\ngit clone --depth 1 --branch cua-spaces-v0.15.0 https://github.com/trycua/cua ~/bench/cua\n(cd ~/bench/cua/libs/cua && cargo build --locked --release -p cua-sdk --example rollout_bench --example channel_bench)\nexport PATH=\"$HOME/bench/Cua Spaces.app/Contents/MacOS:$PATH\" CUA_HOME=~/bench/home DO_NOT_TRACK=1 CUA_TELEMETRY=0\nRB=~/bench/cua/libs/cua/target/release/examples/rollout_bench\ncua daemon start --foreground &   # with CUA_POOL_AUTO=off in its environment\nIMG=ghcr.io/trycua/linux:24.04-slim\n$RB create --prefix warm- --n 1 --image $IMG --kind container --runtime gvisor --cpus 1 --memory-mb 1024 --headless   # excluded warm-up\n$RB create --prefix cold- --n 30 --conc 1 --image $IMG --kind container --runtime gvisor --cpus 1 --memory-mb 1024 --headless   # one JSON line per sample (ready_ms)",
        "caveats": [
          "Headless shape (only cua-spacesd); the full desktop image starts slower.",
          "Golden snapshots on (the default): the excluded first create records the snapshot that later creates restore.",
          "With CUA_GVISOR_WARM=0 (no golden snapshot), n = 10: p50 257.9 ms, p95 272.9 ms."
        ],
        "sources": [],
        "status": "measured"
      }
    },
    {
      "label": "microVM",
      "run": {
        "run": "2026-10-25/result-microvm",
        "schema": "cua.bench-result/v1",
        "bench": "spaces-startup.microvm",
        "slug": "spaces-cold-start",
        "metric": "create_to_first_exec_ms",
        "value": 341.1,
        "unit": "ms",
        "stat": "p50",
        "n": 30,
        "percentiles": {
          "p50": 341.1,
          "p90": 349,
          "p95": 352.1,
          "p99": 359.9,
          "min": 323.2,
          "max": 359.9
        },
        "extra": {
          "first_create_ms": 435,
          "failed": 0
        },
        "samples_csv": "samples-microvm.csv",
        "measured_at": "2026-10-25T00:45:00Z",
        "build": {
          "cua": "0.9.0",
          "cua_spacesd": "0.8.0",
          "app": "0.15.0",
          "source": "Cua Spaces 0.15.0 DMG (https://github.com/trycua/cua/releases/download/cua-spaces-v0.15.0/cua-spaces-0.15.0-darwin-universal.dmg, sha256 8725a09ba4132aa8a1667fa48c86416c91d5dec0d3c7dc93f88f5f3e29e0aba0): bundled cua 0.9.0, Helpers/cua-spacesd 0.8.0, cua-vz",
          "published": true,
          "harness": "built from tag cua-spaces-v0.15.0 (709b18d9ee) on the host: cargo build --release -p cua-sdk --example rollout_bench --example channel_bench (Rust 1.97.1)"
        },
        "host": {
          "name": "Mac Studio",
          "model": "Mac14,13 (Mac Studio)",
          "chip": "Apple M2 Max",
          "cpus": 12,
          "memory_gb": 96,
          "os": "macOS 26.6.2 (25G83)",
          "where": "local"
        },
        "environment": {
          "kind": "microvm",
          "image": "ghcr.io/trycua/linux:24.04-slim",
          "shape": "1 vCPU, 1 GiB, --headless",
          "load_avg_before": [
            2.51,
            1.83,
            1.51
          ],
          "other_vms": 2,
          "network": "n/a (local)",
          "settings": "CUA_POOL_AUTO=off (no warm pool); golden snapshots at their default (on)"
        },
        "method": "Driver on the host: `rollout_bench create` (Rust SDK example built from the release tag) talks to this release's own `cua daemon` (isolated CUA_HOME). Workload: a microVM, runtime vz (cua-vz, Virtualization.framework, one VM per Space, guest kernel 6.1.155) Space created from ghcr.io/trycua/linux:24.04-slim with `--kind microvm --cpus 1 --memory-mb 1024 --headless` (only cua-spacesd in the guest, no desktop).\n\nEach sample = `SandboxCreateOptions` create call start → the Space's cua-spacesd answers a first `sh -c true` with exit 0 (create + attach + first exec). n=30, serial (one at a time), each Space deleted after its sample. The warm pool is off (`CUA_POOL_AUTO=off`), so every sample is a real create. One warm-up create before the samples is excluded (image pull/unpack and the golden snapshot it records: 435 ms).",
        "reproduce": "# On an Apple silicon Mac (macOS 26), with Rust (rustup) and git:\ncurl -fLO https://github.com/trycua/cua/releases/download/cua-spaces-v0.15.0/cua-spaces-0.15.0-darwin-universal.dmg\nhdiutil attach -nobrowse -mountpoint /tmp/cua-dmg cua-spaces-0.15.0-darwin-universal.dmg\nmkdir -p ~/bench && ditto \"/tmp/cua-dmg/Cua Spaces.app\" ~/bench/\"Cua Spaces.app\" && hdiutil detach /tmp/cua-dmg\ngit clone --depth 1 --branch cua-spaces-v0.15.0 https://github.com/trycua/cua ~/bench/cua\n(cd ~/bench/cua/libs/cua && cargo build --locked --release -p cua-sdk --example rollout_bench --example channel_bench)\nexport PATH=\"$HOME/bench/Cua Spaces.app/Contents/MacOS:$PATH\" CUA_HOME=~/bench/home DO_NOT_TRACK=1 CUA_TELEMETRY=0\nRB=~/bench/cua/libs/cua/target/release/examples/rollout_bench\ncua daemon start --foreground &   # with CUA_POOL_AUTO=off in its environment\nIMG=ghcr.io/trycua/linux:24.04-slim\n$RB create --prefix warm- --n 1 --image $IMG --kind microvm --cpus 1 --memory-mb 1024 --headless   # excluded warm-up\n$RB create --prefix cold- --n 30 --conc 1 --image $IMG --kind microvm --cpus 1 --memory-mb 1024 --headless   # one JSON line per sample (ready_ms)",
        "caveats": [
          "Headless shape (only cua-spacesd); the full desktop image starts slower.",
          "Golden snapshots on (the default): the excluded first create records the snapshot that later creates restore.",
          "A start without the golden snapshot was not measured."
        ],
        "sources": [],
        "status": "measured"
      }
    },
    {
      "label": "QEMU VM",
      "run": {
        "run": "2026-10-25/result-vm",
        "schema": "cua.bench-result/v1",
        "bench": "spaces-startup.vm",
        "slug": "spaces-cold-start",
        "metric": "create_to_first_exec_ms",
        "value": 637.3,
        "unit": "ms",
        "stat": "p50",
        "n": 30,
        "percentiles": {
          "p50": 637.3,
          "p90": 657,
          "p95": 661.3,
          "p99": 674.7,
          "min": 576.9,
          "max": 674.7
        },
        "extra": {
          "first_create_ms": 1699.1,
          "failed": 0
        },
        "samples_csv": "samples-vm.csv",
        "measured_at": "2026-10-25T00:46:00Z",
        "build": {
          "cua": "0.9.0",
          "cua_spacesd": "0.8.0",
          "app": "0.15.0",
          "source": "Cua Spaces 0.15.0 DMG (https://github.com/trycua/cua/releases/download/cua-spaces-v0.15.0/cua-spaces-0.15.0-darwin-universal.dmg, sha256 8725a09ba4132aa8a1667fa48c86416c91d5dec0d3c7dc93f88f5f3e29e0aba0): bundled cua 0.9.0, Helpers/cua-spacesd 0.8.0, cua-vz",
          "published": true,
          "harness": "built from tag cua-spaces-v0.15.0 (709b18d9ee) on the host: cargo build --release -p cua-sdk --example rollout_bench --example channel_bench (Rust 1.97.1)"
        },
        "host": {
          "name": "Mac Studio",
          "model": "Mac14,13 (Mac Studio)",
          "chip": "Apple M2 Max",
          "cpus": 12,
          "memory_gb": 96,
          "os": "macOS 26.6.2 (25G83)",
          "where": "local"
        },
        "environment": {
          "kind": "vm",
          "image": "ghcr.io/trycua/linux:24.04-slim",
          "shape": "1 vCPU, 1 GiB, --headless",
          "load_avg_before": [
            2.89,
            1.93,
            1.55
          ],
          "other_vms": 2,
          "network": "n/a (local)",
          "settings": "CUA_POOL_AUTO=off (no warm pool); golden snapshots at their default (on)"
        },
        "method": "Driver on the host: `rollout_bench create` (Rust SDK example built from the release tag) talks to this release's own `cua daemon` (isolated CUA_HOME). Workload: a full Linux VM, runtime qemu (QEMU 10.2.2 on HVF, Homebrew build found by the runtime check), image resolves to linux:24.04-slim-disk Space created from ghcr.io/trycua/linux:24.04-slim with `--kind vm --cpus 1 --memory-mb 1024 --headless` (only cua-spacesd in the guest, no desktop).\n\nEach sample = `SandboxCreateOptions` create call start → the Space's cua-spacesd answers a first `sh -c true` with exit 0 (create + attach + first exec). n=30, serial (one at a time), each Space deleted after its sample. The warm pool is off (`CUA_POOL_AUTO=off`), so every sample is a real create. One warm-up create before the samples is excluded (image pull/unpack and the golden snapshot it records: 1699 ms).",
        "reproduce": "# On an Apple silicon Mac (macOS 26), with Rust (rustup) and git:\ncurl -fLO https://github.com/trycua/cua/releases/download/cua-spaces-v0.15.0/cua-spaces-0.15.0-darwin-universal.dmg\nhdiutil attach -nobrowse -mountpoint /tmp/cua-dmg cua-spaces-0.15.0-darwin-universal.dmg\nmkdir -p ~/bench && ditto \"/tmp/cua-dmg/Cua Spaces.app\" ~/bench/\"Cua Spaces.app\" && hdiutil detach /tmp/cua-dmg\ngit clone --depth 1 --branch cua-spaces-v0.15.0 https://github.com/trycua/cua ~/bench/cua\n(cd ~/bench/cua/libs/cua && cargo build --locked --release -p cua-sdk --example rollout_bench --example channel_bench)\nexport PATH=\"$HOME/bench/Cua Spaces.app/Contents/MacOS:$PATH\" CUA_HOME=~/bench/home DO_NOT_TRACK=1 CUA_TELEMETRY=0\nRB=~/bench/cua/libs/cua/target/release/examples/rollout_bench\ncua daemon start --foreground &   # with CUA_POOL_AUTO=off in its environment\nIMG=ghcr.io/trycua/linux:24.04-slim\n$RB create --prefix warm- --n 1 --image $IMG --kind vm --cpus 1 --memory-mb 1024 --headless   # excluded warm-up\n$RB create --prefix cold- --n 30 --conc 1 --image $IMG --kind vm --cpus 1 --memory-mb 1024 --headless   # one JSON line per sample (ready_ms)",
        "caveats": [
          "Headless shape (only cua-spacesd); the full desktop image starts slower.",
          "Golden snapshots on (the default): the excluded first create records the snapshot that later creates restore.",
          "A start without the golden snapshot is not published."
        ],
        "sources": [],
        "status": "measured"
      }
    }
  ]
}
