# How long do 256 sandboxes take to start on one Mac?

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.

- Page: https://cua.ai/benchmarks/256-sandboxes-one-mac
- Measured: 2026-10-25
- Raw data: https://cua.ai/benchmarks/256-sandboxes-one-mac.csv
- build 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; n = 10

## Results

Wall time per batch of 256. Lower is better.

| Measure | Value |
| --- | --- |
| Fastest | 25.16 s |
| p50 | 26.05 s |
| p90 | 26.39 s |
| p99 | 26.59 s |
| Slowest | 26.59 s |

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

## Environment

- Machine: Mac Studio, Mac14,13 (Mac Studio)
- Chip: Apple M2 Max, 12 cores
- Memory: 96 GB
- OS: macOS 26.6.2 (25G83)
- Where: local
- 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)
- Other vms: 1
- Network: n/a (local)
- Build: 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
- App: 0.15.0
- cua: 0.9.0
- cua_spacesd: 0.8.0

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

## Reproduce

```sh
# 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
CUA_POOL_AUTO=off cua daemon start --foreground &
ulimit -n 65536
$RB create --prefix w- --n 1 --kind container --runtime gvisor --cpus 1 --memory-mb 1024 --headless   # warm-up
for 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
```

## Questions

### Where do the 256 run?

All of them run as gVisor sandboxes inside the app's built-in Linux runtime VM, at its default size on this Mac (4 vCPU, 32 GiB).

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