Every 2026 roundup of AI-agent code-execution sandboxes says the same thing: three contenders worth taking seriously — E2B on Firecracker microVMs, Modal on gVisor with GPU access, and Daytona on hardened containers — and only one of them, Daytona, gives you a real self-hosting path, because it ships Helm charts you can point at your own Kubernetes cluster. Modal is proprietary end to end, so it's out of the self-hosting conversation entirely: there's no self-host tier, no open-source runtime to fork, just an API you rent.
That leaves a two-way race, and the popular framing hands it to Daytona before it's even started. We read the Helm chart's own README to check. It doesn't hold up.
The chart deploys a runner, a proxy, and a snapshot manager into your AWS account. It does not deploy the thing that actually makes Daytona Daytona — the control plane, the API, the org and auth layer — which the chart's own architecture diagram shows staying on app.daytona.io permanently. Meanwhile, the fully independent, run-it-yourself Daytona codebase — the one that doesn't call home — carries a banner as of this writing: development moved to a private repo in June 2026, and the public version gets no further updates, fixes, or releases. Its self-hosting chart is a still-supported live product, but the fully independent stack behind it is now a frozen artifact.
E2B, less advertised as "the open one," turns out to be the more literal fit for that description: its infrastructure repo is genuinely Apache-2.0, control plane included, with complete Terraform automation for two clouds. Neither one is a helm install away from running on a Cluster API–managed Hetzner fleet with zero vendor dependency — but they fail that test in different ways, and the difference determines which one is worth bex's engineering time.
What "self-hosted" actually means for each platform
Start with what each vendor's own documentation says it deploys, not what the marketing implies.
| Daytona | E2B | |
|---|---|---|
| License | No OSI license on the main repo; Helm chart repo carries a custom "Other/NOASSERTION" license | Apache-2.0 on e2b-dev/infra, confirmed via GitHub |
| What self-hosting actually deploys | Runner (DaemonSet), proxy, snapshot manager — a "Bring Your Own Compute" region | Full stack: API, orchestrator, control plane, Nomad/Consul cluster |
| Where the control plane lives | Always on Daytona Cloud (app.daytona.io) — the chart's own README states sandbox data stays in your account but "the Daytona control plane only sees control metadata" | In your infrastructure; no vendor callback required |
| Independent full-stack repo | daytonaio/daytona — public but frozen since June 2026 ("no longer maintained... core development has moved to a private codebase") | e2b-dev/infra — actively pushed, no archival notice |
| Documented cloud targets | AWS/EKS (the BYOC chart's worked example; scripts exist for other clouds but the walkthrough is AWS-first) | GCP and AWS, both with complete, working Terraform paths in self-host.md |
The BYOC chart's own README is explicit about the tradeoff it's making: you get "lower latency access to sandboxes" and data residency for snapshot storage, in exchange for the control plane — auth, org management, the API surface your code actually talks to — staying vendor-hosted. That's a reasonable product for a team that wants EU data residency inside an otherwise-managed relationship with Daytona. It is not the same thing as "self-hosting Daytona," and treating it as such means bex would be building a dependency on Daytona Cloud's uptime and pricing into its own AI-agent sandbox story — the exact vendor coupling a self-hosted PaaS exists to remove.
E2B's repo, by contrast, doesn't have a hosted-control-plane escape hatch to fall back on. Self-hosting means standing up the whole thing: API, Nomad/Consul orchestration, and the Firecracker fleet. That's more work up front. It's also the only one of the two that actually matches the "fully open-source player" label the market keeps assigning to Daytona.
Standing each one up on a CAPI-managed Hetzner cluster
Neither vendor documents Hetzner. Here's what each path concretely requires once you go looking.
Daytona's BYOC chart wants Kubernetes 1.19+ (EKS is the tested target), Helm 3.2+, a Daytona organization and API key, an S3-compatible bucket for snapshots, and IAM credentials with read/write access to it. Installation is a real helm install with a values file — genuinely the easiest afternoon of the two. But step one of the chart's own registration flow is a pre-install hook that calls the Daytona API to register the region and receive back a proxyApiKey. There is no offline mode. If app.daytona.io is unreachable, or Daytona changes API pricing or terms, your "self-hosted" sandbox layer inherits that risk on day one — before you've provisioned a single sandbox.
E2B's infra repo wants Packer and Terraform (pinned to 1.7.5), your own Cloudflare account and domain, and your own PostgreSQL instance — none of that is optional. For AWS specifically, the Terraform module provisions five EC2 node pools by role: Control (Nomad/Consul servers), API (ingress, proxy, otel, logs), Client (the Firecracker orchestrator nodes — m8i.4xlarge by default, chosen because it supports nested virtualization), Build (template builds), and ClickHouse (analytics). None of those node pools are Hetzner-flavored; the repo's Terraform providers are google and aws, full stop. Getting this onto a CAPI-managed Hetzner fleet means writing the Hetzner equivalent of that AWS module — new node-pool definitions, your own Firecracker-capable image build via Packer, and either running Nomad/Consul as their own control plane alongside Kubernetes, or carving out a dedicated node pool for it.
The one piece of good news for that adaptation: Firecracker's hard requirement is KVM, either bare metal or nested-virtualization-enabled cloud instances. Most hyperscaler VM tiers don't offer that by default — E2B's own AWS troubleshooting section warns to check instance-type support before you provision. Hetzner's dedicated (bare metal) line supports KVM natively, no nested-virt workaround required. That's not a Hetzner-specific favor from E2B — it's just a property of Firecracker needing a hypervisor-capable kernel — but it means the hardest infrastructure constraint in E2B's AWS module (nested virtualization) is a non-issue on Hetzner dedicated hardware, where it's a solved problem by default.
The tradeoff each makes against its own hosted product
Neither platform's self-hosting story is free of a technical cost relative to using the vendor's cloud directly — this is the tradeoff a reasonable reader actually wants sized up, separate from the licensing question above.
| Daytona (hardened containers) | E2B (Firecracker microVMs) | |
|---|---|---|
| Cold start | ~27–90ms | ~125–200ms cold boot; ~5–30ms with snapshot-restore |
| Isolation boundary | Shared host kernel, hardened via seccomp/network policy (optional Kata/Sysbox for stronger isolation) | Dedicated kernel per sandbox |
| GPU passthrough | No | No |
Daytona's container-based approach wins on raw cold-start latency because it only needs to initialize namespaces and mount filesystems — no kernel to boot. E2B's Firecracker microVMs pay a real latency cost for a real isolation upgrade: each sandbox gets its own kernel, which is the stronger security boundary if your agents are executing arbitrary, untrusted, LLM-generated code — the actual threat model this whole category exists to handle. Neither self-hostable option supports GPU passthrough in the sandbox itself; that capability currently belongs to Modal's gVisor-based runtime, which is precisely why Modal isn't in this comparison at all — there's no self-host tier to evaluate.
For a platform whose sandboxes will run arbitrary agent-authored code rather than a single trusted workload, the isolation gap is the more consequential number of the two, even though the latency gap is the more visible one.
The verdict for bex: build vs adapt, decided now
The instinct to reach for whichever SDK is easiest to bolt on first would point at Daytona — better documented Kubernetes story, faster cold starts, a Helm chart that installs in an afternoon. That instinct is wrong for a platform whose entire pitch is "no vendor calls the shots on your infrastructure." Wiring Daytona's BYOC chart into bex's roadmap doesn't remove a dependency, it adds one: a permanent, API-key-gated relationship with app.daytona.io sitting underneath a product built to argue against exactly that kind of coupling. And the fully independent alternative — the actual open Daytona stack — is a codebase Daytona itself stopped maintaining in June 2026.
E2B is the harder path and the correct one. Concretely, that means:
- Fork the AWS Terraform module's node-pool structure (Control/API/Client/Build) as the template for a Hetzner equivalent, rather than starting from a blank Terraform config.
- Target Hetzner dedicated (bare metal) instances for the Client node pool specifically — that's where Firecracker's KVM requirement is a non-issue rather than a quota request.
- Budget for the parts E2B doesn't provide: a Postgres instance, a Cloudflare-managed domain, and either a standalone Nomad/Consul control plane or a dedicated node pool for it inside the existing CAPI-managed cluster.
- Treat this as a Q3 2026 infrastructure project, not a Q3 2026 SDK integration — the honest scope is closer to "add a new orchestrator" than "add a dependency."
That's a real build. It's also the only one of the two paths that ends with bex's AI-agent sandboxes running on infrastructure bex actually owns.
Bex.co is the open-source, AI-native Render alternative — push a git repo, get a running HTTPS service on machines you own, no control plane that calls home to someone else's cloud. Star the repo on GitHub or deploy your first app today.
Sources
- Daytona Region Helm Chart README — daytonaio/helm-charts
- daytonaio/daytona GitHub repository — development-status banner
- e2b-dev/infra: Infrastructure that's powering E2B Cloud — license and self-host.md
- E2B self-hosting guide — GCP/AWS Terraform steps, node-pool architecture
- Daytona vs E2B in 2026: which sandbox for AI code execution? — Northflank
- How to Self-Host a Code Execution Sandbox for AI Agents (2026) — Beam
- Best Sandboxes for AI App Builders in 2026 — Modal
- How to run Firecracker without KVM on cloud VMs — Alex Ellis.



