{
  "url": "https://cua.ai/benchmarks",
  "schema": "cua.bench-result/v1",
  "benchmarks": [
    {
      "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"
          }
        }
      ]
    },
    {
      "slug": "spaces-cold-start-linux",
      "question": "How fast does a Cua Space start on a Linux server?",
      "answer": "On an AWS c7g.2xlarge (Graviton3, 8 vCPU, 16 GB) running Ubuntu 24.04, a new headless gVisor Space ran its first command 350.9 ms after create (p50, n = 30), measured 2026-10-24 with the cua CLI from Cua Spaces 0.15.0.",
      "status": "measured",
      "url": "https://cua.ai/benchmarks/spaces-cold-start-linux",
      "csv": "https://cua.ai/benchmarks/spaces-cold-start-linux.csv",
      "markdown": "https://cua.ai/benchmarks/spaces-cold-start-linux.md",
      "group": "Start",
      "current": {
        "run": "2026-10-24",
        "schema": "cua.bench-result/v1",
        "bench": "spaces-startup.gvisor-headless-cli",
        "slug": "spaces-cold-start-linux",
        "metric": "create_to_first_exec_ms",
        "value": 350.9,
        "unit": "ms",
        "stat": "p50",
        "n": 30,
        "percentiles": {
          "p50": 350.9,
          "p90": 399.4,
          "p95": 404.9,
          "p99": 408.3,
          "min": 340.4,
          "max": 408.6
        },
        "extra": {
          "attempts": 30,
          "failed": 0,
          "mean_ms": 357.2,
          "create_ms_p50": 311.1,
          "exec_ms_p50": 39.3,
          "full_image_p50_ms": 363.4,
          "full_image_n": 30,
          "instance_usd_per_hour": 0.289
        },
        "samples_csv": "samples.csv",
        "measured_at": "2026-10-24T19:49:12Z",
        "build": {
          "cua": "0.9.0",
          "app": "0.15.0",
          "source": "Cua Spaces 0.15.0 linux-arm64 .deb (GitHub release cua-spaces-v0.15.0, published 2026-10-24T19:42Z; sha256 736495d2...d845), binary opt/Cua Spaces/resources/native/cua, `cua --version` = cua 0.9.0",
          "published": true
        },
        "host": {
          "name": "AWS EC2 c7g.2xlarge",
          "model": "c7g.2xlarge",
          "chip": "AWS Graviton3",
          "cpus": 8,
          "memory_gb": 16,
          "os": "Ubuntu 24.04.5 LTS, kernel 7.0.0-1014-aws",
          "where": "AWS us-west-2 (on-demand)"
        },
        "environment": {
          "kind": "container",
          "runtime": "gvisor (runsc release-20261019.0, Docker 29.1.3)",
          "image": "ghcr.io/trycua/linux:24.04-slim (cached locally)",
          "headless": true,
          "load_avg_before": 0.29,
          "other_vms": 0,
          "network": "n/a (local create on the box)",
          "warm_pools": "off (CUA_POOL_AUTO=off, CUA_GVISOR_WARM=0)"
        },
        "method": "Released `cua` CLI on the box, isolated CUA_HOME, daemon `cua daemon start --foreground`. Serial, n=30. Per sample: t0 before `cua sb create linux --on local --headless --kind container --runtime gvisor --tier slim --name cb-lin-slim-<i> --json`; value = when `cua sb exec <name> -- echo ok` has returned 'ok' (two CLI process launches included). Then `cua sb rm --force` (not timed). Image pulled by a warmup create (excluded). Warm pools off, so each sample is a cold container start.",
        "reproduce": "# Ubuntu 24.04 arm64 with docker.io and gVisor runsc (`runsc install`)\ncurl -LO https://github.com/trycua/cua/releases/download/cua-spaces-v0.15.0/cua-spaces-0.15.0-linux-arm64.deb && dpkg -x cua-spaces-0.15.0-linux-arm64.deb rel\nexport PATH=\"$PWD/rel/opt/Cua Spaces/resources/native:$PATH\" CUA_HOME=$PWD/home CUA_POOL_AUTO=off CUA_GVISOR_WARM=0\ncurl -fLO https://cua.ai/benchmarks/spaces-cold-start-linux/files/cloud_start.py\ncua daemon start --foreground &\npython3 cloud_start.py local 1 warm --headless --kind container --runtime gvisor --tier slim   # excluded warm-up\npython3 cloud_start.py local 30 lin-slim --headless --kind container --runtime gvisor --tier slim",
        "caveats": [
          "Timed through the CLI: two CLI process starts (create, then exec) are included.",
          "The full desktop image, headless, took p50 363.4 ms (n = 30)."
        ],
        "sources": [],
        "status": "measured"
      },
      "earlier": []
    },
    {
      "slug": "microvm-cold-start-mac",
      "question": "How fast does a microVM Space start on a Mac?",
      "answer": "A new headless microVM Space (one Virtualization.framework VM per Space) ran its first command 341.1 ms after create (p50, n = 30) on a Mac Studio (Apple M2 Max, 96 GB), measured 2026-10-25 on Cua Spaces 0.15.0.",
      "status": "measured",
      "url": "https://cua.ai/benchmarks/microvm-cold-start-mac",
      "csv": "https://cua.ai/benchmarks/microvm-cold-start-mac.csv",
      "markdown": "https://cua.ai/benchmarks/microvm-cold-start-mac.md",
      "group": "Start",
      "current": {
        "run": "2026-10-25",
        "schema": "cua.bench-result/v1",
        "bench": "spaces-startup.microvm",
        "slug": "microvm-cold-start-mac",
        "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.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"
      },
      "earlier": []
    },
    {
      "slug": "cloud-first-space-time",
      "question": "How long does a Space take to start in your own cloud?",
      "answer": "From a client Mac, a Space on a new cloud machine ran its first command 105 s after the request on AWS, 194 s on Google Cloud and 164 s on Hetzner (p50, n = 10 each, 2026-10-24). On a machine already running it took 2.03 s on AWS and 3.78 s on Hetzner (p50, n = 12 each, 2026-10-25).",
      "status": "measured",
      "url": "https://cua.ai/benchmarks/cloud-first-space-time",
      "csv": "https://cua.ai/benchmarks/cloud-first-space-time.csv",
      "markdown": "https://cua.ai/benchmarks/cloud-first-space-time.md",
      "group": "Start",
      "series": [
        {
          "label": "AWS, new machine",
          "run": {
            "run": "2026-10-24/result-aws",
            "schema": "cua.bench-result/v1",
            "bench": "cloud-start.aws",
            "slug": "cloud-first-space-time",
            "metric": "create_to_first_exec_ms",
            "value": 105291.2,
            "unit": "ms",
            "stat": "p50",
            "n": 10,
            "percentiles": {
              "p50": 105291.2,
              "p90": 108458.7,
              "p95": 111094.6,
              "p99": 113203.4,
              "min": 101927.1,
              "max": 113730.6
            },
            "extra": {
              "attempts": 10,
              "failed": 0,
              "mean_ms": 105507,
              "create_ms_p50": 102396.8,
              "exec_ms_p50": 2096.9
            },
            "samples_csv": "samples-aws.csv",
            "measured_at": "2026-10-24T19:46:00Z",
            "build": {
              "cua": "0.9.0",
              "app": "0.15.0",
              "source": "cua CLI bundled in Cua Spaces 0.15.0 DMG (GitHub release cua-spaces-v0.15.0, published 2026-10-24T19:42Z; dmg sha256 8725a09b...aba0), Contents/MacOS/cua, `cua --version` = cua 0.9.0",
              "published": true
            },
            "host": {
              "name": "Mac Studio (the client)",
              "model": "Mac14,13",
              "chip": "Apple M2 Max",
              "cpus": 12,
              "memory_gb": 96,
              "os": "macOS 26.6.2",
              "where": "client in the San Francisco Bay Area, home network; Space reaches the client via relay.cua.ai"
            },
            "environment": {
              "kind": "container (Docker on a new cloud VM, one VM per Space)",
              "cloud": "aws",
              "region": "us-west-2",
              "machine_type": "t4g.medium",
              "usd_per_hour_listed_by_cua": "0.0419",
              "image": "ghcr.io/trycua/linux:24.04 (cua's default `linux`)",
              "warm_host": false,
              "autoscale": "off (`cua cloud budget --autoscale off`: each Space gets a new machine of its own)",
              "load_avg_before": 1.46,
              "other_vms": "other sessions' VMs on the client Mac (not on the path)"
            },
            "method": "Released cua 0.9.0 CLI, isolated signed-in CUA_HOME, `cua cloud connect aws` then `cua cloud budget --max-per-hour 3 --monthly 20 --autoscale off`. Serial; per sample: t0 before `cua sb create linux --on aws --name cb-<label>-<i> --json`; value = when `cua sb exec <name> -- echo ok` has returned 'ok' (machine boot, Docker, image pull and relay join included; no warm host, no prewarm). Then `cua sb rm <name> --force` (not timed). Two batches of 5 (cold-*, cold2-*), all samples kept.",
            "reproduce": "# Cua Spaces 0.15.0 from cua.ai/download (its cua CLI is cua 0.9.0)\ncurl -fLO https://cua.ai/benchmarks/cloud-first-space-time/files/cloud_start.py\ncua auth login\ncua cloud connect aws --profile <aws-profile> --region us-west-2 --ttl-hours 2\ncua cloud budget --max-per-hour 3 --monthly 20 --autoscale off\nfor b in 1 2; do python3 cloud_start.py aws 5 cold$b-aws; done   # create, then exec, then rm\ncua cloud sweep --all --delete",
            "caveats": [
              "Includes the cloud's VM boot and the image pull on a new VM. The client is a Mac on a home network in California; API calls go to the cloud, and the first command goes through relay.cua.ai.",
              "The machine type is the one cua 0.9.0 picks for the default `linux` image: t4g.medium."
            ],
            "sources": [],
            "status": "measured"
          }
        },
        {
          "label": "Google Cloud, new machine",
          "run": {
            "run": "2026-10-24/result-gcp",
            "schema": "cua.bench-result/v1",
            "bench": "cloud-start.gcp",
            "slug": "cloud-first-space-time",
            "metric": "create_to_first_exec_ms",
            "value": 194345.8,
            "unit": "ms",
            "stat": "p50",
            "n": 10,
            "percentiles": {
              "p50": 194345.8,
              "p90": 216966.7,
              "p95": 230354.2,
              "p99": 241064.2,
              "min": 167806.4,
              "max": 243741.7
            },
            "extra": {
              "attempts": 10,
              "failed": 0,
              "mean_ms": 193385.6,
              "create_ms_p50": 191726.1,
              "exec_ms_p50": 2957.5
            },
            "samples_csv": "samples-gcp.csv",
            "measured_at": "2026-10-24T19:46:00Z",
            "build": {
              "cua": "0.9.0",
              "app": "0.15.0",
              "source": "cua CLI bundled in Cua Spaces 0.15.0 DMG (GitHub release cua-spaces-v0.15.0, published 2026-10-24T19:42Z; dmg sha256 8725a09b...aba0), Contents/MacOS/cua, `cua --version` = cua 0.9.0",
              "published": true
            },
            "host": {
              "name": "Mac Studio (the client)",
              "model": "Mac14,13",
              "chip": "Apple M2 Max",
              "cpus": 12,
              "memory_gb": 96,
              "os": "macOS 26.6.2",
              "where": "client in the San Francisco Bay Area, home network; Space reaches the client via relay.cua.ai"
            },
            "environment": {
              "kind": "container (Docker on a new cloud VM, one VM per Space)",
              "cloud": "gcp",
              "region": "us-west1 (zone us-west1-a)",
              "machine_type": "e2-medium",
              "usd_per_hour_listed_by_cua": "~0.04 (cua cloud status)",
              "image": "ghcr.io/trycua/linux:24.04 (cua's default `linux`)",
              "warm_host": false,
              "autoscale": "off (`cua cloud budget --autoscale off`: each Space gets a new machine of its own)",
              "load_avg_before": 1.46,
              "other_vms": "other sessions' VMs on the client Mac (not on the path)"
            },
            "method": "Released cua 0.9.0 CLI, isolated signed-in CUA_HOME, `cua cloud connect gcp` then `cua cloud budget --max-per-hour 3 --monthly 20 --autoscale off`. Serial; per sample: t0 before `cua sb create linux --on gcp --name cb-<label>-<i> --json`; value = when `cua sb exec <name> -- echo ok` has returned 'ok' (machine boot, Docker, image pull and relay join included; no warm host, no prewarm). Then `cua sb rm <name> --force` (not timed). Two batches of 5 (cold-*, cold2-*), all samples kept.",
            "reproduce": "# Cua Spaces 0.15.0 from cua.ai/download (its cua CLI is cua 0.9.0)\ncurl -fLO https://cua.ai/benchmarks/cloud-first-space-time/files/cloud_start.py\ncua auth login\ngcloud auth login   # cua uses `gcloud auth print-access-token`\ncua cloud connect gcp --project <project> --region us-west1 --ttl-hours 2\ncua cloud budget --max-per-hour 3 --monthly 20 --autoscale off\nfor b in 1 2; do python3 cloud_start.py gcp 5 cold$b-gcp; done   # create, then exec, then rm\ncua cloud sweep --all --delete",
            "caveats": [
              "Includes the cloud's VM boot and the image pull on a new VM. The client is a Mac on a home network in California; API calls go to the cloud, and the first command goes through relay.cua.ai.",
              "The machine type is the one cua 0.9.0 picks for the default `linux` image: e2-medium."
            ],
            "sources": [],
            "status": "measured"
          }
        },
        {
          "label": "Hetzner, new machine",
          "run": {
            "run": "2026-10-24/result-hetzner",
            "schema": "cua.bench-result/v1",
            "bench": "cloud-start.hetzner",
            "slug": "cloud-first-space-time",
            "metric": "create_to_first_exec_ms",
            "value": 163662.1,
            "unit": "ms",
            "stat": "p50",
            "n": 10,
            "percentiles": {
              "p50": 163662.1,
              "p90": 182470.7,
              "p95": 184113,
              "p99": 185426.8,
              "min": 103319.4,
              "max": 185755.2
            },
            "extra": {
              "attempts": 10,
              "failed": 0,
              "mean_ms": 151295.4,
              "create_ms_p50": 158542.5,
              "exec_ms_p50": 3257.9
            },
            "samples_csv": "samples-hetzner.csv",
            "measured_at": "2026-10-24T19:46:00Z",
            "build": {
              "cua": "0.9.0",
              "app": "0.15.0",
              "source": "cua CLI bundled in Cua Spaces 0.15.0 DMG (GitHub release cua-spaces-v0.15.0, published 2026-10-24T19:42Z; dmg sha256 8725a09b...aba0), Contents/MacOS/cua, `cua --version` = cua 0.9.0",
              "published": true
            },
            "host": {
              "name": "Mac Studio (the client)",
              "model": "Mac14,13",
              "chip": "Apple M2 Max",
              "cpus": 12,
              "memory_gb": 96,
              "os": "macOS 26.6.2",
              "where": "client in the San Francisco Bay Area, home network; Space reaches the client via relay.cua.ai"
            },
            "environment": {
              "kind": "container (Docker on a new cloud VM, one VM per Space)",
              "cloud": "hetzner",
              "region": "fsn1 (Falkenstein, DE)",
              "machine_type": "cx23 (2 vCPU x86, 4 GB)",
              "usd_per_hour_listed_by_cua": "cx23 $0.0104/h + primary IPv4 $0.0010/h (Hetzner API, 2026-10-24)",
              "image": "ghcr.io/trycua/linux:24.04 (cua's default `linux`)",
              "warm_host": false,
              "autoscale": "off (`cua cloud budget --autoscale off`: each Space gets a new machine of its own)",
              "load_avg_before": 1.46,
              "other_vms": "other sessions' VMs on the client Mac (not on the path)"
            },
            "method": "Released cua 0.9.0 CLI, isolated signed-in CUA_HOME, `cua cloud connect hetzner` then `cua cloud budget --max-per-hour 3 --monthly 20 --autoscale off`. Serial; per sample: t0 before `cua sb create linux --on hetzner --name cb-<label>-<i> --json`; value = when `cua sb exec <name> -- echo ok` has returned 'ok' (machine boot, Docker, image pull and relay join included; no warm host, no prewarm). Then `cua sb rm <name> --force` (not timed). Two batches of 5 (cold-*, cold2-*), all samples kept.",
            "reproduce": "# Cua Spaces 0.15.0 from cua.ai/download (its cua CLI is cua 0.9.0)\ncurl -fLO https://cua.ai/benchmarks/cloud-first-space-time/files/cloud_start.py\ncua auth login\ncua cloud connect hetzner --token-stdin --region fsn1 --ttl-hours 2 < token\ncua cloud budget --max-per-hour 3 --monthly 20 --autoscale off\nfor b in 1 2; do python3 cloud_start.py hetzner 5 cold$b-hetzner; done   # create, then exec, then rm\ncua cloud sweep --all --delete",
            "caveats": [
              "Includes the cloud's VM boot and the image pull on a new VM. The client is a Mac on a home network in California; API calls go to the cloud, and the first command goes through relay.cua.ai.",
              "Hetzner bills each started hour, so each sample cost an hour of cx23 plus IPv4 ($0.0114).",
              "The client is in California and the server in Germany, so relay round trips cross the Atlantic; server boot and image pull dominate."
            ],
            "sources": [],
            "status": "measured"
          }
        },
        {
          "label": "AWS, machine running",
          "run": {
            "run": "2026-10-25/result-aws-warm",
            "schema": "cua.bench-result/v1",
            "bench": "cloud-start.aws-warm-host",
            "slug": "cloud-first-space-time",
            "metric": "create_to_first_exec_ms",
            "value": 2026.4,
            "unit": "ms",
            "stat": "p50",
            "n": 12,
            "percentiles": {
              "p50": 2026.4,
              "p90": 3993.3,
              "p95": 4214.2,
              "p99": 4335.4,
              "min": 668.7,
              "max": 4365.7
            },
            "extra": {
              "attempts": 12,
              "failed": 0,
              "mean_ms": 2233.3,
              "create_ms_p50": 1949.7,
              "exec_ms_p50": 78.6
            },
            "samples_csv": "samples-aws-warm.csv",
            "measured_at": "2026-10-25T01:08:26Z",
            "build": {
              "cua": "0.9.0",
              "app": "0.15.0",
              "source": "cua CLI bundled in Cua Spaces 0.15.0 DMG (GitHub release cua-spaces-v0.15.0, published 2026-10-24T19:42Z; dmg sha256 8725a09b...aba0), Contents/MacOS/cua, `cua --version` = cua 0.9.0",
              "published": true
            },
            "host": {
              "name": "Mac Studio (the client)",
              "model": "Mac14,13",
              "chip": "Apple M2 Max",
              "cpus": 12,
              "memory_gb": 96,
              "os": "macOS 26.6.2",
              "where": "client in the San Francisco Bay Area, home network; Space reaches the client via relay.cua.ai"
            },
            "environment": {
              "kind": "container (gVisor on an elastic pool host)",
              "cloud": "aws",
              "region": "us-west-2",
              "machine_type": "pool host c7g.2xlarge (8 vCPU, 16 GiB), $0.3016/h per cua",
              "image": "ghcr.io/trycua/linux:24.04 (cua's default `linux`, already pulled on the host)",
              "warm_host": true,
              "autoscale": "on, cap $0.40/h, host added and pinned with `cua cloud hosts add`",
              "load_avg_before": 3.08,
              "other_vms": "other sessions' VMs on the client Mac (not on the path)"
            },
            "method": "Released cua 0.9.0, isolated signed-in CUA_HOME, daemon `cua daemon start --foreground`. `cua cloud hosts add --provider aws --type c7g.2xlarge --ttl-hours 3` (joined in ~70 s; not timed). Two warm-up Spaces pulled the image first (not counted). Serial, n=12. Per sample: t0 before `cua spaces create linux --on aws --instance-type c7g.2xlarge --name cb-warm-aws-<i> --json`; value = when `cua sb exec <ref from create> -- echo ok` has returned 'ok'. Then `cua spaces delete --force` (not timed).",
            "reproduce": "# Cua Spaces 0.15.0 from cua.ai/download (its cua CLI is cua 0.9.0)\ncurl -fLO https://cua.ai/benchmarks/cloud-first-space-time/files/cloud_start.py\ncua auth login\ncua cloud connect aws --profile <aws-profile> --region us-west-2\ncua daemon start --foreground &\ncua cloud budget --autoscale on --max-per-hour 0.40 --monthly 20\ncua cloud hosts add --provider aws --type c7g.2xlarge --ttl-hours 3   # wait until `cua cloud hosts ls` says joined\ncua spaces create linux --on aws --instance-type c7g.2xlarge --name w0 --json && cua spaces delete w0 --force   # image pull\nCUA_BENCH_SPACES=1 python3 cloud_start.py aws 12 warm-aws --instance-type c7g.2xlarge\ncua cloud hosts rm <host> && cua cloud sweep --all --delete",
            "caveats": [
              "The first command uses the Space reference that create returns.",
              "The client is on a home network in California; create and exec go through relay.cua.ai to us-west-2."
            ],
            "sources": [],
            "status": "measured"
          }
        },
        {
          "label": "Hetzner, machine running",
          "run": {
            "run": "2026-10-25/result-hetzner-warm",
            "schema": "cua.bench-result/v1",
            "bench": "cloud-start.hetzner-warm-host",
            "slug": "cloud-first-space-time",
            "metric": "create_to_first_exec_ms",
            "value": 3784.6,
            "unit": "ms",
            "stat": "p50",
            "n": 12,
            "percentiles": {
              "p50": 3784.6,
              "p90": 33477.7,
              "p95": 36321.9,
              "p99": 36390.7,
              "min": 2253.5,
              "max": 36407.9
            },
            "extra": {
              "attempts": 12,
              "failed": 0,
              "mean_ms": 9543.9,
              "create_ms_p50": 3553.4,
              "exec_ms_p50": 229.7
            },
            "samples_csv": "samples-hetzner-warm.csv",
            "measured_at": "2026-10-25T01:29:08Z",
            "build": {
              "cua": "0.9.0",
              "app": "0.15.0",
              "source": "cua CLI bundled in Cua Spaces 0.15.0 DMG (GitHub release cua-spaces-v0.15.0, published 2026-10-24T19:42Z; dmg sha256 8725a09b...aba0), Contents/MacOS/cua, `cua --version` = cua 0.9.0",
              "published": true
            },
            "host": {
              "name": "Mac Studio (the client)",
              "model": "Mac14,13",
              "chip": "Apple M2 Max",
              "cpus": 12,
              "memory_gb": 96,
              "os": "macOS 26.6.2",
              "where": "client in the San Francisco Bay Area, home network; Space reaches the client via relay.cua.ai"
            },
            "environment": {
              "kind": "container (gVisor on an elastic pool host)",
              "cloud": "hetzner",
              "region": "fsn1",
              "machine_type": "pool host cax31 (8 vCPU arm64, 16 GB), $0.0410/h per cua (cax31 $0.0400 + IPv4 $0.0010, Hetzner API)",
              "image": "ghcr.io/trycua/linux:24.04 (cua's default `linux`, already pulled on the host)",
              "warm_host": true,
              "autoscale": "on, cap $0.40/h, host added and pinned with `cua cloud hosts add --provider hetzner --type cax31 --region fsn1`",
              "load_avg_before": 3.08,
              "other_vms": "other sessions' VMs on the client Mac (not on the path)"
            },
            "method": "Released cua 0.9.0, isolated signed-in CUA_HOME, daemon `cua daemon start --foreground`. `cua cloud hosts add --provider hetzner --type cax31 --region fsn1 --ttl-hours 3` (joined in ~2 min; not timed). Two warm-up Spaces pulled the image first (not counted). Serial, n=12. Per sample: t0 before `cua spaces create linux --on hetzner --instance-type cax31 --name cb-warm-hetzner-<i> --json`; value = when `cua sb exec <ref from create> -- echo ok` has returned 'ok'. Then `cua spaces delete --force` (not timed).",
            "reproduce": "# Cua Spaces 0.15.0 from cua.ai/download (its cua CLI is cua 0.9.0)\ncurl -fLO https://cua.ai/benchmarks/cloud-first-space-time/files/cloud_start.py\ncua auth login\ncua cloud connect hetzner --token-stdin --region fsn1 < token\ncua daemon start --foreground &\ncua cloud budget --autoscale on --max-per-hour 0.40 --monthly 20\ncua cloud hosts add --provider hetzner --type cax31 --region fsn1 --ttl-hours 3   # wait until `cua cloud hosts ls` says joined\ncua spaces create linux --on hetzner --instance-type cax31 --name w0 --json && cua spaces delete w0 --force   # image pull\nCUA_BENCH_SPACES=1 python3 cloud_start.py hetzner 12 warm-hetzner --instance-type cax31\ncua cloud hosts rm <host> && cua cloud sweep --all --delete",
            "caveats": [
              "Bimodal: 2 of 12 creates took about 36 s, the rest 2 to 8 s, on an otherwise idle host. The cause was not diagnosed.",
              "The client is in California and the host in Germany; create and exec go through relay.cua.ai (exec about 230 ms)."
            ],
            "sources": [],
            "status": "measured"
          }
        }
      ]
    },
    {
      "slug": "windows-and-macos-vm-start",
      "question": "How fast do Windows and macOS Spaces start on a Mac?",
      "answer": null,
      "status": "tbd",
      "url": "https://cua.ai/benchmarks/windows-and-macos-vm-start",
      "csv": null,
      "markdown": null,
      "group": "Start",
      "current": null,
      "earlier": [],
      "needs": "A start-time run for Windows and macOS images on This Mac."
    },
    {
      "slug": "fork-64-sandboxes-one-mac",
      "question": "How fast can one Mac fork 64 sandboxes from a running checkpoint?",
      "answer": "With CUA_VM_VCPU_OVERCOMMIT raised from the default 8 to 12, one Mac forked 64 QEMU VMs (2 vCPU, 2 GiB each) from a running checkpoint in 7.34 s, first start to last fork ready, on a Mac Studio (Apple M2 Max, 96 GB), measured 2026-10-25. At the default setting the wave stops at fork 48.",
      "status": "measured",
      "url": "https://cua.ai/benchmarks/fork-64-sandboxes-one-mac",
      "csv": "https://cua.ai/benchmarks/fork-64-sandboxes-one-mac.csv",
      "markdown": "https://cua.ai/benchmarks/fork-64-sandboxes-one-mac.md",
      "group": "Fork and snapshot",
      "current": {
        "run": "2026-10-25",
        "schema": "cua.bench-result/v1",
        "bench": "fork-fanout.qemu",
        "slug": "fork-64-sandboxes-one-mac",
        "metric": "wave64_wall_s",
        "value": 7.34,
        "unit": "s",
        "stat": "max",
        "n": 64,
        "percentiles": {
          "fork_ms_p50": 4988.2,
          "fork_ms_p95": 6736.2,
          "fork_ms_max": 7050
        },
        "extra": {
          "private_mb_per_fork_64": 249.8,
          "shared_file_mb_64": 644.2,
          "checkpoint_ms": 648.4,
          "wave8_wall_s": 0.79,
          "wave32_wall_s": 3.09,
          "wave64_wall_s": 7.34,
          "wave8_fork_ms_p50": 736.2,
          "wave32_fork_ms_p50": 2075.9,
          "wave64_fork_ms_p50": 4988.2,
          "wave8_fork_ms_p95": 784.5,
          "wave32_fork_ms_p95": 2757.3,
          "wave64_fork_ms_p95": 6736.2,
          "default_settings_wave32_wall_s": 3.68,
          "default_settings_wave32_fork_ms_p50": 2770.7,
          "default_settings_wave8_wall_s": 0.75
        },
        "measured_at": "2026-10-25T01:30: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": "opt-in test cua-daemon/tests/qemu_fork_fanout.rs, built from tag cua-spaces-v0.15.0 (cargo test --release, Rust 1.97.1) on the host"
        },
        "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 (QEMU 10.2.2 on HVF, Homebrew)",
          "image": "ghcr.io/trycua/linux:24.04-slim-disk (arm64, sha256:829c1dcf57d5356425483eebf5fb6fef20f943a7690a69308dcba24925fbb78b)",
          "shape": "world and every fork 2 vCPU / 2048 MiB",
          "settings": "CUA_VM_VCPU_OVERCOMMIT=12 (NON-DEFAULT; default 8). FORKABLE=1, WARM=0, DIRTY_MB=300",
          "load_avg_before": [
            1.42,
            2.83,
            4.89
          ],
          "other_vms": 1,
          "network": "n/a (local)"
        },
        "method": "Non-default setting: CUA_VM_VCPU_OVERCOMMIT=12, the documented host CPU overcommit (default 8; see the Cua SDK local runtimes guide). At the default, 64 forks of 2 vCPU need 128 vCPUs and the release refuses the 48th fork (see caveats).\n\nDriver on the host: `bench/fork-fanout/run.sh` from tag cua-spaces-v0.15.0, which builds and runs the opt-in test `cua-daemon/tests/qemu_fork_fanout.rs` (release). It drives the release's QEMU runtime library directly (no daemon). A bake VM (2 vCPU / 2 GiB, published slim disk, forkable: RAM in a shareable file) dirties 300 MB of RAM, is checkpointed and pinned, then forked in waves of 8, 32 and 64 (every fork of a wave started at once). Per fork: fork + start until its cua-spacesd answers with its own token. The test checks every fork holds the world's RAM/disk state, its writes reach no other fork, and it shares the world's unwritten pages. Headline = wall time of the 64-wave (first start to last fork ready); private_mb_per_fork = host memory the wave added / forks.",
        "reproduce": "# On an Apple silicon Mac with Homebrew QEMU, crane and Rust:\ngit clone --depth 1 --branch cua-spaces-v0.15.0 https://github.com/trycua/cua && cd cua/libs/cua/bench/fork-fanout\nmkdir -p /tmp/disk && crane export --platform linux/arm64 ghcr.io/trycua/linux:24.04-slim-disk - | tar -x -C /tmp/disk disk/disk.img\nCUA_VM_VCPU_OVERCOMMIT=12 DISK=/tmp/disk/disk/disk.img WAVES=8,32,64 MEMORY_MB=2048 DIRTY_MB=300 FORKABLE=1 WARM=0 bash run.sh out.json\npython3 check.py out.json baseline.json --host macos-hvf",
        "caveats": [
          "Non-default setting: CUA_VM_VCPU_OVERCOMMIT=12. At the default (8), this 12-core Mac allows 96 vCPUs of VMs, so the 64-wave stops at fork 48. Same-day default run: 8 forks in 0.75 s, 32 forks in 3.68 s.",
          "One wave per size (n = forks in the wave), not repeated.",
          "Uses the QEMU runtime through a test binary built from the tag, not the daemon or CLI path."
        ],
        "sources": [],
        "status": "measured"
      },
      "earlier": []
    },
    {
      "slug": "fork-from-checkpoint",
      "question": "How fast does a Space fork from a checkpoint?",
      "answer": "A QEMU VM Space forked from a checkpoint holding 300 MB in RAM and 100 MB on disk answered its first command 328.8 ms after the fork call (p50, n = 30) on a Mac Studio (Apple M2 Max, 96 GB), measured 2026-10-25 on Cua Spaces 0.15.0.",
      "status": "measured",
      "url": "https://cua.ai/benchmarks/fork-from-checkpoint",
      "csv": "https://cua.ai/benchmarks/fork-from-checkpoint.csv",
      "markdown": "https://cua.ai/benchmarks/fork-from-checkpoint.md",
      "group": "Fork and snapshot",
      "current": {
        "run": "2026-10-25",
        "schema": "cua.bench-result/v1",
        "bench": "fork.qemu",
        "slug": "fork-from-checkpoint",
        "metric": "fork_to_first_exec_ms",
        "value": 328.8,
        "unit": "ms",
        "stat": "p50",
        "n": 30,
        "percentiles": {
          "p50": 328.8,
          "p90": 411.8,
          "p95": 422.6,
          "p99": 447.9,
          "min": 225.5,
          "max": 447.9
        },
        "extra": {
          "fork_many16_wall_ms_p50": 2768.4,
          "fork_many16_ready_p50_ms_median": 2049,
          "fork_many16_batches": 10,
          "fork_many16_failed": 0
        },
        "samples_csv": "samples.csv",
        "measured_at": "2026-10-25T01:16:30Z",
        "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": {
          "load_avg_before": [
            1.35,
            3.21,
            7.88
          ],
          "other_vms": 1,
          "network": "n/a (local)",
          "kind": "vm",
          "image": "ghcr.io/trycua/linux:24.04-slim (QEMU disk)",
          "shape": "2 vCPU, 2 GiB, --headless, --forkable"
        },
        "method": "Driver on the host: `rollout_bench` (Rust SDK, built from the tag) against this release's daemon. A QEMU Linux VM Space (2 vCPU / 2 GiB, headless, created `--forkable` so its RAM is a shareable file) gets a world: 300 MB of random data in /dev/shm (guest RAM) and a 100 MB file on disk. Then a pinned memory+disk checkpoint (`Sandboxes.checkpoint`). Each sample = `Sandboxes.fork(checkpoint)` start → the fork's cua-spacesd answers a first `sh -c true` (fork + attach + first exec). n=30, serial, each fork deleted after its sample. A separate fork verified the world (`test -s /dev/shm/state && test -s ~/state.bin`: state-ok). Extra: 10 batches of `fork_many` x16 (16 forks started at once).",
        "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 &\n$RB create --prefix fsrc- --n 1 --kind vm --cpus 2 --memory-mb 2048 --headless --forkable --keep\ncua sb exec fsrc-0 'dd if=/dev/urandom of=/dev/shm/state bs=1M count=300; dd if=/dev/urandom of=$HOME/state.bin bs=1M count=100; sync'\n$RB checkpoint --source fsrc-0 --name ckq-1 --pin\n$RB fork --source ckq-1 --prefix fq- --n 30 --conc 1                    # serial forks, each deleted after its sample\nfor r in $(seq 1 10); do $RB fork-many --source ckq-1 --prefix fm$r- --n 16 --conc 16; $RB delete --prefix fm$r- --conc 16; done",
        "caveats": [
          "QEMU VM kind. A gVisor fork from a checkpoint, n = 10, took p50 301 ms and p95 1,939 ms."
        ],
        "sources": [],
        "status": "measured"
      },
      "earlier": []
    },
    {
      "slug": "microvm-checkpoint-restore",
      "question": "How fast can a microVM Space checkpoint and restore?",
      "answer": "A microVM Space restored from a checkpoint to a ready Space in 611 ms (p50, n = 10), and checkpointing the running Space took 695.5 ms, on a Mac Studio (Apple M2 Max, 96 GB), measured 2026-10-25 on Cua Spaces 0.15.0.",
      "status": "measured",
      "url": "https://cua.ai/benchmarks/microvm-checkpoint-restore",
      "csv": "https://cua.ai/benchmarks/microvm-checkpoint-restore.csv",
      "markdown": "https://cua.ai/benchmarks/microvm-checkpoint-restore.md",
      "group": "Fork and snapshot",
      "current": {
        "run": "2026-10-25",
        "schema": "cua.bench-result/v1",
        "bench": "microvm-fork.vz",
        "slug": "microvm-checkpoint-restore",
        "metric": "restore_ms",
        "value": 611,
        "unit": "ms",
        "stat": "p50",
        "n": 10,
        "percentiles": {
          "p50": 611,
          "p90": 617,
          "p95": 618,
          "p99": 618,
          "min": 607,
          "max": 618
        },
        "extra": {
          "checkpoint_ms_p50": 695.5,
          "checkpoint_ms_p95": 699.5,
          "fork_running_ms_p50": 1214.5,
          "fork_running_ms_p95": 1237.8,
          "fanout8_wall_ms": 1539,
          "fanout8_each_p50_ms": 1463.5,
          "memory_host_delta_per_fork_mib": 1927,
          "guest_used_mib": 295
        },
        "samples_csv": "samples.csv",
        "measured_at": "2026-10-25T01:19:40Z",
        "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": {
          "load_avg_before": [
            1.35,
            2.74,
            6.7
          ],
          "other_vms": 1,
          "network": "n/a (local)",
          "kind": "microvm",
          "image": "ghcr.io/trycua/linux:24.04-slim",
          "shape": "2 vCPU, 2 GiB (runtime vz)"
        },
        "method": "Driver on the host: `bench/microvm-fork/bench.sh` from tag cua-spaces-v0.15.0 with N=10, FANOUT=8, through the release's `cua` CLI and daemon. Source: a microVM Space (`--kind microvm`, runtime vz via the bundled cua-vz, 2 vCPU / 2 GiB) that wrote 256 MiB to /dev/shm. Timed (wall time of each CLI command; create/fork return once the Space's cua-spacesd answers with its own token): checkpoint = `cua sb checkpoint` of the running source (n=10); restore = `cua sb fork <checkpoint>` to a ready Space (n=10, serial, each deleted); fork_running = `cua sb fork <running Space>` (n=10); fan-out = 8 forks of one checkpoint at once (wall). Headline = restore p50.",
        "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 &\nCUA=cua OUT=results N=10 FANOUT=8 bash ~/bench/cua/libs/cua/bench/microvm-fork/bench.sh",
        "caveats": [
          "Host memory added per running fork in the fan-out was ~1,927 MiB (8 forks: +15,419 MiB) for a guest using 295 MiB: forks did not share the checkpoint's memory on this release.",
          "Times include the cua CLI process start (a few ms)."
        ],
        "sources": [],
        "status": "measured"
      },
      "earlier": []
    },
    {
      "slug": "snapshot-running-sandbox",
      "question": "How fast can you snapshot a running Space?",
      "answer": "Checkpointing a running Space that holds 300 MB in RAM and 100 MB on disk took 532.8 ms for a QEMU VM and 274.3 ms for a gVisor container (p50, n = 10 each) on a Mac Studio (Apple M2 Max, 96 GB), measured 2026-10-25. The Space kept running.",
      "status": "measured",
      "url": "https://cua.ai/benchmarks/snapshot-running-sandbox",
      "csv": "https://cua.ai/benchmarks/snapshot-running-sandbox.csv",
      "markdown": "https://cua.ai/benchmarks/snapshot-running-sandbox.md",
      "group": "Fork and snapshot",
      "series": [
        {
          "label": "QEMU VM",
          "run": {
            "run": "2026-10-25",
            "schema": "cua.bench-result/v1",
            "bench": "checkpoint.vm",
            "slug": "snapshot-running-sandbox",
            "metric": "checkpoint_ms",
            "value": 532.8,
            "unit": "ms",
            "stat": "p50",
            "n": 10,
            "percentiles": {
              "p50": 532.8,
              "p90": 977.7,
              "p95": 1200.7,
              "p99": 1200.7,
              "min": 429.1,
              "max": 1200.7
            },
            "extra": {},
            "samples_csv": "samples.csv",
            "measured_at": "2026-10-25T01:16:30Z",
            "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": {
              "load_avg_before": [
                1.35,
                3.21,
                7.88
              ],
              "other_vms": 1,
              "network": "n/a (local)",
              "kind": "vm",
              "image": "ghcr.io/trycua/linux:24.04-slim",
              "shape": "QEMU Linux VM, 2 vCPU / 2 GiB, --forkable, headless"
            },
            "method": "Driver on the host: `rollout_bench checkpoint` (Rust SDK, built from the tag). The running Space (QEMU Linux VM, 2 vCPU / 2 GiB, --forkable) holds a world of 300 MB random data in /dev/shm and a 100 MB file on disk. Each sample = one `Sandboxes.checkpoint(space, name)` call of the running Space, start to return (the Space keeps running). n=10, serial, same source; the first QEMU checkpoint was pinned (fork source).",
            "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 &\n$RB create --prefix fsrc- --n 1 --kind vm --cpus 2 --memory-mb 2048 --headless --forkable --keep\ncua sb exec fsrc-0 'dd if=/dev/urandom of=/dev/shm/state bs=1M count=300; dd if=/dev/urandom of=$HOME/state.bin bs=1M count=100; sync'\nfor i in $(seq 1 10); do $RB checkpoint --source fsrc-0 --name ckq-$i; done",
            "caveats": [
              "The first QEMU checkpoint (pinned, 978 ms) is included."
            ],
            "sources": [],
            "status": "measured"
          }
        },
        {
          "label": "gVisor container",
          "run": {
            "run": "2026-10-25/result-gvisor",
            "schema": "cua.bench-result/v1",
            "bench": "checkpoint.gvisor",
            "slug": "snapshot-running-sandbox",
            "metric": "checkpoint_ms",
            "value": 274.3,
            "unit": "ms",
            "stat": "p50",
            "n": 10,
            "percentiles": {
              "p50": 274.3,
              "p90": 305.9,
              "p95": 310.6,
              "p99": 310.6,
              "min": 257.9,
              "max": 310.6
            },
            "extra": {},
            "samples_csv": "samples-gvisor.csv",
            "measured_at": "2026-10-25T01:16:30Z",
            "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": {
              "load_avg_before": [
                1.35,
                3.21,
                7.88
              ],
              "other_vms": 1,
              "network": "n/a (local)",
              "kind": "gvisor",
              "image": "ghcr.io/trycua/linux:24.04-slim",
              "shape": "gVisor container, 2 vCPU / 2 GiB, headless"
            },
            "method": "Driver on the host: `rollout_bench checkpoint` (Rust SDK, built from the tag). The running Space (gVisor container, 2 vCPU / 2 GiB) holds a world of 300 MB random data in /dev/shm and a 100 MB file on disk. Each sample = one `Sandboxes.checkpoint(space, name)` call of the running Space, start to return (the Space keeps running). n=10, serial, same source; the checkpoints were deleted at the end.",
            "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 &\n$RB create --prefix fsrc- --n 1 --kind vm --cpus 2 --memory-mb 2048 --headless --forkable --keep\ncua sb exec fsrc-0 'dd if=/dev/urandom of=/dev/shm/state bs=1M count=300; dd if=/dev/urandom of=$HOME/state.bin bs=1M count=100; sync'\n$RB create --prefix gsrc- --n 1 --kind container --runtime gvisor --cpus 2 --memory-mb 2048 --headless --keep\n# same world as above in gsrc-0, then:\nfor i in $(seq 1 10); do $RB checkpoint --source gsrc-0 --name ckg-$i; done",
            "caveats": [
              "What a gVisor checkpoint stores follows the runtime's checkpoint support; it wasn't inspected here."
            ],
            "sources": [],
            "status": "measured"
          }
        }
      ]
    },
    {
      "slug": "256-sandboxes-one-mac",
      "question": "How long do 256 sandboxes take to start on one Mac?",
      "answer": "One Mac started 256 headless gVisor Spaces (1 vCPU, 1 GiB each, up to 64 creates at once) in 26.05 s, from the first create to the last Space's first command (p50 of 10 batches, 0 of 2,560 failed), on a Mac Studio (Apple M2 Max, 96 GB), measured 2026-10-25.",
      "status": "measured",
      "url": "https://cua.ai/benchmarks/256-sandboxes-one-mac",
      "csv": "https://cua.ai/benchmarks/256-sandboxes-one-mac.csv",
      "markdown": "https://cua.ai/benchmarks/256-sandboxes-one-mac.md",
      "group": "Density and throughput",
      "current": {
        "run": "2026-10-25",
        "schema": "cua.bench-result/v1",
        "bench": "spaces-startup.gvisor-256",
        "slug": "256-sandboxes-one-mac",
        "metric": "all_256_ready_s",
        "value": 26.05,
        "unit": "s",
        "stat": "p50",
        "n": 10,
        "percentiles": {
          "p50": 26.05,
          "p90": 26.39,
          "p95": 26.59,
          "p99": 26.59,
          "min": 25.16,
          "max": 26.59
        },
        "extra": {
          "failed_total": 0,
          "spaces_total": 2560
        },
        "samples_csv": "samples.csv",
        "measured_at": "2026-10-25T01:35: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 per Space, --headless",
          "settings": "CUA_POOL_AUTO=off; built-in Linux runtime VM at its default size on this Mac, 4 vCPU / 32 GiB (CUA_RUNTIME_LINUX_CPUS=12 / MEMORY_GIB=64 were in the daemon's environment but the runtime VM was already running and kept its size, per the daemon log)",
          "load_avg_before": [
            1.39,
            4.28,
            5.29
          ],
          "other_vms": 1,
          "network": "n/a (local)"
        },
        "method": "Driver on the host: `rollout_bench create --n 256 --conc 64 --keep` (Rust SDK, built from the tag) against this release's daemon. Each sample = one batch: 256 headless gVisor Spaces (1 vCPU / 1 GiB) created with at most 64 create calls in flight; time from the first create call until the last Space answered its first exec (`sh -c true`). After each batch all 256 were deleted and the host settled 10 s. n=10 batches, after one excluded warm-up create. Per-Space create-to-first-exec percentiles of each batch are in samples.csv.",
        "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_POOL_AUTO=off cua daemon start --foreground &\nulimit -n 65536\n$RB create --prefix w- --n 1 --kind container --runtime gvisor --cpus 1 --memory-mb 1024 --headless   # warm-up\nfor r in $(seq 1 10); do $RB create --prefix u$r- --n 256 --conc 64 --cpus 1 --memory-mb 1024 --kind container --runtime gvisor --headless --keep; $RB delete --prefix u$r- --conc 32; sleep 10; done   # summary line: wall_ms",
        "caveats": [
          "All 256 run inside one built-in Linux runtime VM (gVisor sandboxes), at its default size (4 vCPU / 32 GiB here).",
          "Headless shape (only cua-spacesd)."
        ],
        "sources": [],
        "status": "measured"
      },
      "earlier": []
    },
    {
      "slug": "sandboxes-per-mac",
      "question": "How many idle sandboxes fit on one Mac?",
      "answer": "One Mac kept 448 Spaces running as idle headless gVisor containers, or 126 Spaces as microVMs (1 vCPU, 1 GiB each), with every exec check passing, on a Mac Studio (Apple M2 Max, 96 GB), measured 2026-10-25 on Cua Spaces 0.15.0.",
      "status": "measured",
      "url": "https://cua.ai/benchmarks/sandboxes-per-mac",
      "csv": "https://cua.ai/benchmarks/sandboxes-per-mac.csv",
      "markdown": "https://cua.ai/benchmarks/sandboxes-per-mac.md",
      "group": "Density and throughput",
      "series": [
        {
          "label": "gVisor containers",
          "run": {
            "run": "2026-10-25",
            "schema": "cua.bench-result/v1",
            "bench": "density.gvisor",
            "slug": "sandboxes-per-mac",
            "metric": "max_running_spaces",
            "value": 448,
            "unit": "Spaces",
            "stat": "max",
            "n": 15,
            "percentiles": {},
            "extra": {
              "exec_p95_ms_one": 4.9,
              "exec_p95_ms_at_max": 5.9,
              "vz_vm_rss_mb_before": 15136,
              "vz_vm_rss_mb_at_max": 22261,
              "highest_started": 495
            },
            "samples_csv": "samples.csv",
            "measured_at": "2026-10-25T01:51:05Z",
            "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 per Space, --headless",
              "settings": "CUA_POOL_AUTO=off; built-in Linux runtime VM at its default size on this Mac, 4 vCPU / 32 GiB (CUA_RUNTIME_LINUX_CPUS=12 / MEMORY_GIB=64 were in the daemon's environment but the already-running runtime VM kept its size, per the daemon log)",
              "load_avg_before": [
                4.4,
                4.88,
                5.04
              ],
              "other_vms": 1,
              "network": "n/a (local)"
            },
            "method": "Driver on the host: density.sh with `rollout_bench` (Rust SDK, built from the tag) against this release's daemon. Idle gVisor Spaces (--kind container --runtime gvisor --headless, 1 vCPU / 1 GiB, kept running) are added in steps to 1, 8, 16, 32, 64, 96, 128, then +32 to 256, then +64 (at most 32 creates in flight). After each step: wait for the host to settle, sample host memory and CPU, then 10 serial exec round trips on every running Space (`rollout_bench probe`). Stop rule: running < target (2% slack), any probe error, exec p95 > 2x the one-Space p95 (and > +5 ms), or < 8 GB host memory free+inactive. Headline = the most Spaces at a step that passed every check. samples.csv: one row per step.",
            "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\nmkdir -p ~/bench/harness && cd ~/bench/harness && for f in density.sh env.sh sample.py envsnap.py; do curl -fLO https://cua.ai/benchmarks/sandboxes-per-mac/files/$f; done\nCUA_POOL_AUTO=off cua daemon start --foreground &\nbash density.sh gvh 768 32 --kind container --runtime gvisor --headless",
            "caveats": [
              "Last step that passed: 448 Spaces (exec p50 4.5 ms, p95 5.9 ms, against 4.9 ms with one). At the next step (512), creates and exec checks failed, so the ramp stopped.",
              "All run inside the built-in Linux runtime VM at its default size here (4 vCPU, 32 GiB).",
              "Idle Spaces (only cua-spacesd); a workload in each Space lowers the count."
            ],
            "sources": [],
            "status": "measured"
          }
        },
        {
          "label": "microVMs",
          "run": {
            "run": "2026-10-25/result-microvm",
            "schema": "cua.bench-result/v1",
            "bench": "density.microvm",
            "slug": "sandboxes-per-mac",
            "metric": "max_running_spaces",
            "value": 126,
            "unit": "Spaces",
            "stat": "max",
            "n": 8,
            "percentiles": {},
            "extra": {
              "exec_p95_ms_one": 3.3,
              "exec_p95_ms_at_max": 1.6,
              "vz_vm_rss_mb_before": 24626,
              "vz_vm_rss_mb_at_max": 73112,
              "highest_started": 126
            },
            "samples_csv": "samples-microvm.csv",
            "measured_at": "2026-10-25T02:21:46Z",
            "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 per Space, --headless",
              "settings": "CUA_POOL_AUTO=off; runtime vz (bundled cua-vz)",
              "load_avg_before": [
                1.4,
                1.65,
                2.77
              ],
              "other_vms": 1,
              "network": "n/a (local)"
            },
            "method": "Driver on the host: density.sh with `rollout_bench` (Rust SDK, built from the tag) against this release's daemon. Idle microVM Spaces (--kind microvm --headless, 1 vCPU / 1 GiB, kept running) are added in steps to 1, 8, 16, 32, 64, 96, 128, then +32 to 256 (at most 16 creates in flight). After each step: wait for the host to settle, sample host memory and CPU, then 10 serial exec round trips on every running Space (`rollout_bench probe`). Same stop rule as the gVisor run. Headline = the most Spaces at a step that passed every check. samples.csv: one row per step.",
            "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\nmkdir -p ~/bench/harness && cd ~/bench/harness && for f in density.sh env.sh sample.py envsnap.py; do curl -fLO https://cua.ai/benchmarks/sandboxes-per-mac/files/$f; done\nCUA_POOL_AUTO=off cua daemon start --foreground &\nbash density.sh mvh 256 16 --kind microvm --headless",
            "caveats": [
              "126 microVMs ran. At the next step the extra creates failed to start: macOS allows 128 VMs per host, and two other VMs were running (the built-in Linux runtime VM and one idle VM).",
              "Virtualization.framework VM processes grew from 24.0 GB to 71.4 GB at 126 microVMs (about 385 MB resident each, 1 GiB guests).",
              "Idle Spaces (only cua-spacesd)."
            ],
            "sources": [],
            "status": "measured"
          }
        }
      ]
    },
    {
      "slug": "vms-per-mac",
      "question": "How many VM Spaces can run on one Mac?",
      "answer": "One Mac ran 96 VMs at once as idle QEMU VM Spaces (1 vCPU, 1 GiB each), about 328.2 MB of host memory per VM, on a Mac Studio (Apple M2 Max, 96 GB), measured 2026-10-25. The daemon's default CPU overcommit (8 per core) set the limit, not memory.",
      "status": "measured",
      "url": "https://cua.ai/benchmarks/vms-per-mac",
      "csv": "https://cua.ai/benchmarks/vms-per-mac.csv",
      "markdown": "https://cua.ai/benchmarks/vms-per-mac.md",
      "group": "Density and throughput",
      "current": {
        "run": "2026-10-25",
        "schema": "cua.bench-result/v1",
        "bench": "spaces-startup.vm-density",
        "slug": "vms-per-mac",
        "metric": "max_running_vms",
        "value": 96,
        "unit": "VMs",
        "stat": "max",
        "n": 12,
        "percentiles": {},
        "extra": {
          "per_vm_mb": 328.2,
          "vm_private_p50_mb": 321,
          "vm_shared_mb": 729,
          "vm_rss_mb": 31504,
          "available_mb_at_max": 91422,
          "exec_p95_ms_one": 1.1,
          "exec_p95_ms_max": 1.6,
          "exec_p50_ms_max": 0.9,
          "hypervisor_max_vms": 128,
          "fit_by_memory_this_mac": 242,
          "fit_by_memory_64g": 161,
          "fit_by_memory_128g": 324
        },
        "samples_csv": "samples.csv",
        "measured_at": "2026-10-25T02:31:30Z",
        "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 (QEMU 10.2.2 on HVF, Homebrew)",
          "image": "ghcr.io/trycua/linux:24.04-slim (QEMU disk)",
          "shape": "1 vCPU, 1 GiB, VMD_PROFILE=rollout (no desktop, no display hardware)",
          "settings": "CUA_POOL_AUTO=off; default CUA_VM_VCPU_OVERCOMMIT (8x)",
          "load_avg_before": [
            1.49,
            2.25,
            2.64
          ],
          "other_vms": 1,
          "network": "n/a (local)"
        },
        "method": "Driver on the host: `bench/spaces-startup/bench.sh vm-density` from tag cua-spaces-v0.15.0 with `rollout_bench` (built from the tag), VMD_PROFILE=rollout, through the release's own daemon (bench.sh restarts it) with the warm pool off. The first VM records a golden snapshot; then 8 VMs at a time are created through the SDK and kept running. After each step: a host sample (QEMU private memory, shared snapshot memory counted once, memory pressure) and 20 exec round trips on every VM at once. Stops at the first create failure or capacity refusal, exec p95 > 2x the one-VM value, or critical memory pressure.",
        "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\ncd ~/bench/cua/libs/cua\nCUA_POOL_AUTO=off CUA=$(command -v cua) ROLLOUT_BENCH=$RB OUT=/tmp/vmd VMD_PROFILE=rollout VMD_LABEL=m2max-96g \\\n  bash bench/spaces-startup/bench.sh vm-density",
        "caveats": [
          "Stopped by the daemon's admission control, not memory: 96 VMs of 1 vCPU = 12 cores x the default 8x vCPU overcommit. Memory alone would fit about 242 at this per-VM cost, and macOS caps a host at 128 VMs.",
          "Idle VMs (only cua-spacesd)."
        ],
        "sources": [],
        "status": "measured"
      },
      "earlier": []
    },
    {
      "slug": "exec-latency",
      "question": "How long does a command round trip into a Space take?",
      "answer": "A command round trip (sh -c) into a running QEMU Linux VM Space took 0.878 ms (p50, n = 300) from the same Mac, over loopback, on a Mac Studio (Apple M2 Max, 96 GB), measured 2026-10-25 on Cua Spaces 0.15.0.",
      "status": "measured",
      "url": "https://cua.ai/benchmarks/exec-latency",
      "csv": "https://cua.ai/benchmarks/exec-latency.csv",
      "markdown": "https://cua.ai/benchmarks/exec-latency.md",
      "group": "Density and throughput",
      "current": {
        "run": "2026-10-25",
        "schema": "cua.bench-result/v1",
        "bench": "channel.qemu",
        "slug": "exec-latency",
        "metric": "exec_sh_ms",
        "value": 0.878,
        "unit": "ms",
        "stat": "p50",
        "n": 300,
        "percentiles": {
          "p50": 0.878,
          "p95": 0.961,
          "p99": 1.022,
          "max": 1.06
        },
        "extra": {
          "exec_run_p50_ms": 0.818,
          "exec_run_p95_ms": 0.893,
          "rpc_health_p50_ms": 0.653,
          "rpc_health_p95_ms": 1.113
        },
        "samples_csv": "samples.csv",
        "measured_at": "2026-10-25T01:12:51Z",
        "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": {
          "load_avg_before": [
            1.32,
            4.84,
            9.88
          ],
          "other_vms": 1,
          "network": "n/a (local)",
          "kind": "vm",
          "image": "linux (catalog alias, full Linux VM disk)",
          "shape": "2 vCPU, 2 GiB"
        },
        "method": "Driver on the host: `bench/channel/run.sh` from tag cua-spaces-v0.15.0 with `channel_bench` (Rust SDK example built from the tag). It creates one Linux VM Space on this Mac (`cua spaces create linux --on local --kind vm --cpus 2 --memory-mb 2048`, QEMU on HVF), measures it through the SDK and deletes it. Route: `local 127.0.0.1` (gRPC to the Space's cua-spacesd). Exec: 300 serial round trips each of a no-op RPC, `true` run directly, and `sh -c` (5 warm-up calls excluded). Files: one file per transfer of 1 MiB (n=20), 4 MiB (20), 16 MiB (10), 100 MiB (10), 512 MiB (5), upload then download, MiB/s = size / p50 time; files of 2 MiB and more use the VM's bulk lane (a shared disk, SHA-256 checked). channel_bench writes percentiles per metric, not per sample, so samples.csv holds one row per metric.",
        "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 &\ncd ~/bench/cua/libs/cua\nCUA=cua BENCH=target/release/examples/channel_bench FILES=1:20,4:20,16:10,100:10,512:5 OUT=results \\\n  bash bench/channel/run.sh bench/channel/baselines/macos-m2max-qemu.json",
        "caveats": [
          "Same machine (loopback): a client on another machine adds its network round trip.",
          "samples.csv has one row per metric (percentiles), not one per sample."
        ],
        "sources": [],
        "status": "measured"
      },
      "earlier": []
    },
    {
      "slug": "file-transfer-throughput",
      "question": "How fast do files move into and out of a Space?",
      "answer": "Uploading one 100 MiB file into a running QEMU Linux VM Space ran at 625.7 MiB/s and downloading it at 873.3 MiB/s (p50 time, n = 10) on a Mac Studio (Apple M2 Max, 96 GB), measured 2026-10-25 on Cua Spaces 0.15.0.",
      "status": "measured",
      "url": "https://cua.ai/benchmarks/file-transfer-throughput",
      "csv": "https://cua.ai/benchmarks/file-transfer-throughput.csv",
      "markdown": "https://cua.ai/benchmarks/file-transfer-throughput.md",
      "group": "Density and throughput",
      "current": {
        "run": "2026-10-25",
        "schema": "cua.bench-result/v1",
        "bench": "channel.qemu",
        "slug": "file-transfer-throughput",
        "metric": "upload_100MiB_MiBps",
        "value": 625.7,
        "unit": "MiB/s",
        "stat": "p50",
        "n": 10,
        "percentiles": {
          "p50": 625.7
        },
        "extra": {
          "download_100MiB_MiBps_p50": 873.3,
          "upload_100MiB_ms_p50": 159.818,
          "upload_100MiB_ms_p95": 182.472,
          "download_100MiB_ms_p50": 114.51,
          "download_100MiB_ms_p95": 119.536,
          "upload_1MiB_ms_MiBps_p50": 211.1,
          "download_1MiB_ms_MiBps_p50": 148.8,
          "upload_4MiB_ms_MiBps_p50": 402.7,
          "download_4MiB_ms_MiBps_p50": 378.4,
          "upload_16MiB_ms_MiBps_p50": 509.9,
          "download_16MiB_ms_MiBps_p50": 549.2,
          "upload_512MiB_ms_MiBps_p50": 619.3,
          "download_512MiB_ms_MiBps_p50": 1164.1,
          "stream_stdout_MiBps": 169
        },
        "samples_csv": "samples.csv",
        "measured_at": "2026-10-25T01:12:51Z",
        "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": {
          "load_avg_before": [
            1.32,
            4.84,
            9.88
          ],
          "other_vms": 1,
          "network": "n/a (local)",
          "kind": "vm",
          "image": "linux (catalog alias, full Linux VM disk)",
          "shape": "2 vCPU, 2 GiB"
        },
        "method": "Driver on the host: `bench/channel/run.sh` from tag cua-spaces-v0.15.0 with `channel_bench` (Rust SDK example built from the tag). It creates one Linux VM Space on this Mac (`cua spaces create linux --on local --kind vm --cpus 2 --memory-mb 2048`, QEMU on HVF), measures it through the SDK and deletes it. Route: `local 127.0.0.1` (gRPC to the Space's cua-spacesd). Exec: 300 serial round trips each of a no-op RPC, `true` run directly, and `sh -c` (5 warm-up calls excluded). Files: one file per transfer of 1 MiB (n=20), 4 MiB (20), 16 MiB (10), 100 MiB (10), 512 MiB (5), upload then download, MiB/s = size / p50 time; files of 2 MiB and more use the VM's bulk lane (a shared disk, SHA-256 checked). channel_bench writes percentiles per metric, not per sample, so samples.csv holds one row per metric.",
        "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 &\ncd ~/bench/cua/libs/cua\nCUA=cua BENCH=target/release/examples/channel_bench FILES=1:20,4:20,16:10,100:10,512:5 OUT=results \\\n  bash bench/channel/run.sh bench/channel/baselines/macos-m2max-qemu.json",
        "caveats": [
          "Same machine (loopback): a client on another machine adds its network.",
          "Files of 2 MiB and more use the VM's bulk lane, a shared disk; every transfer is SHA-256 checked.",
          "samples.csv has one row per metric (percentiles), not one per sample."
        ],
        "sources": [],
        "status": "measured"
      },
      "earlier": []
    },
    {
      "slug": "rollout-steps-per-second",
      "question": "How many agent steps per second can one Mac run?",
      "answer": "A trainer-style loop on one Mac completed 120.9 steps/s across 64 headless gVisor Spaces and 1,946 steps/s across 96 microVM Spaces (mean over each run, 20 steps per Space) on a Mac Studio (Apple M2 Max, 96 GB), measured 2026-10-25. The microVM run lasted about one second, so its figure is a burst rate.",
      "status": "measured",
      "url": "https://cua.ai/benchmarks/rollout-steps-per-second",
      "csv": "https://cua.ai/benchmarks/rollout-steps-per-second.csv",
      "markdown": "https://cua.ai/benchmarks/rollout-steps-per-second.md",
      "group": "Density and throughput",
      "series": [
        {
          "label": "64 gVisor containers",
          "run": {
            "run": "2026-10-25",
            "schema": "cua.bench-result/v1",
            "bench": "rollout.gvisor",
            "slug": "rollout-steps-per-second",
            "metric": "steps_per_s",
            "value": 120.9,
            "unit": "steps/s",
            "stat": "mean",
            "n": 1280,
            "percentiles": {
              "step_ms_p50": 488.3,
              "step_ms_p95": 738.9,
              "step_ms_p99": 814.2
            },
            "extra": {
              "sandboxes": 64,
              "errors": 0,
              "secs": 10.59,
              "at_256_steps_per_s": 108.5,
              "at_256_step_ms_p50": 2447.6,
              "at_256_step_ms_p95": 3322,
              "at_256_errors": 0
            },
            "measured_at": "2026-10-25T01:36: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 per Space, --headless",
              "settings": "CUA_POOL_AUTO=off; built-in Linux runtime VM at its default size on this Mac, 4 vCPU / 32 GiB (CUA_RUNTIME_LINUX_CPUS=12 / MEMORY_GIB=64 were in the daemon's environment but the runtime VM was already running and kept its size, per the daemon log)",
              "load_avg_before": [
                1.39,
                4.28,
                5.29
              ],
              "other_vms": 1,
              "network": "n/a (local)"
            },
            "method": "Driver on the host: `rollout_bench rollout --steps 20` (Rust SDK, built from the tag), the trainer-shaped loop, against 64 (headline) and then 256 running headless gVisor Spaces (the first 256-batch above, kept). Every Space runs 20 steps concurrently; one step = exec a short shell line that writes a reward file, upload a 4 KB action file, download the reward. steps/s = all completed steps / wall time of the loop. Workloads run in the Spaces; the trainer loop runs on the host.",
            "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_POOL_AUTO=off cua daemon start --foreground &\nulimit -n 65536\n$RB create --prefix u1- --n 256 --conc 64 --cpus 1 --memory-mb 1024 --kind container --runtime gvisor --headless --keep\n$RB rollout --prefix u1- --n 64 --steps 20\n$RB rollout --prefix u1- --n 256 --steps 20",
            "caveats": [
              "64 of 256 running Spaces were stepped (the other 192 idle). At 256 Spaces the loop ran at 108.5 steps/s.",
              "All gVisor Spaces run inside the built-in Linux runtime VM at its default size here (4 vCPU, 32 GiB)."
            ],
            "sources": [],
            "status": "measured"
          }
        },
        {
          "label": "96 microVMs",
          "run": {
            "run": "2026-10-25/result-microvm",
            "schema": "cua.bench-result/v1",
            "bench": "rollout.microvm",
            "slug": "rollout-steps-per-second",
            "metric": "steps_per_s",
            "value": 1945.5,
            "unit": "steps/s",
            "stat": "mean",
            "n": 1920,
            "percentiles": {
              "step_ms_p50": 48,
              "step_ms_p95": 66.9,
              "step_ms_p99": 119.1
            },
            "extra": {
              "sandboxes": 96,
              "errors": 0,
              "secs": 0.987,
              "at_64_steps_per_s": 1859.4,
              "at_64_step_ms_p50": 31.2,
              "at_64_step_ms_p95": 62.8
            },
            "measured_at": "2026-10-25T02:37:30Z",
            "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 (runtime vz)",
              "image": "ghcr.io/trycua/linux:24.04-slim",
              "shape": "1 vCPU, 1 GiB, --headless",
              "settings": "CUA_POOL_AUTO=off",
              "load_avg_before": [
                1.41,
                2.22,
                2.53
              ],
              "other_vms": 1,
              "network": "n/a (local)"
            },
            "method": "Driver on the host: `rollout_bench rollout --steps 20` (Rust SDK, built from the tag) against 96 running headless microVM Spaces (runtime vz), created first with `rollout_bench create --n 96 --conc 16 --keep`. Every Space runs 20 steps concurrently; one step = exec a short shell line that writes a reward file, upload a 4 KB action file, download the reward. steps/s = completed steps / wall time of the loop. Also run at 64 microVMs.",
            "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_POOL_AUTO=off cua daemon start --foreground &\n$RB create --prefix rmv- --n 96 --conc 16 --cpus 1 --memory-mb 1024 --kind microvm --headless --keep\n$RB rollout --prefix rmv- --n 64 --steps 20\n$RB rollout --prefix rmv- --n 96 --steps 20",
            "caveats": [
              "Burst rate: 20 steps x 96 Spaces finished in about 1 second. A longer run was not measured.",
              "At 64 microVMs the loop ran at 1,859 steps/s."
            ],
            "sources": [],
            "status": "measured"
          }
        }
      ]
    },
    {
      "slug": "browser-sessions-per-mac",
      "question": "How many browser sessions per hour can one Mac run?",
      "answer": null,
      "status": "tbd",
      "url": "https://cua.ai/benchmarks/browser-sessions-per-mac",
      "csv": null,
      "markdown": null,
      "group": "Density and throughput",
      "current": null,
      "earlier": [],
      "needs": "A pool-sessions run on a released build."
    },
    {
      "slug": "browser-sessions-fleet",
      "question": "How many browser sessions per hour can a mixed fleet run?",
      "answer": null,
      "status": "tbd",
      "url": "https://cua.ai/benchmarks/browser-sessions-fleet",
      "csv": null,
      "markdown": null,
      "group": "Density and throughput",
      "current": null,
      "earlier": [],
      "needs": "A pool-sessions fleet run on a released build."
    },
    {
      "slug": "chaos-no-lost-work",
      "question": "Does work survive machines failing mid-run?",
      "answer": null,
      "status": "tbd",
      "url": "https://cua.ai/benchmarks/chaos-no-lost-work",
      "csv": null,
      "markdown": null,
      "group": "Density and throughput",
      "current": null,
      "earlier": [],
      "needs": "A chaos run on a released build."
    },
    {
      "slug": "cost-per-space-hour-aws",
      "question": "What does one Space-hour cost on AWS when packed?",
      "answer": "On one AWS c7g.2xlarge ($0.2900/machine-hour on demand) holding at least 25 idle Spaces of 1 vCPU and 512 MiB, a Space-hour cost at most $0.0116/Space-hour at list price (3 runs, 2026-10-25). The account plan's 25-session limit stopped the runs, not the machine.",
      "status": "measured",
      "url": "https://cua.ai/benchmarks/cost-per-space-hour-aws",
      "csv": "https://cua.ai/benchmarks/cost-per-space-hour-aws.csv",
      "markdown": "https://cua.ai/benchmarks/cost-per-space-hour-aws.md",
      "group": "Cost",
      "current": {
        "run": "2026-10-25",
        "schema": "cua.bench-result/v1",
        "bench": "elastic-pack.aws",
        "slug": "cost-per-space-hour-aws",
        "metric": "usd_per_space_hour",
        "value": 0.0116,
        "unit": "USD/Space-hour",
        "stat": "max",
        "n": 3,
        "percentiles": {
          "min": 0.0116,
          "max": 0.0116
        },
        "extra": {
          "usd_per_hour_instance_list": 0.29,
          "spaces_per_host_min": 25,
          "spaces_per_host_max": 25,
          "usd_per_space_hour_incl_public_ipv4": 0.0118,
          "public_ipv4_usd_per_hour": 0.005,
          "run_aws1g1_1GiB_spaces": 16,
          "run_aws1g2_1GiB_spaces": 15,
          "run_aws1g3_1GiB_spaces": 16,
          "run_aws1g4_1GiB_spaces": 24
        },
        "samples_csv": "samples.csv",
        "measured_at": "2026-10-25T01:16:57Z",
        "build": {
          "cua": "0.9.0",
          "app": "0.15.0",
          "source": "cua CLI bundled in Cua Spaces 0.15.0 DMG (GitHub release cua-spaces-v0.15.0, published 2026-10-24T19:42Z), `cua --version` = cua 0.9.0",
          "published": true
        },
        "host": {
          "name": "Mac Studio (the client)",
          "model": "Mac14,13",
          "chip": "Apple M2 Max",
          "cpus": 12,
          "memory_gb": 96,
          "os": "macOS 26.6.2",
          "where": "client in California, home network"
        },
        "environment": {
          "kind": "container (gVisor) on one elastic pool host",
          "cloud": "aws",
          "machine_type": "c7g.2xlarge (8 vCPU Graviton3, 16 GiB)",
          "space_shape": "ghcr.io/trycua/linux:24.04-slim, 1 vCPU / 512 MiB booked each",
          "autoscale": "on, $0.40/h cap (blocks a 2nd host), host pinned via `cua cloud hosts add`"
        },
        "method": "Released cua 0.9.0 elastic pool. One pinned c7g.2xlarge (8 vCPU Graviton3, 16 GiB) host (`cua cloud hosts add`). Each run asks for 32 Spaces at once (16 concurrent `cua spaces create ghcr.io/trycua/linux:24.04-slim --on aws --instance-type c7g.2xlarge --cpus 1 --memory-mb 512`), runs `cua sb exec <ref> -- echo ok` in every created Space, counts the Spaces that answer on that one host, then deletes them all. n=3 runs. $/Space-hour = the instance's on-demand list price / Spaces held at once (AWS Price List API, c7g.2xlarge Linux on-demand us-west-2 $0.29/h, effective 2026-10-01).",
        "reproduce": "# Cua Spaces 0.15.0 from cua.ai/download (its cua CLI is cua 0.9.0)\ncurl -fLO https://cua.ai/benchmarks/cost-per-space-hour-aws/files/pack.py\ncua auth login && cua cloud connect aws --profile <aws-profile> --region us-west-2\ncua daemon start --foreground &\ncua cloud budget --autoscale on --max-per-hour 0.40 --monthly 20\ncua cloud hosts add --provider aws --type c7g.2xlarge --ttl-hours 2\nfor r in 1 2 3; do python3 pack.py aws c7g.2xlarge 32 16 run$r --cpus 1 --memory-mb 512; done\ncua cloud hosts rm <host> && cua cloud sweep --all --delete",
        "caveats": [
          "The ceiling of 25 Spaces per machine is the account plan's live-session limit, not the machine's: further creates were refused with 'Your plan allows 25 live sessions'. So the cost per Space-hour is an upper bound.",
          "Price is the instance's on-demand list price only; extra.usd_per_space_hour_incl_public_ipv4 adds its public IPv4. Disk and traffic are not included.",
          "Spaces were idle apart from the exec check: booked-shape density, not a CPU-bound load."
        ],
        "sources": [],
        "status": "measured"
      },
      "earlier": []
    },
    {
      "slug": "cost-per-sandbox-hour-hetzner-vs-aws",
      "question": "Is a Space-hour cheaper on Hetzner or AWS?",
      "answer": "Packed onto one machine with at least 25 idle Spaces of 1 vCPU and 512 MiB, a Space-hour cost at most $0.0016/Space-hour on a Hetzner cax31 and $0.0116/Space-hour on an AWS c7g.2xlarge at list prices (3 runs each, 2026-10-25). The account plan's 25-session limit stopped both, so both are upper bounds.",
      "status": "measured",
      "url": "https://cua.ai/benchmarks/cost-per-sandbox-hour-hetzner-vs-aws",
      "csv": "https://cua.ai/benchmarks/cost-per-sandbox-hour-hetzner-vs-aws.csv",
      "markdown": "https://cua.ai/benchmarks/cost-per-sandbox-hour-hetzner-vs-aws.md",
      "group": "Cost",
      "series": [
        {
          "label": "Hetzner cax31",
          "run": {
            "run": "2026-10-25/result-hetzner",
            "schema": "cua.bench-result/v1",
            "bench": "elastic-pack.hetzner",
            "slug": "cost-per-sandbox-hour-hetzner-vs-aws",
            "metric": "usd_per_space_hour",
            "value": 0.0016,
            "unit": "USD/Space-hour",
            "stat": "max",
            "n": 3,
            "percentiles": {
              "min": 0.0016,
              "max": 0.0016
            },
            "extra": {
              "usd_per_hour_instance_list": 0.04,
              "spaces_per_host_min": 25,
              "spaces_per_host_max": 25,
              "usd_per_space_hour_incl_public_ipv4": 0.00164,
              "public_ipv4_usd_per_hour": 0.001,
              "run_hz1g1_1GiB_spaces": 15,
              "run_hz1g2_1GiB_spaces": 16,
              "run_hz1g3_1GiB_spaces": 15
            },
            "samples_csv": "samples-hetzner.csv",
            "measured_at": "2026-10-25T01:39:05Z",
            "build": {
              "cua": "0.9.0",
              "app": "0.15.0",
              "source": "cua CLI bundled in Cua Spaces 0.15.0 DMG (GitHub release cua-spaces-v0.15.0, published 2026-10-24T19:42Z), `cua --version` = cua 0.9.0",
              "published": true
            },
            "host": {
              "name": "Mac Studio (the client)",
              "model": "Mac14,13",
              "chip": "Apple M2 Max",
              "cpus": 12,
              "memory_gb": 96,
              "os": "macOS 26.6.2",
              "where": "client in California, home network"
            },
            "environment": {
              "kind": "container (gVisor) on one elastic pool host",
              "cloud": "hetzner",
              "machine_type": "cax31 (8 vCPU Ampere arm64, 16 GB)",
              "space_shape": "ghcr.io/trycua/linux:24.04-slim, 1 vCPU / 512 MiB booked each",
              "autoscale": "on, $0.40/h cap (blocks a 2nd host), host pinned via `cua cloud hosts add`"
            },
            "method": "Released cua 0.9.0 elastic pool. One pinned cax31 (8 vCPU Ampere arm64, 16 GB) host (`cua cloud hosts add`). Each run asks for 32 Spaces at once (16 concurrent `cua spaces create ghcr.io/trycua/linux:24.04-slim --on hetzner --instance-type cax31 --cpus 1 --memory-mb 512`), runs `cua sb exec <ref> -- echo ok` in every created Space, counts the Spaces that answer on that one host, then deletes them all. n=3 runs. $/Space-hour = the instance's on-demand list price / Spaces held at once (Hetzner Cloud API server_types cax31 fsn1 price_hourly gross $0.0400, read 2026-10-25).",
            "reproduce": "# Cua Spaces 0.15.0 from cua.ai/download (its cua CLI is cua 0.9.0)\ncurl -fLO https://cua.ai/benchmarks/cost-per-sandbox-hour-hetzner-vs-aws/files/pack.py\ncua auth login && cua cloud connect hetzner --token-stdin --region fsn1 < token\ncua daemon start --foreground &\ncua cloud budget --autoscale on --max-per-hour 0.40 --monthly 20\ncua cloud hosts add --provider hetzner --type cax31 --region fsn1 --ttl-hours 2\nfor r in 1 2 3; do python3 pack.py hetzner cax31 32 16 run$r --cpus 1 --memory-mb 512; done\ncua cloud hosts rm <host> && cua cloud sweep --all --delete",
            "caveats": [
              "The ceiling of 25 Spaces per machine is the account plan's live-session limit, not the machine's: further creates were refused with 'Your plan allows 25 live sessions'. So the cost per Space-hour is an upper bound.",
              "Price is the instance's on-demand list price only; extra.usd_per_space_hour_incl_public_ipv4 adds its public IPv4. Disk and traffic are not included.",
              "Spaces were idle apart from the exec check: booked-shape density, not a CPU-bound load.",
              "Hetzner bills each started hour."
            ],
            "sources": [],
            "status": "measured"
          }
        },
        {
          "label": "AWS c7g.2xlarge",
          "run": {
            "run": "2026-10-25/result-aws",
            "schema": "cua.bench-result/v1",
            "bench": "elastic-pack.aws",
            "slug": "cost-per-sandbox-hour-hetzner-vs-aws",
            "metric": "usd_per_space_hour",
            "value": 0.0116,
            "unit": "USD/Space-hour",
            "stat": "max",
            "n": 3,
            "percentiles": {
              "min": 0.0116,
              "max": 0.0116
            },
            "extra": {
              "usd_per_hour_instance_list": 0.29,
              "spaces_per_host_min": 25,
              "spaces_per_host_max": 25,
              "usd_per_space_hour_incl_public_ipv4": 0.0118,
              "public_ipv4_usd_per_hour": 0.005
            },
            "samples_csv": "samples-aws.csv",
            "measured_at": "2026-10-25T01:16:57Z",
            "build": {
              "cua": "0.9.0",
              "app": "0.15.0",
              "source": "cua CLI bundled in Cua Spaces 0.15.0 DMG (GitHub release cua-spaces-v0.15.0, published 2026-10-24T19:42Z), `cua --version` = cua 0.9.0",
              "published": true
            },
            "host": {
              "name": "Mac Studio (the client)",
              "model": "Mac14,13",
              "chip": "Apple M2 Max",
              "cpus": 12,
              "memory_gb": 96,
              "os": "macOS 26.6.2",
              "where": "client in California, home network"
            },
            "environment": {
              "kind": "container (gVisor) on one elastic pool host",
              "cloud": "aws",
              "machine_type": "c7g.2xlarge (8 vCPU Graviton3, 16 GiB)",
              "space_shape": "ghcr.io/trycua/linux:24.04-slim, 1 vCPU / 512 MiB booked each",
              "autoscale": "on, $0.40/h cap (blocks a 2nd host), host pinned via `cua cloud hosts add`"
            },
            "method": "Released cua 0.9.0 elastic pool. One pinned c7g.2xlarge (8 vCPU Graviton3, 16 GiB) host (`cua cloud hosts add`). Each run asks for 32 Spaces at once (16 concurrent `cua spaces create ghcr.io/trycua/linux:24.04-slim --on aws --instance-type c7g.2xlarge --cpus 1 --memory-mb 512`), runs `cua sb exec <ref> -- echo ok` in every created Space, counts the Spaces that answer on that one host, then deletes them all. n=3 runs. $/Space-hour = the instance's on-demand list price / Spaces held at once (AWS Price List API, c7g.2xlarge Linux on-demand us-west-2 $0.29/h).",
            "reproduce": "# Cua Spaces 0.15.0 from cua.ai/download (its cua CLI is cua 0.9.0)\ncurl -fLO https://cua.ai/benchmarks/cost-per-sandbox-hour-hetzner-vs-aws/files/pack.py\ncua auth login && cua cloud connect aws --profile <aws-profile> --region us-west-2\ncua daemon start --foreground &\ncua cloud budget --autoscale on --max-per-hour 0.40 --monthly 20\ncua cloud hosts add --provider aws --type c7g.2xlarge --ttl-hours 2\nfor r in 1 2 3; do python3 pack.py aws c7g.2xlarge 32 16 run$r --cpus 1 --memory-mb 512; done\ncua cloud hosts rm <host> && cua cloud sweep --all --delete",
            "caveats": [
              "The ceiling of 25 Spaces per machine is the account plan's live-session limit, not the machine's: further creates were refused with 'Your plan allows 25 live sessions'. So the cost per Space-hour is an upper bound.",
              "Price is the instance's on-demand list price only; extra.usd_per_space_hour_incl_public_ipv4 adds its public IPv4. Disk and traffic are not included.",
              "Spaces were idle apart from the exec check: booked-shape density, not a CPU-bound load."
            ],
            "sources": [],
            "status": "measured"
          }
        }
      ]
    }
  ]
}
