What is the cheapest cloud sandbox for running AI agents that execute code?
Lizard has the lowest published running rate among the eight providers and resource classes compared here: $0.0162 per hour. Its Pro plan costs $19 a month and includes $19 of usage. For 10,000 five-minute jobs, our estimate is $19 including the plan, versus $74.32 for Cloudflare, the next lowest subtotal. Small workloads can cost less elsewhere: Modal's recurring $30 credit covers our ten-hour example. Lizard pricing, Modal pricing.
We compare E2B, Daytona, Modal, Vercel Sandbox, Cloudflare Sandbox, Blaxel, Runloop and Lizard. Rates and documentation were checked on October 28, 2026. We publish this guide at Lizard and include our own product. These are calculations from public prices and fixed task durations; we have not measured equal performance across all eight providers.
What does a comparable sandbox cost per hour?
The reference workload needs roughly 2 vCPUs and 4 GB of memory, with CPU use averaging 20%. Model tokens are separate: these prices cover the environment that executes the agent's code.
| Provider | Configuration | Published CPU and memory rates | Hourly subtotal at 20% CPU |
|---|---|---|---|
| Lizard | Small: 2 vCPU, 4 GB, 5 GB disk | $0.0162/hour bundled | $0.01620 |
| E2B | 2 vCPU, 4 GiB | $0.0504/vCPU-hour + $0.0162/GiB-hour | $0.16560 |
| Daytona | 2 vCPU, 4 GiB | $0.0504/vCPU-hour + $0.0162/GiB-hour | $0.16560 |
| Modal Sandbox | 1 physical core, 4 GiB requested and capped | $0.141912/core-hour + $0.024012/GiB-hour | $0.23796 |
| Vercel Sandbox | 2 vCPU, 4 GB, iad1 | $0.128/active-vCPU-hour + $0.0212/GB-hour | $0.13600 |
| Cloudflare Sandbox | 2 vCPU, 6 GiB, 5 GB disk | $0.072/active-vCPU-hour + $0.009/GiB-hour | $0.08406 including disk |
| Blaxel | 4 GB, corresponding 2 CPU cores | $0.0414/GB-hour; CPU included | $0.16560 while active |
| Runloop | Medium: 2 CPU, 4 GB | $0.108/CPU-hour + $0.0252/GB-hour | $0.31680 before disk |
Rate sources: Lizard, E2B, Daytona, Modal, Vercel, Cloudflare, Blaxel, Runloop.
Three configuration differences affect the comparison:
- Modal defines one physical core as two vCPUs. We reserve one core and 4 GiB. Setting
cpu=2would reserve two physical cores and raise this subtotal to $0.379872/hour. The Sandbox rates already include its non-preemptible premium. Modal resources. - Cloudflare requires at least 3 GiB per vCPU. We use a custom 2-vCPU, 6-GiB instance and include its 5-GB disk charge. It cannot match the 2-vCPU, 4-GiB configuration exactly. Cloudflare limits.
- Blaxel's writable filesystem consumes RAM. Its
tmpfslimit uses roughly half of available memory when possible. A large dependency tree may need a volume or more RAM. Blaxel filesystem.
We preserve each vendor's GB or GiB units; one GiB holds about 7.4% more bytes. CPU counts also do not establish equal build speed. Use the smallest configuration that reliably completes your task: lightweight tools may need less than this reference size.
Subscriptions and credits change the bill
| Provider | Ongoing plan cost | Included usage or credit |
|---|---|---|
| Lizard | Pro: $19/month, taxes included; no seat fee | $19/month shared platform usage |
| E2B | Hobby: $0; Pro: $150/month plus usage | $100 one-time grant; no recurring Pro compute credit |
| Daytona | Wallet-funded usage | $200 introductory compute; deposits unlock quota tiers |
| Modal | Starter: $0; Team: $250/month plus usage | $30/month on Starter; $100/month on Team |
| Vercel | Pro: $20/month, including one deploying seat | $20 eligible usage; extra deploying seats cost $20 each |
| Cloudflare | Workers Paid: $5/month | Separate CPU, memory and disk allowances |
| Blaxel | No flat subscription | Up to $200 introductory credits; deposits determine quota tiers |
| Runloop | Basic: $0; Pro: $250/month plus usage | $50 trial credit; plan-specific storage allowances |
Plan sources: Lizard billing, E2B billing, Daytona billing, Modal, Vercel Pro, Cloudflare, Blaxel, Runloop.
For Lizard, $100 of eligible usage produces a $100 total: the subscription covers the first $19. E2B Pro adds $150 to usage. A Daytona or Blaxel deposit pays for later usage; count it as an upfront cash requirement without adding it twice as an expense.
The estimates below exclude introductory grants and assume recurring credits remain unused elsewhere in the account. Lizard's seven-day trial includes $5 of usage and requires a card. Vercel Hobby has free allowances for qualifying non-commercial projects; we use Pro for commercial work. Vercel Hobby terms.
Monthly cost: three agent workloads
All three examples assume 20% CPU use and these schedules:
- Prototype: 120 five-minute jobs, ten sandbox-hours total, at most two concurrent.
- 10,000 jobs: five minutes each, 833.33 sandbox-hours, at most 20 concurrent. Spread starts across 30 days, never exceeding 400/day.
- 50 workspaces: eight hours/day for 22 days, totaling 8,800 sandbox-hours and 1,100 starts. Export outputs and shut down each day.
| Provider and plan | Prototype | 10,000 jobs | 50 workspaces |
|---|---|---|---|
| Lizard Pro | $19.00 | $19.00 | $142.56 |
| E2B Hobby / Pro | $1.66 / $151.66 | $138.00 / $288.00 | $1,607.28, Pro required |
| Daytona | $1.66 | $138.00 | $1,457.28 |
| Modal Starter | $0.00 | $168.30 | $2,064.05 |
| Vercel Pro | $20.00 | $113.34 | $1,196.80 |
| Cloudflare Workers Paid | $5.32 | $74.32 | $744.00 |
| Blaxel | $1.66 | $138.00 | $1,457.28 |
| Runloop Basic | $3.17 | $264.00 | $2,787.84 |
These are subtotals, not complete application bills. They include recurring plan fees and applicable compute credits. Cloudflare includes running disk and resource allowances; Vercel includes creation fees. Add storage, network, builds, taxes where applicable, and controller services. Model tokens remain separate.
E2B's billing and pricing pages differ on whether custom CPU/RAM requires Pro. Confirm that the chosen configuration qualifies for Hobby; both prices appear above. Fifty concurrent eight-hour sessions require Pro regardless. Modal Starter assumes at most three human developer seats. Runloop Basic assumes shutdown; Pro suspend/resume adds $250/month.
Daytona's Tier 2 CPU/RAM pool fits 50 reference workspaces, but disk and network needs can require a higher tier. Blaxel Tier 1 permits 50 sandboxes, counting retained standby environments too. Daytona quotas, Blaxel quotas.
The 10,000-job calculation
The chart compares usage charges. The monthly table above adds plan fees and applies recurring credits.
Sandbox-hours = 10,000 × 5 / 60 = 833.333…
Active CPU-hours = 833.333… × 2 × 20% = 333.333…
Lizard usage = 833.333… × $0.0162 = $13.50
Lizard Pro subtotal = max($19, $13.50) = $19
Cloudflare subtotal = $5 plan
+ (333.333… - 6.25 included CPU-hours) × $0.072
+ (5,000 - 25 included GiB-hours) × $0.009
+ (4,166.666… - 200 included GB-hours) × $0.000252
= $74.32
Vercel usage = 333.333… × $0.128
+ 833.333… × 4 × $0.0212
+ 10,000 × $0.60 / 1,000,000 creations
= $113.34
Vercel Pro subtotal = max($20, $113.34) = $113.34Cloudflare's allowances apply to separate resources; unused CPU allowance cannot offset memory. Worker, Durable Object and log charges need their own budget.
Five minutes means billable duration. Add startup, retries, billable transitions or a delay before standby if they extend that time. For sub-minute Vercel jobs, account for the one-minute minimum memory increment.
When does another provider cost less?
Modal's recurring $30 credit covers roughly 126 hours at our reservation. Its compute subtotal stays below Lizard's $19 minimum until roughly 206 hours. E2B Hobby stays below $19 until roughly 115 hours, subject to eligibility and extras.
An existing Lizard Pro account with unused included usage could absorb the prototype without an added charge. The same principle applies to other shared credits. Compare the extra cost on an existing account separately from the cost of opening a new one.
Idle, paused and stopped sandboxes have different costs
At zero CPU use, a running Vercel reference sandbox still costs $0.0848/hour for memory. Cloudflare's memory and disk cost $0.05526/hour. Lizard, E2B and Daytona continue charging their running allocations. Modal charges the greater of requested or actual resources; Blaxel charges allocated memory while active.
| Provider | What happens when work stops? |
|---|---|
| Lizard | Pause stops compute and preserves disk, RAM and processes by default. Persistent Volumes remain billable. Kill removes ephemeral disk. |
| E2B | Pause preserves filesystem and memory. Documented paused billing is zero, with no automatic retention expiry. |
| Daytona | Paused/stopped disk remains billable. VM pause saves memory; container archive follows different billing. |
| Modal | Termination ends the instance. Filesystem snapshots default to 30-day retention; memory snapshots expire after seven days. |
| Vercel | Persistent sandboxes restore filesystem state. Do not assume process memory resumes. Snapshots and drives cost extra. |
| Cloudflare | Sleep stops instance charges. Preserve files before shutdown; filesystem recovery does not restore process memory. |
| Blaxel | Standby preserves full state and stops compute; stored snapshots remain billable. Connections can delay standby. |
| Runloop | Pro suspend stops CPU/RAM charges while disk billing continues. Basic supports shutdown instead. |
Lifecycle sources: Lizard, E2B, Daytona, Modal, Vercel, Cloudflare, Blaxel, Runloop.
Blaxel documents roughly 15 seconds before standby after connections close; an idle WebSocket can keep it active longer. Include this delay for short, frequent interactions.
To pause during model calls, run the agent's controller outside the sandbox: a frozen process cannot finish its own network request. After resume, expect to reconnect to remote services even if the sandbox preserved memory.
Modal can cost less than our table with lower resource requests. Bursting above the CPU request depends on capacity; undersized memory requests can cause eviction. Choose requests from measured use. Modal sizing.
Storage, transfer and other charges
| Provider | Storage to budget | Network terms |
|---|---|---|
| Lizard | Persistent Volumes: $0.000000054/GB-second, about $0.141912/GB over 730 hours | 2 TB/account per rolling 30 days; arrange higher needs in advance |
| E2B | Hobby includes 10 GiB sandbox disk; Pro includes 20 GiB. Paused billing is zero | Reviewed public pages do not specify a transfer unit rate |
| Daytona | Extra disk: $0.000108/GiB-hour; separate snapshots can remain billable | Lower tiers restrict destinations; confirm transfer terms |
| Modal | Volumes: $0.09/GiB-month; 1 TiB/month free listed | Starter: 1 TiB/month, then $0.04/GiB |
| Vercel | Snapshots $0.08/GB-month; iad1 drives $0.05/GB-month, plus reads $0.0015/GB and writes $0.004/GB | Internet downloads free; outbound and exposed-port traffic use transfer billing |
| Cloudflare | Running disk $0.000252/GB-hour; R2 backups have separate storage/request charges | North America/Europe: 1 TB included, then $0.025/GB; other regions differ |
| Blaxel | Standby snapshots $0.20/GB-month; volumes $0.12/GB-month; images $0.045/GB-month | Transfer included in public pricing |
| Runloop | Devbox disk $0.00034236/GB-hour; snapshot/blueprint/object storage $0.000072/GB-hour | Reviewed pricing does not publish a transfer unit rate |
Sources: Lizard billing, Lizard limits, E2B billing, Daytona pricing, Daytona network rules, Modal storage, Modal transfer, Vercel, Cloudflare, R2, Blaxel, Runloop.
For the 10,000-job example, five extra GiB of Daytona disk adds about $0.45 if retained only during running time. Runloop's eight-GB Medium disk adds $2.28 before allowances; confirm which storage classes its allowance covers. Keeping data between runs adds more.
Location also matters. Modal adds 1.15× for broad region selection or 1.75× for narrow selection; our estimate leaves placement unpinned. Vercel uses iad1 rates here. Runloop blueprint builds add $0.252/build-hour. Modal regions, Runloop pricing.
Can the plan run your workload?
| Provider | Limits that can change the price or required plan |
|---|---|
| Lizard Pro | 100 running; 24 new starts/minute, 120/hour, 400/day. Resume is not a new start. |
| E2B | Hobby: 20 concurrent, one-hour sessions. Pro: 100 concurrent, 24-hour sessions; paid concurrency upgrades. |
| Daytona | Tier 2: card and $25 deposit. Tier 3: $500 deposit. Tier 4: $2,000 every 30 days. Tiers 1/2 restrict outbound destinations. |
| Modal | Starter: three developer seats, 100 concurrent containers listed. Confirm effective Sandbox quotas for a large launch. |
| Vercel | Hobby: ten concurrent, 45 minutes. Pro: 10,000 concurrent, 24 hours; creation capacity ramps. |
| Cloudflare | Custom instances: up to 4 vCPU, 12 GiB under default limits. Account resource caps also apply. |
| Blaxel | Rolling deposits unlock tiers: $20 for 50 sandboxes, $50 for 200. Standby counts; remaining wallet balance alone does not maintain the tier. |
| Runloop | Trial: three running Devboxes. Confirm paid concurrency. Suspend/resume requires Pro. |
Limit sources: Lizard, E2B, Daytona, Modal, Vercel, Cloudflare, Blaxel, Runloop.
Lizard Pro cannot supply 100,000 fresh environments in a month. Its 400/day limit allows at most 12,000 across 30 days. Reusing workspaces changes the workload and isolation requirements. For higher fresh-start volume, obtain Enterprise prices and quotas before forecasting costs.
Daytona's network tier can matter before CPU limits do: an agent visiting arbitrary websites may need Tier 3's $500 deposit. For Blaxel, delete expired environments or budget quota for retained standby sessions.
Features worth paying for
| Provider | Reasons to evaluate it beyond the hourly rate |
|---|---|
| Lizard | Firecracker microVMs with their own kernels; commands, files, previews, desktop and coding-agent templates through Lizard SDK and Lizard CLI |
| E2B | Agent code-execution APIs and memory-preserving pause with free paused retention |
| Daytona | Container and VM runtime choices; VM pause, fork and snapshots that preserve memory |
| Modal | Flexible resource requests and GPU workflows; VM and gVisor runtime choices |
| Vercel | Integration with Vercel applications, filesystem persistence and high published concurrency |
| Cloudflare | Integration with Workers and Durable Objects, with active CPU billing |
| Blaxel | Automatic standby and full-state recovery between connections |
| Runloop | Devboxes, reusable Blueprints and snapshots; suspend/resume on Pro |
Feature sources: Lizard, E2B, Daytona isolation, Modal runtimes, Vercel, Cloudflare, Blaxel, Runloop.
For Lizard, check Small's 5-GB disk and template catalog. Public CLI custom-template uploads are unavailable. Attached Persistent Volumes are node-local, single-attach and prevent live forks. SDK/CLI creation defaults to five minutes; set a longer deadline for an eight-hour session. Lizard volumes, limits.
Choose by cost per successful task
Run a representative task with the same model, repository and acceptance check. Record billable time, retries, memory, retained state and transfer. Then calculate:
Cost per successful task =
(plan + compute + storage + network + other charges
- applicable recurring credits) / successful tasksApply credits only to eligible charges. Measure task speed before assuming equal hourly prices buy equal work. Check isolation, outbound access and credentials before running untrusted code.
For a small experiment, start with recurring allowances. For the two larger workloads above, Lizard has the lowest subtotal within this shortlist. If its sizes and quotas fit, create a Lizard sandbox and compare one task against your current provider.
Build with AI. Ship with Lizard.
You don't need a platform team to go live. Your whole cloud, one CLI command away.
- Services
- —
- Add-ons
- —
- Deployments
- —
- Sandbox starts
- —