Every AI-sandbox pricing comparison making the rounds in 2026 quotes the same four numbers: Northflank at $0.01667/vCPU-hour, E2B and Daytona tied at $0.0504, Modal at $0.1419, Fly.io Sprites at $0.07. Stack them up and Modal looks nearly 9x pricier than Northflank for the same compute. One of those headline numbers is measured in a different unit than the other three — nobody selling owned-hardware self-hosting as the answer seems to have checked.
Here's the actual answer, worked from each vendor's own published rate and Hetzner's post-price-hike bill, not a vendor's own comparison chart: self-hosting sandboxes on owned hardware beats Northflank only once a fleet runs sandboxes roughly 20 hours a day, beats E2B/Daytona-priced compute at about 8 hours a day, and beats Modal's real rate at around 5.5 hours a day. Below those thresholds, the metered vendor is cheaper than the hardware sitting idle in a data center. Above them, owning the box wins by a widening margin. The rest of this post shows the math and the audited rates behind it.
The Headline Rates, Audited
Here's what four sandbox vendors currently publish for CPU-bound agent-sandbox compute, cross-checked against each vendor's own pricing page rather than taken from a competitor's comparison chart:
| Vendor | Published rate | Per-vCPU-hour (normalized) | Memory rate |
|---|---|---|---|
| Northflank | $0.01667/vCPU-hr | $0.01667 | $0.00833/GB-hr |
| E2B | $0.0504/vCPU-hr | $0.0504 | $0.0162/GiB-hr |
| Daytona | $0.0504/vCPU-hr | $0.0504 | $0.0162/GiB-hr |
| Modal | $0.1419/physical-core-hr | $0.07095 | $0.0242/GiB-hr |
| Fly.io Sprites | $0.07/CPU-hr (zero when idle) | $0.07 | $0.04375/GB-hr |
The Modal row is the catch. Modal bills $0.00003942 per physical core per second — $0.1419/hour — and Modal's own docs define a physical core as two vCPUs. Every comparison post treating $0.1419 as directly comparable to E2B's or Daytona's $0.0504 per-vCPU rate is comparing a 2-vCPU unit against a 1-vCPU unit and calling it apples to apples. Normalized to an actual vCPU-hour, Modal's real rate is $0.07095 — close to Fly.io Sprites, not 2.8x more expensive than E2B/Daytona as the uncorrected number implies. Modal is still the priciest CPU option per vCPU once you fix the unit, just not by nearly as much as the headline suggests.
Two more caveats worth carrying forward: E2B's $0.0504 rate only holds on its usage-based Hobby tier; its Pro tier adds a flat $150/month to unlock 24-hour sessions and higher concurrency, a cost the raw per-second number doesn't show. Daytona, by contrast, ships no subscription gate — the usage-based rate is the whole bill regardless of scale. Fly.io Sprites' "zero when idle" billing means its $0.07 rate only ever gets charged during actual active time, which matters for the duty-cycle math below.
What Owning the Hardware Actually Costs
Hetzner's June 15, 2026 repricing pushed its dedicated-vCPU CCX line up 113–176% on new orders, so any self-hosting cost comparison built on pre-hike numbers is already stale. The current, post-hike rate for CCX33 (8 dedicated vCPU, 32GB RAM) is €138.49/month, Germany/Finland pricing, excluding VAT — at a late-July-2026 EUR/USD rate of roughly 1.14, that's $157.88/node/month.
Take a representative agent-sandbox fleet: 200 concurrent sandboxes, each provisioned at 2 vCPU / 4GB RAM — a standard default size across E2B, Daytona, and Modal's own examples, and it happens to match Hetzner's own CPX22 shared-vCPU unit exactly. At peak, that's 400 vCPU and 800GB of RAM the fleet needs available simultaneously.
Bin-packed onto CCX33 nodes: 400 vCPU ÷ 8 vCPU/node = 50 nodes. Check the memory side too — 50 nodes × 32GB = 1,600GB available against 800GB needed — so vCPU is the binding constraint, not RAM, and there's headroom to spare. Fifty CCX33 nodes at $157.88 each comes to $7,894/month, fixed, whether those sandboxes run one hour a day or all 720 hours in the month. That fixed-regardless-of-use property is exactly what makes the next section's comparison non-trivial: a metered vendor's bill moves with actual usage; a fleet of owned boxes doesn't move at all.
The Crossover: When Self-Hosting Wins (and When It Doesn't)
Run the same 200-sandbox, 2vCPU/4GB fleet through each vendor's audited rate at two duty cycles — a "business hours" pattern (8 hours/day active, 30-day month) and an "always-on" pattern (24/7, 30-day month) — and compare against the fixed $7,894/month Hetzner fleet:
| Option | 8 hrs/day (96,000 vCPU-hr, 192,000 GB-hr) | 24/7 (288,000 vCPU-hr, 576,000 GB-hr) |
|---|---|---|
| Northflank | $3,200 | $9,599 |
| E2B / Daytona | $7,949 | $23,846 |
| Modal (corrected rate) | $11,458 | $34,373 |
| Fly.io Sprites | $15,120 | $45,360 |
| Owned Hetzner (50× CCX33) | $7,894 (fixed) | $7,894 (fixed) |
Read the two columns side by side and the "self-hosting is always cheaper" pitch doesn't survive intact. At 8 hours/day, Northflank at $3,200 is less than half the owned-hardware fleet's fixed cost — the fixed 50-node fleet is sitting mostly idle in that scenario, and Northflank's per-second billing means you simply don't pay for the empty 16 hours the way an owned box's rent doesn't care whether it's busy. E2B and Daytona, at $7,949, are already essentially break-even with owned hardware at that same duty cycle.
Solving for the exact utilization where each metered option's cost equals the fixed $7,894 (cost scales linearly with duty cycle, so this is a straight ratio against the 24/7 total) gives the crossover point per vendor:
| Vendor | Crossover utilization | In hours/day |
|---|---|---|
| Northflank | 82.2% | ~19.7 hrs/day |
| E2B / Daytona | 33.1% | ~7.9 hrs/day |
| Modal (corrected rate) | 23.0% | ~5.5 hrs/day |
| Fly.io Sprites | 17.4% | ~4.2 hrs/day |
Below its crossover line, the metered vendor is the cheaper choice — full stop, no hardware caveat needed. Above it, owned hardware wins by a margin that keeps widening: at 24/7 utilization, the owned fleet costs 18% less than Northflank, a third of E2B/Daytona's bill, and roughly a sixth of Modal's or Fly.io Sprites'. Northflank's per-second pricing is aggressive enough that it takes near-continuous sandbox activity — not just "busy," but almost never idle — before owning the hardware pays off against it specifically.
This ratio doesn't depend on running exactly 200 sandboxes, either. Because both sides of the equation scale linearly with sandbox count — as long as the 2vCPU/4GB unit keeps dividing evenly into whatever node size is chosen, which it does here — the same crossover percentages hold whether the fleet is 20 sandboxes or 2,000. What matters is the duty cycle of the workload, not its raw size.
The duty cycle itself is a function of what the sandboxes are actually doing, and real deployments sit at very different points on that spectrum. E2B's own published case studies illustrate the split: Perplexity uses sandboxes for ad-hoc data-analysis requests — a sandbox spins up, runs one user's query, and tears down, which looks like the low end of the utilization range, closer to the "business hours" column than the "always-on" one. Hugging Face's use of E2B to launch tens of thousands of concurrent machines replicating DeepSeek-R1 training runs is closer to the opposite end — long-running, densely packed compute with little idle time between jobs. A platform fielding the first kind of workload has little reason to reach for owned hardware at all; one fielding the second kind is squarely in the range where the fixed-cost fleet wins outright.
What the Fixed Cost Doesn't Include
None of the numbers above are the whole bill. The $7,894/month figure buys bare Hetzner capacity — it doesn't include what a metered vendor's markup is actually paying for on your behalf: someone has to run Cluster API Provider Hetzner to provision and replace those 50 nodes, patch the host OS, and — because these are AI-agent sandboxes running arbitrary generated code, not a static web app — stand up an actual isolation boundary (gVisor, Kata, or a Firecracker-class microVM) so one tenant's sandboxed code can't escape to the host or to another tenant's sandbox. That's engineering time and an on-call rotation, not a line item Hetzner bills you for.
This isn't a reason to dismiss the crossover math — it's the honest asterisk on it. A team running sandboxes at 60%+ utilization is still very likely better off owning the hardware even after accounting for that overhead, because the dollar gap at high utilization is large enough to absorb it. A team running sandboxes occasionally, below the crossover line, has even less reason to take on that operational surface: the metered vendor is both cheaper in dollars and simpler in headcount.
The Rule of Thumb
Check your actual sandbox utilization before assuming self-hosting wins. Below roughly 20% duty cycle, every option here — including the priciest, Modal at its corrected rate — is cheaper than renting the hardware to sit idle. Between 20% and 80%, the answer depends specifically on which vendor you're comparing against, not on "cloud vs. self-hosted" as a blanket category. Only past roughly 80% utilization does owning the hardware beat all four metered options at once, and it does so by a wide and growing margin the closer the fleet gets to always-on.
Bex.co is the open-source, AI-native Render alternative — push a git repo, get a running HTTPS service on machines you own, with the same Cluster API-provisioned Hetzner fleet this post's cost math is built on, not a per-second sandbox meter. Star the repo on GitHub or deploy your first app today.
Sources
- AI Sandbox pricing comparison (2026) — Northflank
- Modal Pricing — Plans and rates
- Modal Pricing Explained (2026) — Beam
- Daytona vs E2B vs Modal vs Vercel Sandbox: A 2026 Comparison — StartupHub.ai
- Hetzner Cloud price adjustment, 15 June 2026 — Hetzner Docs
- Hetzner cloud server price increases in 2026: full breakdown and alternatives — Northflank
- ccx33 by Hetzner Cloud — Spare Cores
- cpx22 by Hetzner Cloud — Spare Cores
- Euro (EUR) To US Dollar (USD) Exchange Rate History for 2026



