Sandbox bench

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

Where the time goes

Step by step, from median timings. Colour is the provider's time; grey is ours.

TraceCold start · every provider, median of each step
Fastest
497ms
Superserve · provider time
Slowest
3.08s
Upstash Box · provider time
Spread
6.2×
slowest vs fastest
Failures
0
of 700 attempts
Provider
0s5s10s
create()First commandOurs: Sandbox SDKRanked by provider time · pick a provider for its full trace
TraceCold start · every provider, median of each step
Fastest
647ms
Freestyle · provider time
Slowest
2.59s
Upstash Box · provider time
Spread
4.0×
slowest vs fastest
Failures
1
of 578 attempts
Provider
0s5s10s
create()First commandOurs: Sandbox SDKRanked by provider time · pick a provider for its full trace

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

  • 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

  • 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 the same agent task cost on each provider, and what each charges per hour.

Cost per 1,000 tasks

One task = create a sandbox, run 100 tool calls, delete it · US dollars · Lower is better

Not from a bill yet. E2B, Tenki and boxd: their own usage records at published rates; Superserve and Freestyle: our measured time at list price.

Notes (3)
  • Each task ran in its own sandbox, up to 10 per provider, in a separate cost run. The bar is the median.
  • Usage charges only: credits, tax and plan minimums 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.

Agent work vs cost

Time for 100 tool calls against cost per 1,000 tasks · Lower left is faster and cheaper

Faster and cheaper than the median
Cost per 1,000 tasks (USD)

Median time for 100 tool calls, seconds (log scale)

Not from a bill yet. E2B, Tenki and boxd: their own usage records at published rates; Superserve and Freestyle: our measured time at list price.

Notes (3)
  • Time is the median from the main tests. Cost is from the separate cost run. Hover or focus a dot for its numbers.
  • 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

One task = create a sandbox, run 100 tool calls, delete it · US dollars · Lower is better

Not from a bill yet. E2B, Tenki and boxd: their own usage records at published rates; Freestyle: our measured time at list price.

Notes (5)
  • 1boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
  • Each task ran in its own sandbox, up to 10 per provider, in a separate cost run. The bar is the median.
  • Usage charges only: credits, tax and plan minimums 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.

Agent work vs cost

Time for 100 tool calls against cost per 1,000 tasks · Lower left is faster and cheaper

Faster and cheaper than the median
Cost per 1,000 tasks (USD)

Median time for 100 tool calls, seconds (log scale)

Not from a bill yet. E2B, Tenki and boxd: their own usage records at published rates; Freestyle: our measured time at list price.

Notes (5)
  • Time is the median from the main tests. Cost is from the separate cost run. Hover or focus a dot for its numbers.
  • boxd: ran 4 vCPU, 16 GB, not 4 vCPU, 8 GB. boxd has no 8 GB size at 4 vCPU; this is its nearest.
  • 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.

  • Our SDKEvery provider ran through Sandbox SDK, which we make; version 0.2.0 is public on npm.
    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.
  • One locationEvery test ran 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.
  • Two tracksDefault machines compares each provider's default sandbox; Same machine asks every provider for 4 vCPU and 8 GB.
    Default sizes differ: E2B's default template is 2 vCPU and 512 MB, though its pricing page says 4 GB. boxd has no 4 vCPU, 8 GB size and ran 4 vCPU, 16 GB. Superserve is left out of Same machine because its account caps templates at 2 vCPU. Every chart marks a machine that differs from its track.
  • Cold startTimed from create() until a first command runs; our SDK's own setup is timed separately.
    The command is a bare true. Setup after that point is shown as Ready through Sandbox SDK and is never part of cold start or bursts.
  • Runs100 runs per quick test, 30 per agent or snapshot test, and medians inside each other's 95% intervals count as tied.
    Bursts run 3 times per size, each timed until every sandbox in it runs a command, and a size is published only when all three finished. Tenki's Same machine run stopped at 78 of 100 cold starts; each chart shows its attempt count. Default timings come from one run; snapshots, bursts, Same machine and cost come from a later run whose code changes touched only cleanup. Download speed is left out because the test host rate-limited several providers. Boat joins in the next update.
  • CostOne task per sandbox, up to 10 per provider, priced from each provider's bill wherever it gives one.
    Upstash Box and Daytona give a per-sandbox charge; Daytona's can still change for 48 hours. E2B, boxd and Tenki give a usage record, priced at their published rates. Freestyle has no billing API and Superserve reports usage only per account, so those use our measured time at list price. Credits, tax and plan minimums are left out. The main test sandboxes are not priced, because providers ran different mixes of tests in them.
  • FailuresOnly failures the provider caused count against it; ones caused by us are set aside.
    That includes failures 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.
  • Plan limitsWe used self-serve accounts, and a chart names any limit that changed its result.
    Superserve caps templates at 2 vCPU, so it is not in Same machine. Boat allows 200 creates a day. Daytona's 10 vCPU quota stopped its 4 vCPU snapshot and burst tests. We will add results if a paid plan or quota increase lifts these.
  • SuperserveSuperserve ran a custom template we built with Node 22 and Python 3.11.
    Its stock templates offer one or the other, and our tests need both. Before this template, our setup installed Python on every create.
  • IndependentNo provider paid for these results or decided how they were tested.
    Some may have seen an early copy to check for errors. When a provider pointed out a mistake of ours, we fixed it the same way for every provider. We may work with some of these companies; that did not change how tests ran or how results are reported.

Every number with its full method: results.md