Cloud sandboxes, measured
Oct 22, 2026 · 7 providers (Boat next) · Florida, US · 100 runs per test, 30 per agent task
Oct 22, 2026 · 6 providers (Boat and Superserve next) · Florida, US · 100 runs per test, 30 per agent task
Cold start
Median s · lower is better
Agent work, 100 tool calls
Median s · lower is better
Cost per 1,000 tasks
USD · lower is better
Plain: billed. Hatched: metered. Dotted: list-price estimate.
Start from snapshot
Median s · lower is better
- 1Tenki: 29 of 30: Tenki's snapshot failed on one sandbox, so there was nothing to start from.
Cold start
Median s · lower is better
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
Agent work, 100 tool calls
Median s · lower is better
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
Cost per 1,000 tasks
USD · lower is better
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
Plain: billed. Hatched: metered. Dotted: list-price estimate.
Start from snapshot
Median s · lower is better
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest. 26 of 30: four attempts failed in our own ownership check, so they are set aside, not counted.
Where the time goes
Step by step, from median timings. Colour is the provider's time; grey is ours.
- Cold startcreate → ready1.44s
- create()provider API449ms
- Bench bookkeepingnot counted104ms
- Ownership checkours · excluded101ms
- Journal writeours · excluded2.9ms
- First commandecho ok110ms
- SDK setupSandbox SDK778msSLOWEST
- Cold startcreate → ready1.92s
- create()provider API737ms
- Bench bookkeepingnot counted113ms
- Ownership checkours · excluded111ms
- Journal writeours · excluded2.9ms
- First commandecho ok169ms
- SDK setupSandbox SDK899msSLOWEST
Start-up
Cold start is the wait before an agent can do anything: from create() until the first command runs, the provider's own time. Ready through Sandbox SDK adds the setup our SDK does after that, marked as ours.
Cold start
create() to first command, without our SDK's setup · Median seconds · Lower is better
Notes (2)
- 1E2B: ran E2B's default base template, 2 vCPU and 512 MB. E2B's pricing page says its default sandbox has 4 GB.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Ready through Sandbox SDK
create() until our SDK's handle is ready · Median seconds of each part · Lower is better
Notes (2)
- The hatched part is work Sandbox SDK does after the sandbox can run commands, such as preparing the workspace. It is ours, so it is kept out of cold start. Each part is its own median, so the stack can differ a little from the median total shown on hover.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Every cold start
Each successful cold start, one ridge per provider · Log scale · Further left is faster
Cold start
create() to first command, without our SDK's setup · Median seconds · Lower is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Ready through Sandbox SDK
create() until our SDK's handle is ready · Median seconds of each part · Lower is better
Notes (4)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- The hatched part is work Sandbox SDK does after the sandbox can run commands, such as preparing the workspace. It is ours, so it is kept out of cold start. Each part is its own median, so the stack can differ a little from the median total shown on hover.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Every cold start
Each successful cold start, one ridge per provider · Log scale · Further left is faster
Agent work
Real coding-agent tasks, so CPU, disk and network count as much as the API.
Agent tool replay
100 tool calls in a row: write, read, edit, list, grep, run a test · Median seconds · Lower is better
Notes (2)
- 1boxd: runs in Germany, so every call from our Florida server crosses the Atlantic.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
npm install
npm ci for a small Vite and React app · Median seconds · Lower is better
Notes (4)
- 1Upstash Box: one of 30 attempts failed while uploading the app's files (Upstash returned HTTP 500). It counts as a failure here; the dev server, preview and edit loop tests on that sandbox could not run.
- 2boxd: runs in Germany, so every call from our Florida server crosses the Atlantic.
- 3E2B: ran E2B's default base template, 2 vCPU and 512 MB. E2B's pricing page says its default sandbox has 4 GB.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
pip install
requests and numpy from PyPI · Median seconds · Lower is better
Notes (2)
- 1boxd: runs in Germany, so every call from our Florida server crosses the Atlantic.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
git clone
Shallow clone of a small pinned repo · Median seconds · Lower is better
Notes (2)
- 1boxd: runs in Germany, so every call from our Florida server crosses the Atlantic.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Dev server ready
Start Vite and wait until it is ready · Median seconds · Lower is better
Notes (3)
- 1Upstash Box: 29 of 30: on one sandbox the npm install step failed (Upstash HTTP 500), so this test could not run there.
- 2boxd: runs in Germany, so every call from our Florida server crosses the Atlantic.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Preview URL first byte
Fetch the dev server through the public preview URL · Median seconds · Lower is better
Notes (3)
- 1Upstash Box: 29 of 30: on one sandbox the npm install step failed (Upstash HTTP 500), so this test could not run there.
- 2boxd: runs in Germany, so every call from our Florida server crosses the Atlantic.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Edit, rebuild, reload
Edit a file, rebuild, fetch the page again · Median seconds · Lower is better
Notes (3)
- 1Upstash Box: 29 of 30: on one sandbox the npm install step failed (Upstash HTTP 500), so this test could not run there.
- 2boxd: runs in Germany, so every call from our Florida server crosses the Atlantic.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Agent tool replay
100 tool calls in a row: write, read, edit, list, grep, run a test · Median seconds · Lower is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest. Runs in Germany, so every call from our Florida server crosses the Atlantic.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
npm install
npm ci for a small Vite and React app · Median seconds · Lower is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest. Runs in Germany, so every call from our Florida server crosses the Atlantic.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
pip install
requests and numpy from PyPI · Median seconds · Lower is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest. Runs in Germany, so every call from our Florida server crosses the Atlantic.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
git clone
Shallow clone of a small pinned repo · Median seconds · Lower is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest. Runs in Germany, so every call from our Florida server crosses the Atlantic.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Dev server ready
Start Vite and wait until it is ready · Median seconds · Lower is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest. Runs in Germany, so every call from our Florida server crosses the Atlantic.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Preview URL first byte
Fetch the dev server through the public preview URL · Median seconds · Lower is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest. Runs in Germany, so every call from our Florida server crosses the Atlantic.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Edit, rebuild, reload
Edit a file, rebuild, fetch the page again · Median seconds · Lower is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest. Runs in Germany, so every call from our Florida server crosses the Atlantic.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Everyday calls
What an agent does hundreds of times per task: run a command, move files, reattach to a sandbox.
Run a command
A no-op command, mostly network and API overhead · Median seconds · Lower is better
Notes (1)
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Write + read 1 KB
Write a 1 KB file and read it back · Median seconds · Lower is better
Notes (1)
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Write + read 10 MB
Write a 10 MB file and read it back · Median seconds · Lower is better
Notes (1)
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Reconnect
Attach to an existing sandbox by ID and run a command · Median seconds · Lower is better
Notes (1)
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Destroy
Delete the sandbox and wait for confirmation · Median seconds · Lower is better
Notes (1)
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Run a command
A no-op command, mostly network and API overhead · Median seconds · Lower is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Write + read 1 KB
Write a 1 KB file and read it back · Median seconds · Lower is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Write + read 10 MB
Write a 10 MB file and read it back · Median seconds · Lower is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Reconnect
Attach to an existing sandbox by ID and run a command · Median seconds · Lower is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Destroy
Delete the sandbox and wait for confirmation · Median seconds · Lower is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Pause & snapshots
Pausing stops paying for idle time while an agent waits on a human, with every process kept. Where stop and start restarts the sandbox instead, we mark pause as not supported. Snapshots start many sandboxes from one prepared state.
Resume
Resume a paused sandbox until a command runs · Median seconds · Lower is better
Notes (2)
- Daytona: not supported. Daytona's container sandboxes have no pause: stop and start restarts the sandbox and ends every running process. We don't time a restart as a pause.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Pause
Pause a running sandbox until the provider confirms · Median seconds · Lower is better
Notes (2)
- Daytona: not supported. Daytona's container sandboxes have no pause: stop and start restarts the sandbox and ends every running process. We don't time a restart as a pause.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Pause + resume
Pause, resume, then run a command · Median of each part, seconds · Lower is better
Notes (2)
- Daytona: not supported. Daytona's container sandboxes have no pause: stop and start restarts the sandbox and ends every running process. We don't time a restart as a pause.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Take snapshot
Save a prepared sandbox as a snapshot · Median seconds · Lower is better
Notes (1)
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Start from snapshot
New sandbox from that snapshot, then a command · Median seconds · Lower is better
Notes (2)
- 1Tenki: 29 of 30: Tenki's snapshot failed on one sandbox, so there was nothing to start from.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Resume
Resume a paused sandbox until a command runs · Median seconds · Lower is better
Notes (4)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- Daytona: not supported. Daytona's container sandboxes have no pause: stop and start restarts the sandbox and ends every running process. We don't time a restart as a pause.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Pause
Pause a running sandbox until the provider confirms · Median seconds · Lower is better
Notes (4)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- Daytona: not supported. Daytona's container sandboxes have no pause: stop and start restarts the sandbox and ends every running process. We don't time a restart as a pause.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Pause + resume
Pause, resume, then run a command · Median of each part, seconds · Lower is better
Notes (4)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- Daytona: not supported. Daytona's container sandboxes have no pause: stop and start restarts the sandbox and ends every running process. We don't time a restart as a pause.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Take snapshot
Save a prepared sandbox as a snapshot · Median seconds · Lower is better
Notes (4)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest. 26 of 30: four attempts failed in our own ownership check, so they are set aside, not counted.
- No result for Daytona (not run: our Daytona account's 10 vCPU quota kept its 4 vCPU snapshot tests from running).
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Start from snapshot
New sandbox from that snapshot, then a command · Median seconds · Lower is better
Notes (4)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest. 26 of 30: four attempts failed in our own ownership check, so they are set aside, not counted.
- No result for Daytona (not run: our Daytona account's 10 vCPU quota kept its 4 vCPU snapshot tests from running).
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Bursts
10 or 25 sandboxes started at once, as an agent fanning out would, timed until the last one runs a command.
10 at once, all ready
10 creates at once, until all 10 run a command · Median seconds · Lower is better
Notes (1)
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
25 at once, all ready
25 creates at once, until all 25 run a command · Median seconds · Lower is better
Notes (2)
- No result for Daytona (not run: our Daytona account's 10 vCPU quota can't hold 25 sandboxes at once); Upstash Box (two of its three bursts of 25 never started, because our harness still had two of its own sandboxes open and Upstash's 25-sandbox account cap left no room; not counted; coming in the next update); boxd (one of its three bursts of 25 was cut short by our own ownership check (16 creates and 5 deletes failed on our side), so it is not counted; coming in the next update).
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
10 at once, all ready
10 creates at once, until all 10 run a command · Median seconds · Lower is better
Notes (3)
- No result for Daytona (not run: our Daytona account's 10 vCPU quota can't hold ten 4 vCPU sandboxes at once); boxd (ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest. One of its three bursts of 10 was cut short by our own ownership check (1 create failed on our side), so it is not counted; coming in the next update).
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
25 at once, all ready
25 creates at once, until all 25 run a command · Median seconds · Lower is better
Notes (4)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- No result for Daytona (not run: our Daytona account's 10 vCPU quota can't hold 25 4 vCPU sandboxes at once); Upstash Box (its third burst of 25 never started, because our harness still had one of its own sandboxes open and Upstash's 25-sandbox account cap left no room; not counted; coming in the next update).
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Machines
What each provider ran: what we asked for, what we measured inside, and the hardware underneath.
What each provider ran
Each provider's default sandbox, and the vCPU and RAM measured inside it
E2B
Asked for 2 vCPU, 512 MB, template base
Measured 2 vCPU, 473 MB
E2B's default base template is 2 vCPU and 512 MB. E2B's pricing page says its default sandbox has 4 GB, so E2B ran smaller here than that.
Daytona
Asked for 1 vCPU, 1 GB
Measured 1 vCPU, 1 GB
Upstash Box
Asked for 2 vCPU, 4 GB
Measured 2 vCPU, 4 GB
boxd
Asked for 2 vCPU, 8 GB
Measured 2 vCPU, 7.8 GB
Freestyle
Asked for 4 vCPU, 8 GB
Measured 4 vCPU, 7.8 GB
Tenki
Asked for provider default
Measured 2 vCPU, 3.8 GB
Tenki documents a 5 GiB default disk but not a default vCPU or RAM, so those are what we measured.
Superserve
Asked for 1 vCPU, 1 GB, template sandbox-bench-node22-py311-1x1-pinned
Measured 1 vCPU, 994 MB
Superserve ran a template we built with Node 22 and Python 3.11 preinstalled, at its default 1 vCPU, 1 GB RAM and 4 GB disk. Superserve's own templates have Node (node-22) or Python (python-3.11), not both, and our tests need both.
| Provider | Asked for | Measured inside |
|---|---|---|
| E2B | 2 vCPU, 512 MB, template baseE2B's default base template is 2 vCPU and 512 MB. E2B's pricing page says its default sandbox has 4 GB, so E2B ran smaller here than that. | 2 vCPU, 473 MB |
| Daytona | 1 vCPU, 1 GB | 1 vCPU, 1 GB |
| Upstash Box | 2 vCPU, 4 GB | 2 vCPU, 4 GB |
| boxd | 2 vCPU, 8 GB | 2 vCPU, 7.8 GB |
| Freestyle | 4 vCPU, 8 GB | 4 vCPU, 7.8 GB |
| Tenki | provider defaultTenki documents a 5 GiB default disk but not a default vCPU or RAM, so those are what we measured. | 2 vCPU, 3.8 GB |
| Superserve | 1 vCPU, 1 GB, template sandbox-bench-node22-py311-1x1-pinnedSuperserve ran a template we built with Node 22 and Python 3.11 preinstalled, at its default 1 vCPU, 1 GB RAM and 4 GB disk. Superserve's own templates have Node (node-22) or Python (python-3.11), not both, and our tests need both. | 1 vCPU, 994 MB |
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Default machine size
Advertised size of each provider's default sandbox · Tap or focus a bar for what we measured inside
vCPU
Default sandbox · Higher is better
RAM
Default sandbox · Higher is better
Disk
Default sandbox · Higher is better
Notes (1)
- E2B: E2B's default base template is 2 vCPU and 512 MB. E2B's pricing page says its default sandbox has 4 GB, so E2B ran smaller here than that.
Hardware inside each sandbox
Chip, memory, cloud and region, and how each sandbox is isolated
Named means the CPU reports its own model. Inferred means we worked it out from what the sandbox shows, such as model number, cache and clock, or from the chip's published spec. Measured memory was read inside the sandbox. From a hardware probe on Oct 22, 2026, checked against the benchmark's fingerprints. Open a row for what each sandbox hides.
E2BChipIntel Xeon Platinum 8373CIce Lake, 2.6 GHz, 54 MB L3 · inferredMemoryDDR4inferredWhereGoogle Cloudus-west1, The Dalles, OregonRuns asFirecracker microVMnested inside a Google Cloud VM
Hidden or different from the real machine
- The CPU name, microcode and clock leaves are hidden. The chip is identified from its model number, cache size and 2.6 GHz clock.
- The default 2 vCPUs are one physical core with two hyperthreads, so two-thread work scales well below twice one thread.
- No DMI or PCI devices, so the memory type can't be read inside; DDR4 follows from the chip.
- Memory
- DDR4-3200, the chip's memory type (inferred)
- Disk
- 23 GB virtio disk, ext4
- Kernel
- Linux 6.1, Debian 12
- Size
- E2B's default base template is 2 vCPU and 512 MB. E2B's pricing page says its default sandbox has 4 GB, so E2B ran smaller here than that.
DaytonaChipAMD EPYC 9354P, 9354, 9254 or 9275FZen 4 (Genoa); the 9275F is Zen 5 (Turin). Hosts vary · named by the CPUMemoryDDR5measuredWhereBare-metal serversLocation not visible; control plane on AWS us-east-1Runs asDocker containershares the host's kernel; cgroups set its CPU and RAM
Hidden or different from the real machine
- Nothing at the CPU level is hidden: the real CPU name, microcode, server model (Dell PowerEdge R6615 in the probe, a Supermicro AS-2115GT-HNTR in the benchmark) and disks are visible.
- nproc and lscpu show every host thread (48 or 64) and /proc/meminfo shows the host's RAM, while the default sandbox may use 1 CPU and 1 GB. Tools that size thread pools or caches from those numbers oversubscribe.
- Hosts differ in clock speed, so single-thread results vary from sandbox to sandbox. Neighbours share the host kernel.
- Outbound internet is blocked on our account tier, so the sandbox's own network location could not be read.
- Memory
- Registered DDR5, read from the memory controller on a 9254 host (measured)
- Disk
- 3 GB container disk (10 GB at 4 vCPU) on the host's NVMe RAID
- Kernel
- Host kernel 6.17 (Ubuntu 24.04), Debian 13 userland
- Chips in this track
- 9354P ×59, 9254 ×43, 9354 ×27, 9275F ×1, from the benchmark's fingerprints
Upstash BoxChipAWS Graviton4Arm Neoverse V2, 2.8 GHz; Graviton4 from the m8g instance type · inferredMemoryDDR5inferredWhereAWS EC2us-east-1, Ashburn, VirginiaRuns asDocker containeron a shared m8g.16xlarge VM; cgroups set its CPU and RAM
Hidden or different from the real machine
- The only Arm provider here: x86-only binaries don't run, and compile and run times differ for that reason alone.
- nproc and /proc/meminfo show the host's 64 CPUs and 256 GB, while a box may use 2 CPUs and 4 GB (4 and 8 at the medium size).
- No DMI tables or clock readings inside, so memory type and clock come from AWS's published spec.
- Neighbours share the host kernel and the chip's L3 cache.
- Memory
- DDR5-5600, from AWS's Graviton4 spec (inferred)
- Disk
- 5 GB overlay root and a 5 GB /workspace, on EBS
- Kernel
- Host kernel 7.0 (Ubuntu 24.04 for AWS), Debian 12 userland
boxdChipAMD EPYC 9554P, likelyZen 4 (Genoa), 3.1 GHz · inferredMemoryDDR5inferredWhereLatitude.sh bare metalFrankfurt, GermanyRuns asFirecracker microVMwith Docker installed inside the VM
Hidden or different from the real machine
- The CPU name is trimmed to "AMD EPYC" and the microcode and topology are hidden. The chip is inferred from its 3.1 GHz clock and the Genoa servers Latitude.sh sells; a dual-socket 9554 can't be ruled out.
- No DMI, so the memory type is inferred.
- AVX-512 is exposed, which can help vectorised work against hosts that hide it.
- The disk reports itself as rotational although it is virtual, so tools that tune for hard drives may behave differently.
- Memory
- DDR5-4800, the Genoa platform's memory (inferred)
- Disk
- 100 GB virtio disk, ext4
- Kernel
- Linux 6.18 (custom build), Ubuntu 24.04
FreestyleChipAMD EPYC 7763, likelyZen 3 (Milan), 2.45 GHz · inferredMemoryDDR4inferredWhereFreestyle's own network (AS36320)San Francisco Bay AreaRuns asFirecracker microVM4 vCPU, 8 GB, no hyperthreads exposed
Hidden or different from the real machine
- The CPU name, microcode and topology are hidden. The chip is inferred from its 2.45 GHz clock, cache and Zen 3 features.
- Memory is added after boot: about 3 GB is free at first, 7.9 GB later.
- No DMI, so the memory type is inferred.
- Memory
- DDR4-3200, the Milan platform's memory (inferred)
- Disk
- 32 GB virtio disk, ext4
- Kernel
- Linux 6.1
TenkiChipAMD EPYC 7B13, as reportedZen 3 (Milan), 2.25 GHz. The 4 vCPU VM also showed EPYC 9575F (Zen 5, Turin) cores · conflictingMemoryNot knownNo memory data inside the VMWhereLuxor (AS19538)SeattleRuns asCloud Hypervisor microVMwith a container inside
Hidden or different from the real machine
- On the 4 vCPU VM, two vCPUs report an EPYC 7B13 (Milan) and two an EPYC 9575F (Turin). That fits a snapshot taken on a Milan host and restored on a Turin one, so the real host may be newer than the name says.
- CPU features are capped at the Milan set on every vCPU, so no AVX-512 even on Turin.
- The clock reads 2.25 GHz, the 7B13's base, which may be carried over from the snapshot.
- Memory
- No memory data inside the VM
- Disk
- 5 GB virtio disk, ext4
- Kernel
- Linux 6.18
- Size
- Tenki documents a 5 GiB default disk but not a default vCPU or RAM, so those are what we measured.
SuperserveChipIntel Xeon, Sapphire RapidsLikely Xeon Platinum 8481C; 2.2 GHz, 105 MB L3 · inferredMemoryDDR5inferredWhereGoogle Cloudus-east4, Northern Virginia, from its IP rangeRuns asFirecracker microVMlikely inside a Google Cloud VM
Hidden or different from the real machine
- The CPU name and microcode are hidden. The chip family is clear from its model number; the exact SKU is not.
- The old 4.14 guest kernel can't turn on the chip's AMX units, so AMX workloads can't use them.
- No DMI, so the memory type is inferred.
- Memory
- DDR5, the Sapphire Rapids platform's memory (inferred)
- Disk
- 4 GB virtio disk, ext4
- Kernel
- Linux 4.14, Debian 12
- Size
- Superserve ran a template we built with Node 22 and Python 3.11 preinstalled, at its default 1 vCPU, 1 GB RAM and 4 GB disk. Superserve's own templates have Node (node-22) or Python (python-3.11), not both, and our tests need both.
CPU, one core
One core running a fixed Python loop · Median operations per second · Higher is better
Notes (1)
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
CPU, all cores
Every core at once, so bigger machines win · Median operations per second · Higher is better
Notes (1)
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Memory bandwidth
Copying 16 MB in memory · Median MB per second · Higher is better
Notes (1)
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Disk write
Writing a 64 MB file in order · Median MB per second · Higher is better
Notes (1)
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Disk read
Reading that file back, possibly from cache · Median MB per second · Higher is better
Notes (1)
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
4K random write
4 KB writes, each synced to disk · Median operations per second · Higher is better
Notes (1)
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
4K random read
4 KB random reads · Median operations per second · Higher is better
Notes (1)
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
What each provider ran
Asked for 4 vCPU, 8 GB; measured inside each sandbox
E2BMatches
Asked for 4 vCPU, 8 GB, template r1h7gud12rf1f6iu29r0
Measured 4 vCPU, 7.8 GB
DaytonaMatches
Asked for 4 vCPU, 8 GB, template daytona-large
Measured 4 vCPU, 8 GB
Upstash BoxMatches
Asked for 4 vCPU, 8 GB ("medium")
Measured 4 vCPU, 8 GB
boxdDiffers
Asked for 4 vCPU, 16 GB
Measured 4 vCPU, 16 GB
Ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
FreestyleMatches
Asked for 4 vCPU, 8 GB
Measured 4 vCPU, 7.8 GB
TenkiMatches
Asked for 4 vCPU, 8 GB
Measured 4 vCPU, 7.8 GB
| Provider | Asked for | Measured inside | 4 vCPU, 8 GB? |
|---|---|---|---|
| E2B | 4 vCPU, 8 GB, template r1h7gud12rf1f6iu29r0 | 4 vCPU, 7.8 GB | Matches |
| Daytona | 4 vCPU, 8 GB, template daytona-large | 4 vCPU, 8 GB | Matches |
| Upstash Box | 4 vCPU, 8 GB ("medium") | 4 vCPU, 8 GB | Matches |
| boxd | 4 vCPU, 16 GBRan 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest. | 4 vCPU, 16 GB | Differs |
| Freestyle | 4 vCPU, 8 GB | 4 vCPU, 7.8 GB | Matches |
| Tenki | 4 vCPU, 8 GB | 4 vCPU, 7.8 GB | Matches |
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Hardware inside each sandbox
Chip, memory, cloud and region, and how each sandbox is isolated
Named means the CPU reports its own model. Inferred means we worked it out from what the sandbox shows, such as model number, cache and clock, or from the chip's published spec. Measured memory was read inside the sandbox. From a hardware probe on Oct 22, 2026, checked against the benchmark's fingerprints. Open a row for what each sandbox hides.
E2BChipIntel Xeon Platinum 8373CIce Lake, 2.6 GHz, 54 MB L3 · inferredMemoryDDR4inferredWhereGoogle Cloudus-west1, The Dalles, OregonRuns asFirecracker microVMnested inside a Google Cloud VM
Hidden or different from the real machine
- The CPU name, microcode and clock leaves are hidden. The chip is identified from its model number, cache size and 2.6 GHz clock.
- The default 2 vCPUs are one physical core with two hyperthreads, so two-thread work scales well below twice one thread.
- No DMI or PCI devices, so the memory type can't be read inside; DDR4 follows from the chip.
- Memory
- DDR4-3200, the chip's memory type (inferred)
- Disk
- 23 GB virtio disk, ext4
- Kernel
- Linux 6.1, Debian 12
- At 4 vCPU
- The 4 vCPU, 8 GB template ran on the same CPU in the same region: two cores with two threads each.
DaytonaChipAMD EPYC 9354P, 9354, 9254 or 9275FZen 4 (Genoa); the 9275F is Zen 5 (Turin). Hosts vary · named by the CPUMemoryDDR5measuredWhereBare-metal serversLocation not visible; control plane on AWS us-east-1Runs asDocker containershares the host's kernel; cgroups set its CPU and RAM
Hidden or different from the real machine
- Nothing at the CPU level is hidden: the real CPU name, microcode, server model (Dell PowerEdge R6615 in the probe, a Supermicro AS-2115GT-HNTR in the benchmark) and disks are visible.
- nproc and lscpu show every host thread (48 or 64) and /proc/meminfo shows the host's RAM, while the default sandbox may use 1 CPU and 1 GB. Tools that size thread pools or caches from those numbers oversubscribe.
- Hosts differ in clock speed, so single-thread results vary from sandbox to sandbox. Neighbours share the host kernel.
- Outbound internet is blocked on our account tier, so the sandbox's own network location could not be read.
- Memory
- Registered DDR5, read from the memory controller on a 9254 host (measured)
- Disk
- 3 GB container disk (10 GB at 4 vCPU) on the host's NVMe RAID
- Kernel
- Host kernel 6.17 (Ubuntu 24.04), Debian 13 userland
- Chips in this track
- 9254 ×35, 9354P ×34, 9354 ×24, 9275F ×7, from the benchmark's fingerprints
Upstash BoxChipAWS Graviton4Arm Neoverse V2, 2.8 GHz; Graviton4 from the m8g instance type · inferredMemoryDDR5inferredWhereAWS EC2us-east-1, Ashburn, VirginiaRuns asDocker containeron a shared m8g.16xlarge VM; cgroups set its CPU and RAM
Hidden or different from the real machine
- The only Arm provider here: x86-only binaries don't run, and compile and run times differ for that reason alone.
- nproc and /proc/meminfo show the host's 64 CPUs and 256 GB, while a box may use 2 CPUs and 4 GB (4 and 8 at the medium size).
- No DMI tables or clock readings inside, so memory type and clock come from AWS's published spec.
- Neighbours share the host kernel and the chip's L3 cache.
- Memory
- DDR5-5600, from AWS's Graviton4 spec (inferred)
- Disk
- 5 GB overlay root and a 5 GB /workspace, on EBS
- Kernel
- Host kernel 7.0 (Ubuntu 24.04 for AWS), Debian 12 userland
- At 4 vCPU
- The medium size (4 vCPU, 8 GB) runs on the same m8g.16xlarge hosts.
boxdChipAMD EPYC 9554P, likelyZen 4 (Genoa), 3.1 GHz · inferredMemoryDDR5inferredWhereLatitude.sh bare metalFrankfurt, GermanyRuns asFirecracker microVMwith Docker installed inside the VM
Hidden or different from the real machine
- The CPU name is trimmed to "AMD EPYC" and the microcode and topology are hidden. The chip is inferred from its 3.1 GHz clock and the Genoa servers Latitude.sh sells; a dual-socket 9554 can't be ruled out.
- No DMI, so the memory type is inferred.
- AVX-512 is exposed, which can help vectorised work against hosts that hide it.
- The disk reports itself as rotational although it is virtual, so tools that tune for hard drives may behave differently.
- Memory
- DDR5-4800, the Genoa platform's memory (inferred)
- Disk
- 100 GB virtio disk, ext4
- Kernel
- Linux 6.18 (custom build), Ubuntu 24.04
- At 4 vCPU
- The 4 vCPU, 16 GB size ran on the same CPU type.
FreestyleChipAMD EPYC 7763, likelyZen 3 (Milan), 2.45 GHz · inferredMemoryDDR4inferredWhereFreestyle's own network (AS36320)San Francisco Bay AreaRuns asFirecracker microVM4 vCPU, 8 GB, no hyperthreads exposed
Hidden or different from the real machine
- The CPU name, microcode and topology are hidden. The chip is inferred from its 2.45 GHz clock, cache and Zen 3 features.
- Memory is added after boot: about 3 GB is free at first, 7.9 GB later.
- No DMI, so the memory type is inferred.
- Memory
- DDR4-3200, the Milan platform's memory (inferred)
- Disk
- 32 GB virtio disk, ext4
- Kernel
- Linux 6.1
TenkiChipAMD EPYC 7B13, as reportedZen 3 (Milan), 2.25 GHz. The 4 vCPU VM also showed EPYC 9575F (Zen 5, Turin) cores · conflictingMemoryNot knownNo memory data inside the VMWhereLuxor (AS19538)SeattleRuns asCloud Hypervisor microVMwith a container inside
Hidden or different from the real machine
- On the 4 vCPU VM, two vCPUs report an EPYC 7B13 (Milan) and two an EPYC 9575F (Turin). That fits a snapshot taken on a Milan host and restored on a Turin one, so the real host may be newer than the name says.
- CPU features are capped at the Milan set on every vCPU, so no AVX-512 even on Turin.
- The clock reads 2.25 GHz, the 7B13's base, which may be carried over from the snapshot.
- Memory
- No memory data inside the VM
- Disk
- 5 GB virtio disk, ext4
- Kernel
- Linux 6.18
- At 4 vCPU
- The 4 vCPU, 8 GB VM is the one that showed both chips.
CPU, one core
One core running a fixed Python loop · Median operations per second · Higher is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
CPU, all cores
Every core at once, so bigger machines win · Median operations per second · Higher is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Memory bandwidth
Copying 16 MB in memory · Median MB per second · Higher is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Disk write
Writing a 64 MB file in order · Median MB per second · Higher is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Disk read
Reading that file back, possibly from cache · Median MB per second · Higher is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
4K random write
4 KB writes, each synced to disk · Median operations per second · Higher is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
4K random read
4 KB random reads · Median operations per second · Higher is better
Notes (3)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Reliability
How often each provider failed, and why. Only failures the provider caused are counted; Method lists the ones we set aside.
Failed attempts
Per 1,000 attempts across the tests on this page · Lower is better
Every failure and its cause · 5 runs across 3 providers
Tenki
- 1× Tenki request failed (not_found). (not_found, 5, operation=snapshot)Take snapshot
boxd
- 1× boxd request failed. (provider)Write + read 10 MB
Upstash Box
- 1× Upstash Box exec failed (provider). (provider)Agent tool replay
- 1× Upstash Box files.write failed (unavailable, HTTP 500). (unavailable, HTTP 500, operation=files.write)npm install
- 1× Guest exit 143: Cloning into '/workspace/bench-clone'..git clone
Failed attempts
Per 1,000 attempts across the tests on this page · Lower is better
Every failure and its cause · 4 runs across 3 providers
Freestyle
- 1× Preview HTTP 502, no first bytePreview URL first byte
Upstash Box
- 1× Upstash Box exec failed (provider). (provider)Cold start
boxd
- 1× boxd request failed. (invalid_argument)Pause + resume
- 1× boxd request failed. (provider)Write + read 10 MB
Cost
What one tool replay task cost, read from each provider's billing where it reports one, and published prices for comparison.
Cost per 1,000 tasks
Create a sandbox, run the 100-call tool replay, delete it · US dollars per 1,000 tasks · Lower is better
- Billed: the provider's own usage charge
- Metered: the provider's recorded usage at its published rates
- Estimate: list price, where the provider's billing gives no amount
Notes (4)
- A task is: create a sandbox, run the 100-call tool replay, delete it. Each was its own sandbox in a separate cost run, billed per sandbox.
- Superserve, Freestyle: list-price estimates, because billing gives no amount for them.
- Billed and metered amounts are usage charges before credits, tax and plan minimums, not invoices. Estimates use compute list price only; disk, transfer and subscriptions are left out.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Price of a 4 vCPU, 8 GB sandbox
Per hour at each provider's published rates · US dollars · Lower is better
Notes (2)
- boxd does not list a 4 vCPU, 8 GB machine, so no price is shown.
- Compute only, at list price. Disk, transfer, subscriptions and free credits are left out. Upstash charges a rate per box size but only while the CPU is busy, so its figure is an upper bound. Boat charges a flat rate per size.
Price of each default sandbox
The machine each provider gives you by default, so sizes differ · US dollars · Lower is better
Notes (3)
- 1boxd bills in euros, €0.174 an hour, converted at the ECB rate of 1.1234 dollars per euro on October 21, 2026.
- Compute-only list prices for the machine measured inside, not invoices. Boat is a flat rate per size. Upstash and boxd are upper bounds: they bill for less than the full allocation.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Agent work vs cost
Median tool replay time against what 1,000 tool replay tasks cost · Both lower is better
Median tool replay, seconds (log scale)
Notes (4)
- A task is: create a sandbox, run the 100-call tool replay, delete it. Each was its own sandbox in a separate cost run, billed per sandbox. Time is the median tool replay from the main tests. Labels show the vCPUs it ran on.
- Hollow points are list-price estimates, not billing: Superserve, Freestyle.
- Boat and boxd run in Europe, so every call from our Florida server crosses the Atlantic.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
Cost per 1,000 tasks
Create a sandbox, run the 100-call tool replay, delete it · US dollars per 1,000 tasks · Lower is better
- Billed: the provider's own usage charge
- Metered: the provider's recorded usage at its published rates
- Estimate: list price, where the provider's billing gives no amount
Notes (6)
- 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- A task is: create a sandbox, run the 100-call tool replay, delete it. Each was its own sandbox in a separate cost run, billed per sandbox.
- Freestyle: list-price estimates, because billing gives no amount for them.
- Billed and metered amounts are usage charges before credits, tax and plan minimums, not invoices. Estimates use compute list price only; disk, transfer and subscriptions are left out.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Price of a 4 vCPU, 8 GB sandbox
Per hour at each provider's published rates · US dollars · Lower is better
Notes (2)
- boxd does not list a 4 vCPU, 8 GB machine, so no price is shown.
- Compute only, at list price. Disk, transfer, subscriptions and free credits are left out. Upstash charges a rate per box size but only while the CPU is busy, so its figure is an upper bound. Boat charges a flat rate per size.
Price of the machine each provider ran
The machine measured inside, at published rates · US dollars · Lower is better
Notes (4)
- 1boxd bills in euros, €0.348 an hour, converted at the ECB rate of 1.1234 dollars per euro on October 21, 2026.
- Compute-only list prices for the machine measured inside, not invoices. Boat is a flat rate per size. Upstash and boxd are upper bounds: they bill for less than the full allocation.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Agent work vs cost
Median tool replay time against what 1,000 tool replay tasks cost · Both lower is better
Median tool replay, seconds (log scale)
Notes (6)
- A task is: create a sandbox, run the 100-call tool replay, delete it. Each was its own sandbox in a separate cost run, billed per sandbox. Time is the median tool replay from the main tests. Labels show the vCPUs it ran on.
- boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
- Hollow points are list-price estimates, not billing: Freestyle.
- Boat and boxd run in Europe, so every call from our Florida server crosses the Atlantic.
- Boat: coming in the next update. Our Boat plan allows 200 creates a day, and this run used them up; a higher plan or quota may lift that.
- Superserve: not in this track: our Superserve plan caps templates at 2 vCPU, so there was no 4 vCPU machine to test. A paid plan may lift this; we will add it if it does.
Method
How the numbers were made, and what could bias them.
- This release
- Default-machine timings come from one run on one harness commit. Snapshots, bursts, the same-machine track and cost per task come from runs on a later harness commit whose changes only touched cleanup. Tenki's same-machine run stopped early at 78 of 100 cold starts; each chart shows its attempt count. A burst size is published for a provider only when all three of its bursts finished, and a chart names the reason for any provider it leaves out. Failures caused by our own code are set aside, not counted. Boat will be added in the next update.
- One SDK
- Every provider ran through Sandbox SDK, our own TypeScript SDK. Version 0.2.0 is public on npm, and the 1.0 used here will be published soon. Each adapter calls the provider's official SDK or API and uses its native path for commands and files where one exists.
- Cold start
- Timed from create() until a bare true command succeeds in the new sandbox: the provider's own time. Our SDK's setup after that point is timed separately and shown as Ready through Sandbox SDK. It is never part of cold start or bursts.
- Superserve
- Superserve ran a template we built with Node 22 and Python 3.11 preinstalled. Superserve offers a Node template (node-22) and a Python template (python-3.11), but our tests need both in one sandbox; before this template, our setup installed Python on every create.
- Two tracks
- Default machines: each provider's default sandbox, so sizes differ. E2B's default base template is 2 vCPU and 512 MB, though its pricing page says 4 GB. Same machine: every provider asked for 4 vCPU and 8 GB, Boat's default. boxd has no such size and ran 4 vCPU, 16 GB, its nearest. Superserve is left out because its account caps templates at 2 vCPU. Machines that differ from the track are marked on every chart.
- Billing
- Cost per task comes from a separate cost run: 10 sandboxes per provider, each created, running the 100-call tool replay once and deleted, so one sandbox's charge is the cost of one task. The main benchmark sandboxes are not priced, because providers ran different mixes of tests in them. Billed is the provider's own per-sandbox charge (Upstash Box; Daytona, whose bill can still change for up to 48 hours). Metered is the provider's own recorded usage times its published rates (E2B and boxd usage meters; Tenki's server-recorded session start and end). Estimates use the provider's published per-second rates and billing rules on our measured create-to-delete time, because there is no per-sandbox billing data (Freestyle has no billing API; Superserve reports usage only per account). Credits, tax and plan minimums are left out. One task costs a fraction of a cent, so charts show the cost of 1,000 tasks; results.json and results.md keep the per-task amount too.
- One location
- Every run started from one server in Florida, US. Distance to each provider's region affects every call; the Hardware tab under Machines shows where each sandbox ran.
- Plans and limits
- We used each provider's self-serve account. Where a plan or account limit changed what we could test, the chart says so: Superserve's plan caps templates at 2 vCPU, so it is not in the 4 vCPU track; Boat's plan allows 200 creates a day; Daytona's account quota of 10 vCPU kept its 4 vCPU snapshot and burst tests from running. A paid plan or a quota increase may lift these, and we will add the results when it does.
- Attempts
- 100 runs per quick test, 30 per agent task and 30 per snapshot test. Bursts: 3 of each size, each timed until every sandbox in it runs a command.
- Independent
- No provider paid for these results or had any say in them. Some may have seen an early copy to check for errors. We may work with some of these companies; that did not change how tests ran or how results are reported.
- Failures
- Only failures the provider caused count against it. We set aside failures our own code caused and ones we can't pin on either side, such as our SDK timing out while waiting. Attempts blocked by our own plan limits were rerun. Set aside:
- Default machines, boxd: 1 run, 21 tests. Our ownership check failed during one burst of 25 (16 creates, 5 deletes), so that burst is not counted.
- Default machines, Freestyle: 8 runs, 8 tests. Our SDK timed out or wrapped the error moving 10 MB, so we can't tell whose side failed.
- Default machines, Tenki: 1 run, 2 tests. Our cleanup check could not confirm the sandbox after Tenki's snapshot failed, so we can't tell whose side the delete failure was on.
- Same machine, Upstash Box: 3 runs, 5 tests. Our ownership check could not confirm the sandbox before deleting it, so we can't tell whose side failed.
- Same machine, Upstash Box: 3 runs, 4 tests. Our ownership check failed on 4 snapshot cleanup steps; none is counted.
- Same machine, Upstash Box: 3 runs, 3 tests. Our ownership check failed on 3 burst deletes; none is counted.
- Same machine, boxd: 12 runs, 12 tests. Our ownership check failed on 4 snapshot attempts, and our 30-second cleanup deadline ran out 8 times; none is counted.
- Same machine, boxd: 4 runs, 14 tests. Our ownership check failed on 1 burst create and 13 burst deletes; none is counted.
- Same machine, Freestyle: 3 runs, 3 tests. Our SDK timed out or wrapped the error moving 10 MB, so we can't tell whose side failed.
- Same machine, Tenki: 1 run, 1 test. The run was stopped during this attempt, so it is not counted.
- Ties
- Medians within each other's 95% confidence intervals are effectively tied. Focus or hover a bar for its interval and attempt count.
- Left out
- Download speed, because the public test host rate-limited several providers.