Try Hanzo

Benchmarks / Sandbox cold start

measured

Cold start, by primitive

A V8 context ready to execute JavaScript in 0.13 ms, the median of one pass, reproducible by one command.

harness
hanzoai/benchmarks · sandbox
node sandbox/sandbox.mjs

prints the table on this page — transcribed from bench/README.md, the pass of 2026-09-07

What is measured

The time from asking for a sandbox to having one that will execute code. A V8 context is a fresh global inside a V8 isolate that is already running: it is cheap because it shares that isolate’s heap. Timings are the median of the pass.

Results

an M-series laptop · the pass of 2026-09-07 · median of the pass

primitivemeasured herewhat it can run
V8 context0.13 msJavaScript, sharing the heap

A context runs JavaScript, which makes it the right primitive for a JavaScript transform. An agent that installs a package or runs a shell gets a microVM instead, which is a separate measurement.

What this measures, and what it does not

Cold start is not throughput. This is the time to the first instruction, on an idle machine. It says nothing about what happens when a thousand sandboxes are asked for at once.

One machine, one day. A single pass on one laptop, reproducible by one command. Read it as a floor that has been established rather than as a service level.

It is one of three costs, not the cost. A sandbox is what an agent needs to run a command. What it costs to keep an agent that is doing nothing is 477 bytes and a 0.034 ms resume, and what a running agent holds is 601 bytes of heap and 125 ns to spawn. The three are separate measurements with separate commands and they do not add up into a single number.

harness and the committed table: hanzoai/benchmarks · sandbox · sandbox.mjs needs a container runtime; colima start is enough on macOS

Build what’s next.