# Sandbox bench results

Sandbox bench: cloud sandbox providers for AI agents, timed through one SDK (Sandbox SDK, built by us; 0.2.0 is public on npm and the 1.0 used here will be published soon) from one server in Florida, US, on two tracks: the same 4 vCPU, 8 GB machine for every provider (the fair comparison, and the one the site opens on), and each provider's default machine. Medians, p95s and 95% confidence intervals per provider; every provider-side failure kept, failures caused by our own code set aside.

JSON: /results.json. Guide: /llms.txt.

Pick a track first: `tracks["same-spec"]` asks every provider for 4 vCPU and 8 GB, so prefer it for comparisons; `tracks.default` compares each provider's default sandbox, so sizes differ. In same-spec, `allocation.equalSpec: false` means the machine measured inside was not 4 vCPU, 8 GB, so compare that provider with care. median and p95 are in `unit`; `better` says which direction wins; results are sorted best first. attempts counts every try, failed included. A null median means the provider does not support the test, every attempt failed, or the result is excluded (see `status`). Cold start is the provider's own time, create() until the first command; Our SDK's setup after create is not included; on the faster SDK it measured 0.1 to 0.3 ms median per provider (20 creates each, separate run). `costPerTask.kind` is billed (provider charge), metered (provider usage at published rates) or estimate (list price, where billing gives no amount); a task is one sandbox that is created, runs the 100-call tool replay and is deleted, from a separate cost run: never compare them as if they were the same kind without saying so.

A task is: create a sandbox, run the 100-call tool replay, delete it, priced from a separate cost run. Prices cover compute only; disk, transfer, subscriptions and credits are excluded. boxd bills in euros, converted at the ECB rate.

# Track: Same machine: 4 vCPU, 8 GB

Every provider asked for Boat's machine, 4 vCPU and 8 GB, or its nearest size.

Run m: 2026-10-22 to 2026-10-23.

## Quick picks

| Need | Pick | Runner-up |
| --- | --- | --- |
| Fastest cold start | Superserve 0.52 s | Upstash Ephemeral Box 0.68 s |
| Fastest agent work (tool replay) | Daytona 12 s | Superserve 13 s |
| Fastest 25-sandbox fan-out | Superserve 0.79 s | E2B 1.1 s |
| Fastest reconnect | Daytona 0.30 s | Superserve 0.33 s |
| Cheapest task | Upstash Ephemeral Box $0.00026 per task, $0.26 per 1,000 (billed) | Upstash Box $0.00034 per task, $0.34 per 1,000 (billed) |
| Most reliable | E2B, Tenki, Superserve, Upstash Box, Daytona, Upstash Ephemeral Box, Boat 100.00% (tied) | Freestyle 99.91% |

## Machines and cost

| Provider | Asked for | Measured inside | 4 vCPU, 8 GB? | Ran in | Cost per task | Per 1,000 tasks | Cost kind | Price per hour | Success rate |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| E2B | 4 vCPU, 8 GB, template r1h7gud12rf1f6iu29r0 | 4 vCPU, 7.8 GB | yes | The Dalles, US | $0.0016 | $1.56 | metered | $0.331 | 100.00% |
| Freestyle | 4 vCPU, 8 GB | 4 vCPU, 7.8 GB | yes | not reported | $0.0020 | $1.97 | estimate | $0.264 | 99.91% |
| Tenki | 4 vCPU, 8 GB | 4 vCPU, 7.8 GB | yes | not reported | $0.0018 | $1.79 | estimate | $0.331 | 100.00% |
| boxd | 4 vCPU, 16 GB | 4 vCPU, 16 GB | no | Frankfurt am Main, DE | $0.0020 | $2.00 | metered | $0.391 (EUR 0.348) | 99.72% |
| Superserve | 4 vCPU, 8 GB, template sandbox-bench-node22-py311-4x8-pinned | 4 vCPU, 7.8 GB | yes | Washington, US | $0.0013 | $1.32 | billed | $0.331 | 100.00% |
| Upstash Box | 4 vCPU, 8 GB ("medium") | 4 vCPU, 8 GB | yes | Ashburn, US | $0.00034 | $0.34 | billed | $0.2 | 100.00% |
| Daytona | 4 vCPU, 8 GB, template daytona-large | 4 vCPU, 8 GB | yes | not reported | $0.0014 | $1.36 | billed | $0.331 | 100.00% |
| Upstash Ephemeral Box | 4 vCPU, 8 GB ("medium") | 4 vCPU, 8 GB | yes | Ashburn, US | $0.00026 | $0.26 | billed | $0.2 | 100.00% |
| Boat | 4 vCPU, 8 GB | 4 vCPU, 7.8 GB | yes | Lille, FR | $0.00052 | $0.52 | estimate | $0.036 | 100.00% |

Machine note 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.

Cost on E2B: Metered over 10 tasks, medium confidence.
Cost on Freestyle: Estimate over 10 tasks, low confidence.
Cost on Tenki: Estimate over 10 tasks, low confidence.
Cost on boxd: Metered over 10 tasks, medium confidence.
Cost on Superserve: Billed over 10 tasks, high confidence.
Cost on Upstash Box: Billed over 10 tasks, high confidence.
Cost on Daytona: Billed over 10 tasks, low confidence.
Cost on Upstash Ephemeral Box: Billed over 10 tasks, high confidence.
Cost on Boat: Estimate over 10 tasks, low confidence.

## Start-up

### Cold start

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Superserve | 0.52 s | 0.64 s | 100 | 0 | measured |
| 2 | Upstash Ephemeral Box | 0.68 s | 0.79 s | 100 | 0 | measured |
| 3 | Freestyle | 0.69 s | 2.0 s | 100 | 0 | measured |
| 4 | E2B | 0.79 s | 2.2 s | 100 | 0 | measured |
| 5 | Tenki | 1.1 s | 3.3 s | 100 | 0 | measured |
| 6 | Boat | 1.1 s | 1.6 s | 100 | 0 | measured |
| 7 | boxd (machine differs) | 1.2 s | 1.3 s | 100 | 0 | measured |
| 8 | Daytona | 1.3 s | 2.1 s | 100 | 0 | measured |
| 9 | Upstash Box | 2.7 s | 11 s | 100 | 0 | measured |

## Agent work

### Agent tool replay

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Daytona | 12 s | 30 s | 30 | 0 | measured |
| 2 | Superserve | 13 s | 15 s | 30 | 0 | measured |
| 3 | E2B | 15 s | 17 s | 30 | 0 | measured |
| 4 | Tenki | 21 s | 31 s | 30 | 0 | measured |
| 5 | Upstash Ephemeral Box | 22 s | 23 s | 30 | 0 | measured |
| 6 | Freestyle | 24 s | 42 s | 30 | 0 | measured |
| 7 | Upstash Box | 27 s | 32 s | 30 | 0 | measured |
| 8 | boxd (machine differs) | 34 s | 40 s | 30 | 0 | measured |
| 9 | Boat | 43 s | 49 s | 30 | 0 | measured |

### npm install

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Daytona | 0.75 s | 0.91 s | 30 | 0 | measured |
| 2 | Boat | 0.85 s | 1.9 s | 30 | 0 | measured |
| 3 | Upstash Ephemeral Box | 1.00 s | 1.0 s | 30 | 0 | measured |
| 4 | Upstash Box | 1.1 s | 1.2 s | 30 | 0 | measured |
| 5 | Superserve | 1.1 s | 1.8 s | 30 | 0 | measured |
| 6 | Tenki | 1.1 s | 1.8 s | 30 | 0 | measured |
| 7 | boxd (machine differs) | 1.4 s | 1.7 s | 30 | 0 | measured |
| 8 | Freestyle | 1.7 s | 3.5 s | 30 | 0 | measured |
| 9 | E2B | 1.8 s | 2.9 s | 30 | 0 | measured |

### pip install

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Tenki | 3.3 s | 5.0 s | 30 | 0 | measured |
| 2 | Superserve | 3.8 s | 4.6 s | 30 | 0 | measured |
| 3 | Boat | 3.9 s | 9.0 s | 30 | 0 | measured |
| 4 | Upstash Box | 4.0 s | 5.0 s | 30 | 0 | measured |
| 5 | Daytona | 4.2 s | 5.5 s | 30 | 0 | measured |
| 6 | boxd (machine differs) | 4.5 s | 5.0 s | 30 | 0 | measured |
| 7 | E2B | 4.9 s | 8.2 s | 30 | 0 | measured |
| 8 | Upstash Ephemeral Box | 5.6 s | 6.4 s | 30 | 0 | measured |
| 9 | Freestyle | 7.5 s | 20 s | 30 | 0 | measured |

### git clone

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Daytona | 0.43 s | 1.0 s | 30 | 0 | measured |
| 2 | Upstash Ephemeral Box | 0.61 s | 0.67 s | 30 | 0 | measured |
| 3 | Upstash Box | 0.69 s | 1.7 s | 30 | 0 | measured |
| 4 | Superserve | 1.0 s | 2.7 s | 30 | 0 | measured |
| 5 | Tenki | 1.2 s | 2.1 s | 30 | 0 | measured |
| 6 | E2B | 1.2 s | 2.1 s | 30 | 0 | measured |
| 7 | Freestyle | 1.5 s | 2.6 s | 30 | 0 | measured |
| 8 | boxd (machine differs) | 1.5 s | 1.9 s | 30 | 0 | measured |
| 9 | Boat | 2.1 s | 2.4 s | 30 | 0 | measured |

### Dev server ready

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Superserve | 1.3 s | 1.7 s | 30 | 0 | measured |
| 2 | Tenki | 1.9 s | 4.5 s | 30 | 0 | measured |
| 3 | E2B | 2.2 s | 3.4 s | 30 | 0 | measured |
| 4 | Freestyle | 2.2 s | 4.8 s | 30 | 0 | measured |
| 5 | Daytona | 2.6 s | 6.6 s | 30 | 0 | measured |
| 6 | Upstash Ephemeral Box | 3.1 s | 3.3 s | 30 | 0 | measured |
| 7 | Upstash Box | 3.7 s | 5.6 s | 30 | 0 | measured |
| 8 | boxd (machine differs) | 4.0 s | 4.9 s | 30 | 0 | measured |
| 9 | Boat | 4.0 s | 4.8 s | 30 | 0 | measured |

### Preview URL first byte

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Superserve | 0.18 s | 0.23 s | 30 | 0 | measured |
| 2 | Daytona | 0.25 s | 0.44 s | 30 | 0 | measured |
| 3 | E2B | 0.27 s | 0.49 s | 30 | 0 | measured |
| 4 | Upstash Ephemeral Box | 0.29 s | 0.41 s | 30 | 0 | measured |
| 5 | Upstash Box | 0.31 s | 0.73 s | 30 | 0 | measured |
| 6 | Tenki | 0.38 s | 0.49 s | 30 | 0 | measured |
| 7 | Freestyle | 0.48 s | 0.65 s | 30 | 1 | measured |
| 8 | boxd (machine differs) | 0.84 s | 0.99 s | 30 | 0 | measured |
| 9 | Boat | 0.86 s | 1.1 s | 29 | 0 | measured |

### Edit, rebuild, reload

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Freestyle | 0.30 s | 1.6 s | 30 | 0 | measured |
| 2 | Daytona | 0.31 s | 0.76 s | 30 | 0 | measured |
| 3 | E2B | 0.33 s | 0.56 s | 30 | 0 | measured |
| 4 | Upstash Ephemeral Box | 0.35 s | 0.38 s | 30 | 0 | measured |
| 5 | Upstash Box | 0.43 s | 0.93 s | 30 | 0 | measured |
| 6 | Superserve | 0.49 s | 0.90 s | 30 | 0 | measured |
| 7 | Tenki | 0.52 s | 0.61 s | 30 | 0 | measured |
| 8 | boxd (machine differs) | 1.1 s | 1.5 s | 30 | 0 | measured |
| 9 | Boat | 1.1 s | 1.4 s | 30 | 0 | measured |

## Everyday calls

### Run a command

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | E2B | 0.13 s | 0.19 s | 100 | 0 | measured |
| 2 | Daytona | 0.13 s | 0.30 s | 100 | 0 | measured |
| 3 | Freestyle | 0.16 s | 0.26 s | 100 | 0 | measured |
| 4 | Tenki | 0.18 s | 0.21 s | 100 | 0 | measured |
| 5 | Superserve | 0.19 s | 0.22 s | 100 | 0 | measured |
| 6 | boxd (machine differs) | 0.30 s | 0.31 s | 98 | 0 | measured |
| 7 | Upstash Ephemeral Box | 0.31 s | 0.38 s | 100 | 0 | measured |
| 8 | Upstash Box | 0.33 s | 0.41 s | 100 | 0 | measured |
| 9 | Boat | 0.34 s | 0.39 s | 100 | 0 | measured |

### Write + read 1 KB

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Superserve | 0.10 s | 0.11 s | 100 | 0 | measured |
| 2 | Daytona | 0.18 s | 0.52 s | 100 | 0 | measured |
| 3 | Freestyle | 0.21 s | 2.4 s | 100 | 0 | measured |
| 4 | E2B | 0.23 s | 0.38 s | 100 | 0 | measured |
| 5 | Tenki | 0.27 s | 0.34 s | 100 | 0 | measured |
| 6 | Upstash Ephemeral Box | 0.29 s | 0.32 s | 100 | 0 | measured |
| 7 | Upstash Box | 0.36 s | 0.71 s | 100 | 0 | measured |
| 8 | boxd (machine differs) | 0.51 s | 0.52 s | 99 | 0 | measured |
| 9 | Boat | 0.80 s | 0.97 s | 100 | 0 | measured |

### Write + read 10 MB

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Superserve | 0.66 s | 0.85 s | 100 | 0 | measured |
| 2 | Daytona | 1.0 s | 2.7 s | 100 | 0 | measured |
| 3 | E2B | 1.3 s | 2.3 s | 100 | 0 | measured |
| 4 | Upstash Ephemeral Box | 2.5 s | 3.6 s | 100 | 0 | measured |
| 5 | Upstash Box | 3.2 s | 11 s | 100 | 0 | measured |
| 6 | boxd (machine differs) | 3.4 s | 7.1 s | 97 | 2 | measured |
| 7 | Freestyle | 4.8 s | 19 s | 95 | 0 | measured |
| 8 | Boat | 7.5 s | 27 s | 100 | 0 | measured |
| 9 | Tenki | 7.7 s | 13 s | 100 | 0 | measured |

### Reconnect

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Daytona | 0.30 s | 0.71 s | 100 | 0 | measured |
| 2 | Superserve | 0.33 s | 0.39 s | 100 | 0 | measured |
| 3 | E2B | 0.46 s | 1.8 s | 100 | 0 | measured |
| 4 | Freestyle | 0.49 s | 0.79 s | 100 | 0 | measured |
| 5 | Upstash Ephemeral Box | 0.52 s | 0.60 s | 100 | 0 | measured |
| 6 | Upstash Box | 0.60 s | 0.81 s | 100 | 0 | measured |
| 7 | Tenki | 0.64 s | 0.73 s | 100 | 0 | measured |
| 8 | Boat | 0.69 s | 1.0 s | 100 | 0 | measured |
| 9 | boxd (machine differs) | 0.95 s | 0.99 s | 99 | 0 | measured |

### Destroy

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | E2B | 0.11 s | 0.15 s | 100 | 0 | measured |
| 2 | Tenki | 0.12 s | 0.16 s | 100 | 0 | measured |
| 3 | boxd (machine differs) | 0.16 s | 0.17 s | 100 | 0 | measured |
| 4 | Boat | 0.18 s | 0.22 s | 100 | 0 | measured |
| 5 | Superserve | 0.18 s | 0.42 s | 100 | 0 | measured |
| 6 | Freestyle | 0.19 s | 0.39 s | 100 | 0 | measured |
| 7 | Upstash Ephemeral Box | 0.27 s | 0.41 s | 100 | 0 | measured |
| 8 | Daytona | 0.85 s | 2.5 s | 100 | 0 | measured |
| 9 | Upstash Box | 1.0 s | 12 s | 100 | 0 | measured |

## Pause and snapshots

### Pause + resume

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | boxd (machine differs) | 0.53 s | 1.1 s | 100 | 1 | measured |
| 2 | Freestyle | 0.72 s | 2.6 s | 100 | 0 | measured |
| 3 | Superserve | 0.93 s | 1.3 s | 100 | 0 | measured |
| 4 | Upstash Box | 1.6 s | 12 s | 99 | 0 | measured |
| 5 | E2B | 1.8 s | 3.5 s | 100 | 0 | measured |
| 6 | Tenki | 64 s | 84 s | 77 | 0 | measured |
| - | Daytona | n/a | n/a | 0 | 0 | unsupported: Daytona's container sandboxes have no pause: stop and start restarts the sandbox and ends every running process. |
| - | Upstash Ephemeral Box | n/a | n/a | 0 | 0 | unsupported: Upstash Ephemeral Box has no pause and resume |
| - | Boat | n/a | n/a | 0 | 0 | unsupported: Boat has no pause: stop and start restarts the machine and ends every running process. |

### Take snapshot

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Superserve | 0.39 s | 0.41 s | 30 | 0 | measured |
| 2 | Freestyle | 0.43 s | 1.1 s | 30 | 0 | measured |
| 3 | E2B | 1.8 s | 2.2 s | 30 | 0 | measured |
| 4 | Upstash Ephemeral Box | 2.1 s | 2.1 s | 30 | 0 | measured |
| 5 | Upstash Box | 2.1 s | 8.4 s | 30 | 0 | measured |
| 6 | boxd (machine differs) | 3.8 s | 4.3 s | 30 | 0 | measured |
| 7 | Tenki | 6.9 s | 8.8 s | 30 | 0 | measured |
| 8 | Daytona | 7.4 s | 49 s | 30 | 0 | measured |
| - | Boat | n/a | n/a | 0 | 0 | unsupported |

### Start from snapshot

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Superserve | 0.55 s | 0.64 s | 30 | 0 | measured |
| 2 | Freestyle | 0.75 s | 1.1 s | 30 | 0 | measured |
| 3 | E2B | 1.1 s | 3.2 s | 30 | 0 | measured |
| 4 | Upstash Ephemeral Box | 1.1 s | 1.2 s | 30 | 0 | measured |
| 5 | boxd (machine differs) | 1.1 s | 1.2 s | 30 | 0 | measured |
| 6 | Tenki | 1.9 s | 2.9 s | 30 | 0 | measured |
| 7 | Daytona | 2.4 s | 4.6 s | 30 | 0 | measured |
| 8 | Upstash Box | 4.9 s | 13 s | 30 | 0 | measured |
| - | Boat | n/a | n/a | 0 | 0 | unsupported |

## Bursts

### 10 at once, all ready

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Superserve | 0.84 s | 1.6 s | 3 | 0 | measured |
| 2 | Upstash Ephemeral Box | 0.85 s | 1.1 s | 3 | 0 | measured |
| 3 | Freestyle | 1.1 s | 8.0 s | 3 | 0 | measured |
| 4 | Tenki | 1.2 s | 1.2 s | 3 | 0 | measured |
| 5 | Boat | 1.8 s | 1.9 s | 3 | 0 | measured |
| 6 | boxd (machine differs) | 2.5 s | 3.0 s | 3 | 0 | measured |
| 7 | Daytona | 2.9 s | 9.9 s | 3 | 0 | measured |
| 8 | Upstash Box | 3.0 s | 4.8 s | 3 | 0 | measured |
| - | E2B | n/a | n/a | 0 | 0 | stopped-early: in one of its three bursts of 10, two creates failed on E2B's side (E2B reported a timeout), so only 2 of 3 bursts finished and the size is not published; coming in the next update |

### 25 at once, all ready

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Superserve | 0.79 s | 1.0 s | 3 | 0 | measured |
| 2 | E2B | 1.1 s | 1.3 s | 3 | 0 | measured |
| 3 | Upstash Ephemeral Box | 1.1 s | 1.1 s | 3 | 0 | measured |
| 4 | Tenki | 1.2 s | 1.3 s | 3 | 0 | measured |
| 5 | Freestyle | 2.0 s | 4.8 s | 3 | 0 | measured |
| 6 | Boat | 2.9 s | 92 s | 3 | 0 | measured |
| 7 | Daytona | 5.3 s | 5.6 s | 3 | 0 | measured |
| 8 | Upstash Box | 5.4 s | 5.7 s | 3 | 0 | measured |
| 9 | boxd (machine differs) | 5.9 s | 7.7 s | 3 | 0 | measured |

## Machine speed

### CPU, one core

Median and p95, higher is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Tenki | 19.4M/s | 20.9M/s | 100 | 0 | measured |
| 2 | Boat | 19M/s | 21.5M/s | 100 | 0 | measured |
| 3 | Superserve | 18.6M/s | 19M/s | 100 | 0 | measured |
| 4 | Upstash Ephemeral Box | 13.7M/s | 13.8M/s | 100 | 0 | measured |
| 5 | Upstash Box | 13.7M/s | 13.8M/s | 100 | 0 | measured |
| 6 | boxd (machine differs) | 12.5M/s | 13M/s | 99 | 0 | measured |
| 7 | E2B | 10.3M/s | 15.3M/s | 100 | 0 | measured |
| 8 | Freestyle | 9.7M/s | 10.4M/s | 100 | 0 | measured |
| 9 | Daytona | 9.2M/s | 10.1M/s | 100 | 0 | measured |

### CPU, all cores

Median and p95, higher is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Upstash Ephemeral Box | 51M/s | 52M/s | 100 | 0 | measured |
| 2 | Boat | 50.2M/s | 70.5M/s | 100 | 0 | measured |
| 3 | Upstash Box | 48.2M/s | 50.5M/s | 100 | 0 | measured |
| 4 | Superserve | 43.6M/s | 59.8M/s | 100 | 0 | measured |
| 5 | Tenki | 36.6M/s | 50.3M/s | 100 | 0 | measured |
| 6 | boxd (machine differs) | 29.2M/s | 31.6M/s | 99 | 0 | measured |
| 7 | Freestyle | 27.7M/s | 30.6M/s | 100 | 0 | measured |
| 8 | E2B | 26.5M/s | 37.8M/s | 100 | 0 | measured |
| 9 | Daytona | 25.9M/s | 28.5M/s | 100 | 0 | measured |

### Memory bandwidth

Median and p95, higher is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Tenki | 45.9 GB/s | 51.7 GB/s | 100 | 0 | measured |
| 2 | Upstash Ephemeral Box | 42.0 GB/s | 44.1 GB/s | 100 | 0 | measured |
| 3 | Upstash Box | 33.8 GB/s | 40.4 GB/s | 100 | 0 | measured |
| 4 | Boat | 31.6 GB/s | 47.7 GB/s | 100 | 0 | measured |
| 5 | Daytona | 29.9 GB/s | 33.2 GB/s | 100 | 0 | measured |
| 6 | boxd (machine differs) | 23.2 GB/s | 25.2 GB/s | 99 | 0 | measured |
| 7 | Superserve | 16.5 GB/s | 17.2 GB/s | 100 | 0 | measured |
| 8 | Freestyle | 14.7 GB/s | 20.5 GB/s | 100 | 0 | measured |
| 9 | E2B | 12.3 GB/s | 14.0 GB/s | 100 | 0 | measured |

### Disk write

Median and p95, higher is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Upstash Ephemeral Box | 2.4 GB/s | 2.9 GB/s | 100 | 0 | measured |
| 2 | Upstash Box | 1.6 GB/s | 2.2 GB/s | 100 | 0 | measured |
| 3 | Daytona | 1.4 GB/s | 2.9 GB/s | 100 | 0 | measured |
| 4 | E2B | 867 MB/s | 1.0 GB/s | 100 | 0 | measured |
| 5 | boxd (machine differs) | 744 MB/s | 823 MB/s | 99 | 0 | measured |
| 6 | Tenki | 444 MB/s | 599 MB/s | 100 | 0 | measured |
| 7 | Boat | 423 MB/s | 910 MB/s | 100 | 0 | measured |
| 8 | Freestyle | 198 MB/s | 249 MB/s | 100 | 0 | measured |
| 9 | Superserve | 157 MB/s | 855 MB/s | 100 | 0 | measured |

### Disk read

Median and p95, higher is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Upstash Ephemeral Box | 23.1 GB/s | 23.9 GB/s | 100 | 0 | measured |
| 2 | Upstash Box | 20.3 GB/s | 22.8 GB/s | 100 | 0 | measured |
| 3 | Boat | 19.3 GB/s | 27.7 GB/s | 100 | 0 | measured |
| 4 | Daytona | 17.3 GB/s | 18.9 GB/s | 100 | 0 | measured |
| 5 | Tenki | 12.1 GB/s | 20.5 GB/s | 100 | 0 | measured |
| 6 | boxd (machine differs) | 11.6 GB/s | 15.0 GB/s | 99 | 0 | measured |
| 7 | Freestyle | 7.0 GB/s | 8.8 GB/s | 100 | 0 | measured |
| 8 | E2B | 6.2 GB/s | 7.5 GB/s | 100 | 0 | measured |
| 9 | Superserve | 4.8 GB/s | 8.0 GB/s | 100 | 0 | measured |

### 4K random write

Median and p95, higher is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Upstash Ephemeral Box | 45.1K IOPS | 46.9K IOPS | 100 | 0 | measured |
| 2 | Daytona | 20.9K IOPS | 30K IOPS | 100 | 0 | measured |
| 3 | Superserve | 17K IOPS | 33.3K IOPS | 100 | 0 | measured |
| 4 | boxd (machine differs) | 8K IOPS | 12.8K IOPS | 99 | 0 | measured |
| 5 | E2B | 6.9K IOPS | 8.9K IOPS | 100 | 0 | measured |
| 6 | Freestyle | 6.1K IOPS | 8.1K IOPS | 100 | 0 | measured |
| 7 | Boat | 5.7K IOPS | 9.4K IOPS | 100 | 0 | measured |
| 8 | Tenki | 370.6 IOPS | 443.7 IOPS | 100 | 0 | measured |
| 9 | Upstash Box | 340.4 IOPS | 547.4 IOPS | 100 | 0 | measured |

### 4K random read

Median and p95, higher is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Boat | 796.4K IOPS | 1M IOPS | 100 | 0 | measured |
| 2 | Superserve | 604.3K IOPS | 719.2K IOPS | 100 | 0 | measured |
| 3 | Upstash Ephemeral Box | 546.1K IOPS | 581.6K IOPS | 100 | 0 | measured |
| 4 | Upstash Box | 501.9K IOPS | 527.2K IOPS | 100 | 0 | measured |
| 5 | E2B | 453K IOPS | 601.5K IOPS | 100 | 0 | measured |
| 6 | boxd (machine differs) | 438.9K IOPS | 465.8K IOPS | 99 | 0 | measured |
| 7 | Daytona | 343K IOPS | 403.6K IOPS | 100 | 0 | measured |
| 8 | Freestyle | 258.8K IOPS | 338.1K IOPS | 100 | 0 | measured |
| 9 | Tenki | 221K IOPS | 617K IOPS | 100 | 0 | measured |

## What failed

- E2B: no failures counted against the provider.
- Freestyle: Preview HTTP 502, no first byte: 1 runs, 1 failed tests (provider-operation; Preview URL first byte). Set aside, not counted: Our SDK timed out or wrapped the error moving 10 MB, so we can't tell whose side failed (5 runs, 5 failed tests).
- Tenki: no failures counted against the provider.
- boxd: boxd request failed. (provider): 2 runs, 2 failed tests (provider-operation; Write + read 10 MB); boxd request failed. (invalid_argument): 1 runs, 1 failed tests (provider-operation; Pause + resume).
- Superserve: no failures counted against the provider.
- Upstash Box: no failures counted against the provider.
- Daytona: no failures counted against the provider.
- Upstash Ephemeral Box: no failures counted against the provider. Set aside, not counted: Our own scenario deadline ran out; not counted (3 runs, 3 failed tests).
- Boat: no failures counted against the provider. Set aside, not counted: Our own scenario deadline ran out; not counted (1 runs, 1 failed tests).

# Track: Default machines

Each provider's default sandbox, so machine sizes differ.

Run m: 2026-10-22 to 2026-10-23.

## Quick picks

| Need | Pick | Runner-up |
| --- | --- | --- |
| Fastest cold start | E2B 0.50 s | Superserve 0.53 s |
| Fastest agent work (tool replay) | Superserve 13 s | Daytona 15 s |
| Fastest 25-sandbox fan-out | Superserve 0.75 s | E2B 0.87 s |
| Fastest reconnect | Daytona 0.31 s | Superserve 0.32 s |
| Cheapest task | Upstash Ephemeral Box $0.00013 per task, $0.13 per 1,000 (billed) | Upstash Box $0.00017 per task, $0.17 per 1,000 (billed) |
| Most reliable | E2B, Tenki, Superserve, Upstash Box, Daytona, Boat 100.00% (tied) | boxd 99.81% |

## Machines and cost

| Provider | Asked for | Measured inside | 4 vCPU, 8 GB? | Ran in | Cost per task | Per 1,000 tasks | Cost kind | Price per hour | Success rate |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| E2B | 2 vCPU, 512 MB, template base | 2 vCPU, 473 MB | no | The Dalles, US | $0.00049 | $0.49 | metered | $0.109 | 100.00% |
| Freestyle | 4 vCPU, 8 GB | 4 vCPU, 7.8 GB | yes | not reported | $0.0018 | $1.78 | estimate | $0.264 | 99.81% |
| Tenki | provider default | 2 vCPU, 3.8 GB | no | not reported | $0.00086 | $0.86 | estimate | $0.162 | 100.00% |
| boxd | 2 vCPU, 8 GB | 2 vCPU, 7.8 GB | no | Frankfurt am Main, DE | $0.0010 | $1.03 | metered | $0.195 (EUR 0.174) | 99.81% |
| Superserve | 1 vCPU, 1 GB, template sandbox-bench-node22-py311-1x1-pinned | 1 vCPU, 994 MB | no | Washington, US | $0.00027 | $0.27 | billed | $0.067 | 100.00% |
| Upstash Box | 2 vCPU, 4 GB | 2 vCPU, 4 GB | no | Ashburn, US | $0.00017 | $0.17 | billed | $0.1 | 100.00% |
| Daytona | 1 vCPU, 1 GB | 1 vCPU, 1 GB | no | not reported | $0.00064 | $0.64 | billed | $0.067 | 100.00% |
| Upstash Ephemeral Box | 2 vCPU, 4 GB | 2 vCPU, 4 GB | no | Ashburn, US | $0.00013 | $0.13 | billed | n/a | 99.07% |
| Boat | 4 vCPU, 8 GB | 4 vCPU, 7.8 GB | yes | Lille, FR | $0.00049 | $0.49 | estimate | $0.036 | 100.00% |

Machine note on 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.

Machine note on Tenki: Tenki documents a 5 GiB default disk but not a default vCPU or RAM, so those are what we measured.

Machine note on Superserve: 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.

Cost on E2B: Metered over 10 tasks, medium confidence.
Cost on Freestyle: Estimate over 10 tasks, low confidence.
Cost on Tenki: Estimate over 10 tasks, low confidence.
Cost on boxd: Metered over 10 tasks, medium confidence.
Cost on Superserve: Billed over 10 tasks, high confidence.
Cost on Upstash Box: Billed over 10 tasks, high confidence.
Cost on Daytona: Billed over 10 tasks, low confidence.
Cost on Upstash Ephemeral Box: Billed over 10 tasks, high confidence.
Cost on Boat: Estimate over 10 tasks, low confidence.

## Start-up

### Cold start

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | E2B | 0.50 s | 2.0 s | 100 | 0 | measured |
| 2 | Superserve | 0.53 s | 0.63 s | 100 | 0 | measured |
| 3 | Upstash Ephemeral Box | 0.68 s | 0.81 s | 100 | 0 | measured |
| 4 | Freestyle | 0.72 s | 3.0 s | 100 | 0 | measured |
| 5 | Tenki | 0.86 s | 3.1 s | 100 | 0 | measured |
| 6 | boxd | 1.1 s | 1.2 s | 100 | 0 | measured |
| 7 | Boat | 1.2 s | 1.4 s | 100 | 0 | measured |
| 8 | Daytona | 1.5 s | 2.8 s | 100 | 0 | measured |
| 9 | Upstash Box | 2.6 s | 13 s | 100 | 0 | measured |

## Agent work

### Agent tool replay

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Superserve | 13 s | 14 s | 30 | 0 | measured |
| 2 | Daytona | 15 s | 34 s | 30 | 0 | measured |
| 3 | E2B | 16 s | 18 s | 30 | 0 | measured |
| 4 | Tenki | 18 s | 24 s | 30 | 0 | measured |
| 5 | Upstash Ephemeral Box | 23 s | 24 s | 30 | 2 | measured |
| 6 | Freestyle | 26 s | 44 s | 30 | 0 | measured |
| 7 | Upstash Box | 27 s | 31 s | 30 | 0 | measured |
| 8 | boxd | 33 s | 40 s | 30 | 0 | measured |
| 9 | Boat | 43 s | 51 s | 30 | 0 | measured |

### npm install

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Boat | 0.86 s | 4.2 s | 30 | 0 | measured |
| 2 | Upstash Ephemeral Box | 1.0 s | 1.1 s | 29 | 0 | measured |
| 3 | Upstash Box | 1.1 s | 1.2 s | 30 | 0 | measured |
| 4 | Daytona | 1.2 s | 1.4 s | 30 | 0 | measured |
| 5 | Tenki | 1.4 s | 2.1 s | 30 | 0 | measured |
| 6 | Superserve | 1.4 s | 2.0 s | 30 | 0 | measured |
| 7 | boxd | 1.4 s | 1.8 s | 30 | 0 | measured |
| 8 | Freestyle | 1.6 s | 3.3 s | 30 | 0 | measured |
| 9 | E2B | 2.1 s | 2.8 s | 30 | 0 | measured |

### pip install

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Superserve | 3.8 s | 4.6 s | 30 | 0 | measured |
| 2 | Boat | 4.0 s | 6.4 s | 30 | 0 | measured |
| 3 | Upstash Box | 4.1 s | 5.0 s | 30 | 0 | measured |
| 4 | Tenki | 4.3 s | 4.9 s | 30 | 0 | measured |
| 5 | Upstash Ephemeral Box | 4.3 s | 5.4 s | 29 | 0 | measured |
| 6 | boxd | 4.5 s | 5.2 s | 30 | 0 | measured |
| 7 | Daytona | 4.6 s | 6.2 s | 30 | 0 | measured |
| 8 | E2B | 5.0 s | 6.0 s | 30 | 0 | measured |
| 9 | Freestyle | 7.5 s | 14 s | 30 | 0 | measured |

### git clone

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Upstash Ephemeral Box | 0.61 s | 0.67 s | 29 | 0 | measured |
| 2 | Daytona | 0.62 s | 0.97 s | 30 | 0 | measured |
| 3 | Upstash Box | 0.70 s | 1.3 s | 30 | 0 | measured |
| 4 | Superserve | 1.1 s | 1.9 s | 30 | 0 | measured |
| 5 | E2B | 1.2 s | 2.6 s | 30 | 0 | measured |
| 6 | Tenki | 1.2 s | 2.3 s | 30 | 0 | measured |
| 7 | Freestyle | 1.5 s | 2.8 s | 30 | 0 | measured |
| 8 | boxd | 1.5 s | 2.0 s | 30 | 0 | measured |
| 9 | Boat | 2.1 s | 4.3 s | 30 | 0 | measured |

### Dev server ready

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Superserve | 1.8 s | 2.0 s | 30 | 0 | measured |
| 2 | Tenki | 1.9 s | 3.2 s | 30 | 0 | measured |
| 3 | Freestyle | 2.2 s | 5.0 s | 30 | 0 | measured |
| 4 | E2B | 2.3 s | 3.3 s | 30 | 0 | measured |
| 5 | Daytona | 2.8 s | 6.8 s | 30 | 0 | measured |
| 6 | Upstash Ephemeral Box | 3.2 s | 3.5 s | 29 | 1 | measured |
| 7 | Upstash Box | 3.8 s | 4.8 s | 30 | 0 | measured |
| 8 | boxd | 4.0 s | 5.0 s | 30 | 0 | measured |
| 9 | Boat | 4.1 s | 5.4 s | 30 | 0 | measured |

### Preview URL first byte

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Superserve | 0.19 s | 0.25 s | 30 | 0 | measured |
| 2 | E2B | 0.27 s | 0.53 s | 30 | 0 | measured |
| 3 | Daytona | 0.28 s | 0.46 s | 30 | 0 | measured |
| 4 | Upstash Ephemeral Box | 0.29 s | 0.39 s | 28 | 0 | measured |
| 5 | Upstash Box | 0.30 s | 0.43 s | 30 | 0 | measured |
| 6 | Tenki | 0.40 s | 1.5 s | 30 | 0 | measured |
| 7 | Freestyle | 0.48 s | 1.7 s | 30 | 1 | measured |
| 8 | Boat | 0.85 s | 1.2 s | 30 | 0 | measured |
| 9 | boxd | 0.91 s | 1.5 s | 30 | 0 | measured |

### Edit, rebuild, reload

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Freestyle | 0.31 s | 3.8 s | 30 | 0 | measured |
| 2 | E2B | 0.34 s | 0.59 s | 30 | 0 | measured |
| 3 | Daytona | 0.34 s | 0.96 s | 30 | 0 | measured |
| 4 | Upstash Ephemeral Box | 0.36 s | 0.40 s | 28 | 0 | measured |
| 5 | Upstash Box | 0.43 s | 1.1 s | 30 | 0 | measured |
| 6 | Superserve | 0.46 s | 0.78 s | 30 | 0 | measured |
| 7 | Tenki | 0.52 s | 1.7 s | 30 | 0 | measured |
| 8 | boxd | 1.1 s | 2.3 s | 30 | 0 | measured |
| 9 | Boat | 1.1 s | 1.5 s | 30 | 0 | measured |

## Everyday calls

### Run a command

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | E2B | 0.14 s | 0.15 s | 100 | 0 | measured |
| 2 | Daytona | 0.14 s | 0.31 s | 100 | 0 | measured |
| 3 | Freestyle | 0.16 s | 0.26 s | 100 | 0 | measured |
| 4 | Tenki | 0.17 s | 0.20 s | 100 | 0 | measured |
| 5 | Superserve | 0.19 s | 0.23 s | 100 | 0 | measured |
| 6 | boxd | 0.30 s | 0.31 s | 100 | 0 | measured |
| 7 | Upstash Ephemeral Box | 0.31 s | 0.39 s | 100 | 2 | measured |
| 8 | Upstash Box | 0.32 s | 0.41 s | 100 | 0 | measured |
| 9 | Boat | 0.33 s | 0.45 s | 100 | 0 | measured |

### Write + read 1 KB

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Superserve | 0.10 s | 0.11 s | 100 | 0 | measured |
| 2 | Daytona | 0.18 s | 0.53 s | 100 | 0 | measured |
| 3 | Freestyle | 0.21 s | 0.55 s | 100 | 0 | measured |
| 4 | Tenki | 0.21 s | 0.32 s | 100 | 0 | measured |
| 5 | E2B | 0.24 s | 0.26 s | 100 | 0 | measured |
| 6 | Upstash Ephemeral Box | 0.30 s | 0.33 s | 99 | 1 | measured |
| 7 | Upstash Box | 0.36 s | 1.1 s | 100 | 0 | measured |
| 8 | boxd | 0.50 s | 0.51 s | 100 | 0 | measured |
| 9 | Boat | 0.80 s | 1.0 s | 100 | 0 | measured |

### Write + read 10 MB

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Superserve | 0.64 s | 0.89 s | 100 | 0 | measured |
| 2 | Daytona | 1.2 s | 2.5 s | 100 | 0 | measured |
| 3 | E2B | 1.3 s | 2.4 s | 100 | 0 | measured |
| 4 | Upstash Ephemeral Box | 2.6 s | 11 s | 99 | 1 | measured |
| 5 | Freestyle | 2.9 s | 11 s | 98 | 1 | measured |
| 6 | Upstash Box | 2.9 s | 7.5 s | 100 | 0 | measured |
| 7 | boxd | 3.5 s | 7.3 s | 100 | 2 | measured |
| 8 | Tenki | 3.6 s | 9.2 s | 100 | 0 | measured |
| 9 | Boat | 7.4 s | 20 s | 100 | 0 | measured |

### Reconnect

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Daytona | 0.31 s | 0.77 s | 100 | 0 | measured |
| 2 | Superserve | 0.32 s | 0.37 s | 100 | 0 | measured |
| 3 | E2B | 0.46 s | 0.68 s | 100 | 0 | measured |
| 4 | Freestyle | 0.50 s | 0.83 s | 100 | 0 | measured |
| 5 | Upstash Ephemeral Box | 0.53 s | 0.60 s | 100 | 1 | measured |
| 6 | Upstash Box | 0.60 s | 0.76 s | 100 | 0 | measured |
| 7 | Tenki | 0.67 s | 2.9 s | 100 | 0 | measured |
| 8 | Boat | 0.68 s | 0.93 s | 100 | 0 | measured |
| 9 | boxd | 0.94 s | 0.99 s | 100 | 0 | measured |

### Destroy

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | E2B | 0.11 s | 0.12 s | 100 | 0 | measured |
| 2 | Tenki | 0.14 s | 0.21 s | 100 | 0 | measured |
| 3 | boxd | 0.16 s | 0.17 s | 100 | 0 | measured |
| 4 | Superserve | 0.18 s | 0.30 s | 100 | 0 | measured |
| 5 | Boat | 0.18 s | 0.24 s | 100 | 0 | measured |
| 6 | Freestyle | 0.19 s | 0.46 s | 100 | 0 | measured |
| 7 | Upstash Ephemeral Box | 0.28 s | 0.42 s | 100 | 0 | measured |
| 8 | Daytona | 0.96 s | 3.2 s | 100 | 0 | measured |
| 9 | Upstash Box | 0.96 s | 7.8 s | 100 | 0 | measured |

## Pause and snapshots

### Pause + resume

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | boxd | 0.54 s | 3.2 s | 100 | 0 | measured |
| 2 | Freestyle | 0.64 s | 2.8 s | 100 | 0 | measured |
| 3 | E2B | 0.74 s | 3.6 s | 100 | 0 | measured |
| 4 | Superserve | 0.92 s | 3.7 s | 100 | 0 | measured |
| 5 | Upstash Box | 1.7 s | 13 s | 100 | 0 | measured |
| 6 | Tenki | 58 s | 82 s | 100 | 0 | measured |
| - | Daytona | n/a | n/a | 0 | 0 | unsupported: Daytona's container sandboxes have no pause: stop and start restarts the sandbox and ends every running process. |
| - | Upstash Ephemeral Box | n/a | n/a | 0 | 0 | unsupported: Upstash Ephemeral Box has no pause and resume |
| - | Boat | n/a | n/a | 0 | 0 | unsupported: Boat has no pause: stop and start restarts the machine and ends every running process. |

### Take snapshot

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | E2B | 0.34 s | 0.67 s | 30 | 0 | measured |
| 2 | Superserve | 0.36 s | 0.40 s | 30 | 0 | measured |
| 3 | Freestyle | 0.39 s | 1.3 s | 30 | 0 | measured |
| 4 | Upstash Ephemeral Box | 2.1 s | 2.1 s | 30 | 0 | measured |
| 5 | Upstash Box | 2.1 s | 17 s | 30 | 0 | measured |
| 6 | boxd | 3.1 s | 3.1 s | 30 | 0 | measured |
| 7 | Tenki | 6.7 s | 7.0 s | 30 | 0 | measured |
| 8 | Daytona | 10 s | 336 s | 30 | 0 | measured |
| - | Boat | n/a | n/a | 0 | 0 | unsupported |

### Start from snapshot

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Superserve | 0.56 s | 0.68 s | 30 | 0 | measured |
| 2 | Freestyle | 0.73 s | 18 s | 30 | 0 | measured |
| 3 | E2B | 0.75 s | 1.2 s | 30 | 0 | measured |
| 4 | Upstash Ephemeral Box | 1.1 s | 1.3 s | 30 | 0 | measured |
| 5 | boxd | 1.1 s | 1.3 s | 30 | 0 | measured |
| 6 | Tenki | 1.8 s | 2.5 s | 30 | 0 | measured |
| 7 | Daytona | 2.6 s | 6.8 s | 30 | 0 | measured |
| 8 | Upstash Box | 4.8 s | 15 s | 30 | 0 | measured |
| - | Boat | n/a | n/a | 0 | 0 | unsupported |

## Bursts

### 10 at once, all ready

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Superserve | 0.65 s | 0.75 s | 3 | 0 | measured |
| 2 | Upstash Ephemeral Box | 0.75 s | 1.1 s | 3 | 0 | measured |
| 3 | Tenki | 1.0 s | 1.5 s | 3 | 0 | measured |
| 4 | E2B | 1.1 s | 1.1 s | 3 | 0 | measured |
| 5 | Freestyle | 1.9 s | 2.6 s | 3 | 0 | measured |
| 6 | Daytona | 2.0 s | 2.8 s | 3 | 0 | measured |
| 7 | Boat | 2.3 s | 2.4 s | 3 | 0 | measured |
| 8 | boxd | 2.5 s | 2.6 s | 3 | 0 | measured |
| 9 | Upstash Box | 5.0 s | 6.8 s | 3 | 0 | measured |

### 25 at once, all ready

Median and p95, lower is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Superserve | 0.75 s | 1.6 s | 3 | 0 | measured |
| 2 | E2B | 0.87 s | 1.2 s | 3 | 0 | measured |
| 3 | Upstash Ephemeral Box | 1.0 s | 1.1 s | 3 | 0 | measured |
| 4 | Tenki | 1.3 s | 1.9 s | 3 | 0 | measured |
| 5 | Boat | 4.0 s | 4.6 s | 3 | 0 | measured |
| 6 | Freestyle | 4.6 s | 9.7 s | 3 | 0 | measured |
| 7 | boxd | 6.0 s | 6.3 s | 3 | 0 | measured |
| 8 | Upstash Box | 15 s | 17 s | 3 | 0 | measured |
| - | Daytona | n/a | n/a | 0 | 0 | stopped-early: in one of its three bursts of 25, one create timed out on Daytona's side (24 of 25 ready), so only 2 of 3 bursts finished and the size is not published; coming in the next update |

## Machine speed

### CPU, one core

Median and p95, higher is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Boat | 18.8M/s | 21.7M/s | 100 | 0 | measured |
| 2 | Tenki | 18.6M/s | 21.4M/s | 100 | 0 | measured |
| 3 | Superserve | 18.5M/s | 18.8M/s | 100 | 0 | measured |
| 4 | Upstash Box | 13.7M/s | 13.8M/s | 100 | 0 | measured |
| 5 | Upstash Ephemeral Box | 13.7M/s | 13.8M/s | 100 | 1 | measured |
| 6 | boxd | 12.5M/s | 12.9M/s | 100 | 0 | measured |
| 7 | E2B | 10M/s | 15.3M/s | 100 | 0 | measured |
| 8 | Freestyle | 9.6M/s | 10.4M/s | 100 | 0 | measured |
| 9 | Daytona | 9.1M/s | 13.7M/s | 100 | 0 | measured |

### CPU, all cores

Median and p95, higher is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Boat | 51.7M/s | 71.5M/s | 100 | 0 | measured |
| 2 | Freestyle | 26.1M/s | 30.8M/s | 100 | 0 | measured |
| 3 | Upstash Ephemeral Box | 26M/s | 26.5M/s | 100 | 1 | measured |
| 4 | Upstash Box | 25M/s | 25.8M/s | 100 | 0 | measured |
| 5 | Tenki | 20.9M/s | 31.8M/s | 100 | 0 | measured |
| 6 | boxd | 15.7M/s | 19.2M/s | 100 | 0 | measured |
| 7 | E2B | 14.1M/s | 20.2M/s | 100 | 0 | measured |
| 8 | Superserve | 12.2M/s | 16.7M/s | 100 | 0 | measured |
| 9 | Daytona | 6.9M/s | 10.3M/s | 100 | 0 | measured |

### Memory bandwidth

Median and p95, higher is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Upstash Ephemeral Box | 41.1 GB/s | 44.1 GB/s | 100 | 1 | measured |
| 2 | Tenki | 38.9 GB/s | 52.1 GB/s | 100 | 0 | measured |
| 3 | Upstash Box | 35.3 GB/s | 40.1 GB/s | 100 | 0 | measured |
| 4 | Boat | 32.1 GB/s | 48.2 GB/s | 100 | 0 | measured |
| 5 | Daytona | 31.0 GB/s | 57.0 GB/s | 100 | 0 | measured |
| 6 | boxd | 22.4 GB/s | 24.7 GB/s | 100 | 0 | measured |
| 7 | Superserve | 16.1 GB/s | 17.0 GB/s | 100 | 0 | measured |
| 8 | Freestyle | 14.4 GB/s | 20.5 GB/s | 100 | 0 | measured |
| 9 | E2B | 12.3 GB/s | 14.2 GB/s | 100 | 0 | measured |

### Disk write

Median and p95, higher is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Upstash Ephemeral Box | 2.4 GB/s | 2.9 GB/s | 100 | 1 | measured |
| 2 | Upstash Box | 1.7 GB/s | 2.2 GB/s | 100 | 0 | measured |
| 3 | Daytona | 1.2 GB/s | 2.9 GB/s | 100 | 0 | measured |
| 4 | E2B | 949 MB/s | 1.1 GB/s | 100 | 0 | measured |
| 5 | boxd | 747 MB/s | 835 MB/s | 100 | 0 | measured |
| 6 | Boat | 482 MB/s | 787 MB/s | 100 | 0 | measured |
| 7 | Tenki | 415 MB/s | 578 MB/s | 100 | 0 | measured |
| 8 | Freestyle | 203 MB/s | 244 MB/s | 100 | 0 | measured |
| 9 | Superserve | 155 MB/s | 720 MB/s | 100 | 0 | measured |

### Disk read

Median and p95, higher is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Upstash Ephemeral Box | 23.0 GB/s | 24.0 GB/s | 100 | 1 | measured |
| 2 | Upstash Box | 20.8 GB/s | 22.8 GB/s | 100 | 0 | measured |
| 3 | Boat | 20.5 GB/s | 28.9 GB/s | 100 | 0 | measured |
| 4 | Daytona | 16.2 GB/s | 28.8 GB/s | 100 | 0 | measured |
| 5 | boxd | 11.2 GB/s | 13.2 GB/s | 100 | 0 | measured |
| 6 | Tenki | 10.6 GB/s | 21.6 GB/s | 100 | 0 | measured |
| 7 | Freestyle | 6.5 GB/s | 8.7 GB/s | 100 | 0 | measured |
| 8 | E2B | 6.2 GB/s | 7.6 GB/s | 100 | 0 | measured |
| 9 | Superserve | 4.0 GB/s | 8.1 GB/s | 100 | 0 | measured |

### 4K random write

Median and p95, higher is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Upstash Ephemeral Box | 43.3K IOPS | 46.5K IOPS | 100 | 1 | measured |
| 2 | Daytona | 20.2K IOPS | 29.6K IOPS | 100 | 0 | measured |
| 3 | Superserve | 17.8K IOPS | 31.7K IOPS | 100 | 0 | measured |
| 4 | boxd | 8.8K IOPS | 14.1K IOPS | 100 | 0 | measured |
| 5 | E2B | 7.2K IOPS | 8.8K IOPS | 100 | 0 | measured |
| 6 | Freestyle | 5.6K IOPS | 7.9K IOPS | 100 | 0 | measured |
| 7 | Boat | 5.3K IOPS | 9.3K IOPS | 100 | 0 | measured |
| 8 | Upstash Box | 439.1 IOPS | 556.2 IOPS | 100 | 0 | measured |
| 9 | Tenki | 361.3 IOPS | 433.3 IOPS | 100 | 0 | measured |

### 4K random read

Median and p95, higher is better. Each cell carries its unit.

| Rank | Provider | Median | p95 | Attempts | Failed | Status |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | Boat | 772.6K IOPS | 1.1M IOPS | 100 | 0 | measured |
| 2 | Superserve | 641.4K IOPS | 748.1K IOPS | 100 | 0 | measured |
| 3 | Upstash Ephemeral Box | 543.8K IOPS | 577.6K IOPS | 100 | 1 | measured |
| 4 | Upstash Box | 505.2K IOPS | 527.3K IOPS | 100 | 0 | measured |
| 5 | E2B | 467K IOPS | 643K IOPS | 100 | 0 | measured |
| 6 | boxd | 415.6K IOPS | 458.2K IOPS | 100 | 0 | measured |
| 7 | Daytona | 342.4K IOPS | 774.7K IOPS | 100 | 0 | measured |
| 8 | Freestyle | 267K IOPS | 335.7K IOPS | 100 | 0 | measured |
| 9 | Tenki | 223.5K IOPS | 623.4K IOPS | 100 | 0 | measured |

## What failed

- E2B: no failures counted against the provider.
- Freestyle: Preview HTTP 502, no first byte: 1 runs, 1 failed tests (provider-operation; Preview URL first byte); Native operation timed out. (timeout): 1 runs, 1 failed tests (provider-operation; Write + read 10 MB). Set aside, not counted: Our SDK timed out or wrapped the error moving 10 MB, so we can't tell whose side failed (2 runs, 2 failed tests).
- Tenki: [internal] internal server error: 2 runs, 2 failed tests (provider-operation; snapshot-cleanup).
- boxd: boxd request failed. (provider): 2 runs, 2 failed tests (provider-operation; Write + read 10 MB).
- Superserve: no failures counted against the provider.
- Upstash Box: no failures counted against the provider.
- Daytona: no failures counted against the provider.
- Upstash Ephemeral Box: Upstash Box exec failed (provider). (provider): 2 runs, 12 failed tests (provider-operation; Run a command, Agent tool replay, perf, CPU, one core, CPU, all cores, Memory bandwidth, Disk write, Disk read, 4K random write, 4K random read, TCP connect); Upstash Box files.write failed (unavailable, HTTP 500). (unavailable, HTTP 500, operation=files.write): 1 runs, 4 failed tests (provider-operation; Dev server ready, Write + read 1 KB, Agent tool replay, Write + read 10 MB); Upstash Box connect failed (unavailable, HTTP 500). (unavailable, HTTP 500, operation=connect): 1 runs, 1 failed tests (provider-operation; Reconnect).
- Boat: no failures counted against the provider.

