Cua

How fast does a microVM Space start on a Mac?

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.

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

Results

Time from the create call until the Space answers its first command, one Space at a time. Lower is better.

Fastest
323.2 ms
p50
341.1 ms
p90
349 ms
p99
359.9 ms
Slowest
359.9 ms
Values shown in the chart
MeasureValue
Fastest323.2 ms
p50341.1 ms
p90349 ms
p99359.9 ms
Slowest359.9 ms
Samples30

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

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

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.

Environment and build

MachineMac Studio, Mac14,13 (Mac Studio)
ChipApple M2 Max, 12 cores
Memory96 GB
OSmacOS 26.6.2 (25G83)
Wherelocal
Kindmicrovm
Imageghcr.io/trycua/linux:24.04-slim
Shape1 vCPU, 1 GiB, --headless
Other vms2
Networkn/a (local)
SettingsCUA_POOL_AUTO=off (no warm pool); golden snapshots at their default (on)
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 daemon start --foreground &   # with CUA_POOL_AUTO=off in its environment
IMG=ghcr.io/trycua/linux:24.04-slim
$RB create --prefix warm- --n 1 --image $IMG --kind microvm --cpus 1 --memory-mb 1024 --headless   # excluded warm-up
$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)

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

Does that include restoring a snapshot?

Yes. MicroVM Spaces start from a golden snapshot that the first create records; that first create is excluded. A start without the snapshot was not measured.

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.