Cua

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.

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

Results

Wall time per batch of 256. Lower is better.

Fastest
25.16 s
p50
26.05 s
p90
26.39 s
p99
26.59 s
Slowest
26.59 s
Values shown in the chart
MeasureValue
Fastest25.16 s
p5026.05 s
p9026.39 s
p9926.59 s
Slowest26.59 s
Samples10

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.

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

Environment and build

MachineMac Studio, Mac14,13 (Mac Studio)
ChipApple M2 Max, 12 cores
Memory96 GB
OSmacOS 26.6.2 (25G83)
Wherelocal
Kindgvisor
Imageghcr.io/trycua/linux:24.04-slim
Shape1 vCPU, 1 GiB per Space, --headless
SettingsCUA_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 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
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

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

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.

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.