Performance
Latency numbers for the things agents actually do.
Real numbers, measured against the dev cluster on a wired 5 Gbps LAN. WAN adds ~30 ms of round-trip on top.
Sandbox open
| Platform | P50 | P95 | P99 |
|---|---|---|---|
| macOS (warm) | 385 ms | 3.4 s | 6.4 s |
macOS sandboxes come out of a warm pool — P50 is the steady state. P95/P99 cover the case where the warm slot was just claimed and the pool is busy cloning the next VM.
Input — mouse & keyboard
Round-trip from client.method() to ACK from cua-server inside the macOS VM.
| Method | P50 | P95 | P99 |
|---|---|---|---|
mouse.click | 98 ms | 165 ms | 433 ms |
mouse.move | 93 ms | 163 ms | 545 ms |
mouse.get_position | 97 ms | 117 ms | 550 ms |
keyboard.type | 95 ms | 112 ms | 441 ms |
keyboard.press | 92 ms | 160 ms | 531 ms |
keyboard.hotkey | 96 ms | 116 ms | 446 ms |
display.get_windows | 239 ms | 409 ms | 720 ms |
Screenshot & composite ops
screenshot returns a PNG of the full display. act does click-then-screenshot in a single round-trip; agent_loop is the same shape an agent sees per step.
| Method | P50 | P95 | P99 |
|---|---|---|---|
screenshot | 1361 ms | 1780 ms | 2243 ms |
act (click + screen) | 1392 ms | 1730 ms | 1940 ms |
agent_loop (one step) | 1380 ms | 1785 ms | 1912 ms |
recording.start+stop | 1353 ms | 1789 ms | 2086 ms |
Screenshots dominate every composite op — if you can run with compressed JPEGs or partial regions, do.
Exec
Short macOS shell commands (ls, echo) round-trip in ~80 ms P50. Long commands stream output — no extra overhead until they finish.
Hardware
M4 Mac minis have 10 cores (4 performance + 6 efficiency), 16 GB RAM and a 512 GB SSD. M4 Pro Macs (mac_model: "m4-pro") have 12 cores and 24 GiB. Apple M5 Pro Macs (mac_model: "m5-pro", hardware identifier Mac17,16) have 15 physical CPU cores, 24 GiB RAM and a nominal 512 GB SSD. Each sandbox picks its size at create, and the sandboxes on a Mac can together use all of its cores and memory. Guest vCPUs map onto the host's cores, so a fully loaded VM shares them with the host's own services. Guest memory also shares physical RAM with the host; heavy allocations can trigger host compression or swap.
M5 Pro's split pool is 8 + 7 cores · 12 GiB each, not two equal-size guests. Whole provides one 15 vCPU / 24 GiB VM. Default creates and snapshot restores take the available slot and report its actual resources; custom 7/12 plus 8/12 VMs can fill the split Mac. These hardware profiles do not establish new latency measurements: the timings above are not M5-specific benchmarks.
Concurrency
- Per Mac mini: two macOS VMs (one if the reservation uses the
wholewarm pool). - Per reservation: N × 2 VMs for split, N × 1 for whole (N = reserved Macs).
- Available Mac capacity is shown in the dashboard; use the reservation-scoped platform catalog for VM availability.