Cua

How many VM Spaces can run on one Mac?

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.

Measured Build app 0.15.0, cua 0.9.0, cua-spacesd 0.8.0n = 12Raw data (CSV)

Results

Idle VMs running at once. Higher is better.

VMs
96 VMs
Values shown in the chart
MeasureValue
VMs96 VMs
Samples12

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.

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).

Environment and build

MachineMac Studio, Mac14,13 (Mac Studio)
ChipApple M2 Max, 12 cores
Memory96 GB
OSmacOS 26.6.2 (25G83)
Wherelocal
Kindvm (QEMU 10.2.2 on HVF, Homebrew)
Imageghcr.io/trycua/linux:24.04-slim (QEMU disk)
Shape1 vCPU, 1 GiB, VMD_PROFILE=rollout (no desktop, no display hardware)
SettingsCUA_POOL_AUTO=off; default CUA_VM_VCPU_OVERCOMMIT (8x)
Other vms1
Networkn/a (local)
BuildCua 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
App0.15.0
cua0.9.0
cua_spacesd0.8.0

Reproduce

# On an Apple silicon Mac (macOS 26), with Rust (rustup) and git:
curl -fLO https://github.com/trycua/cua/releases/download/cua-spaces-v0.15.0/cua-spaces-0.15.0-darwin-universal.dmg
hdiutil attach -nobrowse -mountpoint /tmp/cua-dmg cua-spaces-0.15.0-darwin-universal.dmg
mkdir -p ~/bench && ditto "/tmp/cua-dmg/Cua Spaces.app" ~/bench/"Cua Spaces.app" && hdiutil detach /tmp/cua-dmg
git clone --depth 1 --branch cua-spaces-v0.15.0 https://github.com/trycua/cua ~/bench/cua
(cd ~/bench/cua/libs/cua && cargo build --locked --release -p cua-sdk --example rollout_bench --example channel_bench)
export PATH="$HOME/bench/Cua Spaces.app/Contents/MacOS:$PATH" CUA_HOME=~/bench/home DO_NOT_TRACK=1 CUA_TELEMETRY=0
RB=~/bench/cua/libs/cua/target/release/examples/rollout_bench
cd ~/bench/cua/libs/cua
CUA_POOL_AUTO=off CUA=$(command -v cua) ROLLOUT_BENCH=$RB OUT=/tmp/vmd VMD_PROFILE=rollout VMD_LABEL=m2max-96g \
  bash bench/spaces-startup/bench.sh vm-density

Cua commands use the published Cua Spaces 0.15.0 release and the public trycua/cua repository at the tag cua-spaces-v0.15.0. Downloads: samples (CSV), result (JSON), this page as Markdown.

Questions

Could it run more?

With more CPU overcommit, yes: memory would have fit about 242 VMs at this per-VM cost. macOS itself caps a host at 128 VMs.

Can I run this myself?

Yes. The commands under Reproduce use the published Cua Spaces 0.15.0 release and the public trycua/cua repository at the tag cua-spaces-v0.15.0. A `cua bench run` command that wraps them is coming; it isn't in a release yet.

Checked 2026-10-25. Sources: the samples and result files above, measured by Cua. All benchmarks.

Open in your browser to continue

Sign-in often fails inside this app's built-in browser. Open this page in Safari or Chrome to continue.