{
  "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": []
}
