Daytona vs Modal VM Sandboxes
Daytona starts with containers, adds Linux VM, Windows and GPU classes, and lets a sandbox run with no time limit. Every Modal VM Sandbox is a real VM with its own kernel, but it ends within 24 hours and keeps files only in a Volume or snapshot.
The companies and products
Daytona
Daytona is a cloud for running AI-generated code: you create sandboxes from code through its API and SDKs.
By default a Daytona sandbox is a Linux container with its own namespaces and reserved vCPU, memory and disk. You can also pick a Linux VM class (pause, fork, memory snapshots, /dev/kvm), a Windows VM class, or a GPU class with Nvidia and AMD cards. It is built for teams that run agent code, code interpreters and evals through Python, TypeScript, Ruby, Go or Java SDKs.
- Founded
- 2023
Modal VM Sandboxes
Modal is a serverless cloud for AI work, and VM Sandboxes are the version of its sandboxes that run in a virtual machine with their own Linux kernel.
You create a VM Sandbox from Python, TypeScript or Go code with runtime="vm", run commands in it, and terminate it when the job is done. Modal built the runtime on the Rust-based Cloud Hypervisor, so Docker, FUSE, systemd and nested cgroups work, with the same API, images and prices as its gVisor sandboxes. It became generally available on 1 October 2026 and suits teams that want many short-lived agent machines next to Modal's inference and training.
- Funding
- Over $466M raised
- Generally available
- 1 October 2026; early customers launched over 20 million VMs before that
- Session length
- Default 5 minutes, maximum 24 hours
- Compliance
- SOC 2 on every plan; HIPAA on Enterprise
Which use cases each one fits
For each use case, Battleships prices every sandbox provider on the same workload and sorts them from the cheapest monthly bill up. “15th cheapest of 367” means 14 of the other 366 providers run that workload, with every feature it needs, for less. “With limits” means the provider runs it but misses something, so it is listed after every full match. Open a use case for its whole ranking and what each provider misses.
| Use case and its workload | Daytona: price rank | Modal VM Sandboxes: price rank | bochka: price rank |
|---|---|---|---|
| Software factory 100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month Daytona fits on its Linux VM class with no session cap, while a Modal VM ends within 24 hours and keeps only files in a Volume; bochka ranks 3rd with Docker and a desktop on every machine. | 15th cheapest of 367 $4,111 a month | 84th of 367, with limits $759 a month | 3rd cheapest of 367 $634 a month |
| Always-on AI employees 50 machines 24/7 · 2 vCPU / 4 GB Only Daytona and bochka fit: an assistant that lives on its machine all month needs no session cap, and Modal VM Sandboxes stop at 24 hours. | 24th cheapest of 366 $6,104 a month | Can't run it | 5th cheapest of 366 $657 a month |
| Code interpreter bursts 100 at once · 1 vCPU / 2 GB · 200,000 sessions of 1 min a month Daytona fits one-minute runs well, creating up to 300 to 600 sandboxes a minute with no plan fee, while bochka's start limits make big bursts a compromise. | 25th cheapest of 345 $271 a month | Can't run it | 186th of 345, with limits $2,000 a month |
| Sandboxes for your users 300 at once · 2 vCPU / 4 GB · 30,000 sessions of 23 min a month 300 sandboxes of 2 vCPU at once need 600 vCPU, more than Daytona's Tier 4 pool of 500 vCPU, so it needs a custom limit there; bochka ranks first. | 154th of 361, with limits $2,000 a month | Can't run it | Cheapest of 361 $209 a month |
| RL rollouts 1,000 at once · 2 vCPU / 4 GB · 1,000,000 sessions of 3 min a month All three fit only as a compromise here: Daytona's running vCPU pool caps a big fleet, and bochka's start limits queue large bursts. | 130th of 360, with limits $8,261 a month | 171st of 360, with limits $16,322 a month | 34th of 360, with limits $2,000 a month |
| Agent evals 250 at once · 4 vCPU / 8 GB · 15,000 sessions of 20 min a month | 189th of 364, with limits $2,000 a month | Can't run it | 10th cheapest of 364 $200 a month |
| CI runners 40 at once · 8 vCPU / 16 GB · 6,000 sessions of 12 min a month Daytona caps a sandbox at 4 vCPU by default, and Modal gives /dev/kvm for emulators only on Team and Enterprise on request, while bochka has 8 vCPU and /dev/kvm from its first plan. | 308th of 377, with limits $805 a month | 188th of 377, with limits $1,064 a month | 4th cheapest of 377 $86 a month |
| 24/7 dev boxes 1 machine 24/7 · 4 vCPU / 8 GB | 183rd of 368, with limits $245 a month | Can't run it | 18th cheapest of 368 $26 a month |
| Computer-use agents 50 at once · 4 vCPU / 8 GB · 20,000 sessions of 15 min a month Daytona has a VNC desktop and a computer-use API on Linux and Windows, Modal VM Sandboxes have no desktop, and bochka streams a 60fps desktop you can embed. | 26th cheapest of 369 $1,198 a month | Can't run it | 6th cheapest of 369 $200 a month |
| Browser-use agents 50 at once · 2 vCPU / 4 GB · 30,000 sessions of 10 min a month | 93rd of 367, with limits $598 a month | Can't run it | 7th cheapest of 367 $200 a month |
| Scraping & bots (startup scale) 50 at once · 1 vCPU / 2 GB · 100,000 sessions of 3 min a month | 38th cheapest of 346 $404 a month | Can't run it | 6th cheapest of 346 $90 a month |
| Mass scraping & bots (undetectable) 1,000 at once · 1 vCPU / 2 GB · 3,000,000 sessions of 2 min a month | 202nd of 338, with limits $8,073 a month | Can't run it | 71st of 338, with limits $1,800 a month |
| Parallel red teaming 200 at once · 2 vCPU / 4 GB · 5,000 sessions of 30 min a month | 12th cheapest of 360 $2,000 a month | 294th of 360, with limits $642 a month | 2nd cheapest of 360 $200 a month |
| GPU eval jobs 10 at once · 8 vCPU / 32 GB · 500 sessions of 30 min a month Only Daytona fits: it rents GPUs by the hour, while Modal VM Sandboxes and bochka have none. | 20th cheapest of 98 $1,190 a month | Can't run it | Can't run it |
| macOS agents 5 at once · 4 vCPU / 8 GB · 1,000 sessions of 20 min a month | Can't run it | Can't run it | Can't run it |
Key features
| Feature | Daytona | Modal VM Sandboxes | bochka |
|---|---|---|---|
| Isolation | Container by default; Linux VM and Windows VM classes on request | Every sandbox is a VM with its own Linux kernel on Cloud Hypervisor | Every sandbox is a full VM with its own kernel on dedicated AMD Ryzen 9 9950X hosts |
| CPU speed (Node.js build-and-test, 4 vCPU / 8 GB) | 21.52 runs/s on the Linux VM class; the default container class reported no result | 15.54 runs/s | 26.69 runs/s |
| Docker, root, systemd | Docker and root in all classes | Yes; you start dockerd yourself as the entrypoint | Yes, ready in every sandbox |
| Nested virtualization (/dev/kvm) | Only on Linux VMs, and KVM must be turned on for your organization | Team and Enterprise plans only, on request | Every plan |
| Longest session | No default cap; you can set an optional time to live | 24 hours (default 5 minutes); continue from a filesystem snapshot | No cap on paid plans; you set the time to live |
| Files after a stop | The disk is kept and billed while stopped; archived containers are free | No paused state; a finished sandbox is gone, only Volumes and snapshots keep files | Whole disk saved every minute and on stop; a stopped sandbox costs nothing |
| Pause with memory | Linux VM and Windows classes pause and resume with memory kept | Memory snapshots in alpha: snapshotting ends the sandbox, snapshots expire after 7 days | No; resume boots the VM again from its disk |
| Fork | Linux VM and Windows classes fork with memory; containers cannot fork | Snapshot the filesystem into an image and boot new sandboxes from it | Fork a running sandbox with its disk |
| Desktop and computer use | VNC desktop (xfce4) and a computer-use API on Linux and Windows | Not offered; an example shows how to set up Xvfb and VNC yourself | 60fps desktop and Chromium, computer use and browser control, embeddable stream |
| Coding agents and API keys | Guides install agents and run them as processes; a secrets proxy swaps placeholders in HTTPS headers | Examples only; secrets are environment variables, or you run your own proxy in a sidecar | Claude Code, Codex and others preinstalled with a prompt, steer and events API; credentials proxy for any HTTPS API |
| Reaching the sandbox | HTTPS preview URLs on any port, SSH; no raw TCP or public IP | Encrypted and raw TCP tunnels, connect tokens, inbound IP allowlist | HTTPS URLs for up to 50 ports, token-protected; raw TCP; dedicated IPv6 or IPv4 |
| Outbound internet | Tier 1 and 2 reach only package registries, git hosts and AI APIs; Tier 3 and up get open internet and allowlists | Block all, IP-range allowlist, domain allowlist (beta) | Open internet on every plan; no provider-side allowlist |
| GPUs and Windows | Nvidia and AMD GPUs, on-demand or preemptible; Windows VM sandboxes | No GPUs on the VM runtime (only gVisor sandboxes have them); no Windows | No GPUs; no Windows guests, Wine for Windows apps |
| Regions | US and EU, plus dedicated regions or your own machines | US, EU and Asia-Pacific plus narrower regions; pinning costs 1.15x to 1.75x | EU only: Germany, Finland, France |
Every feature Battleships tracks (43)
| Feature | Daytona | Modal VM Sandboxes | bochka |
|---|---|---|---|
| Full VM (own kernel) | No | Yes | Yes |
| Docker inside | Yes | Yes | Yes |
| Nested virtualization | Yes | Yes | Yes |
| Root | Yes | Yes | Yes |
| Systemd | Not published | Yes | Yes |
| Desktop GUI | Yes | No | Yes |
| Browser | Yes | No | Yes |
| Computer-use API | Yes | No | Yes |
| SSH | Yes | Yes | Yes |
| Persistent disk | Yes | Yes | Yes |
| Pause/resume | Yes | No | Yes |
| Automatic snapshots | Yes | No | Yes |
| Fork/clone | Yes | Yes | Yes |
| Live fork (no pause) | No | Yes | Yes |
| Memory fork | Yes | Yes | No |
| Custom image (Docker or snapshot) | Yes | Yes | Yes |
| ≥24 h sessions | Yes | Yes | Yes |
| Idle auto-stop | Yes | Yes | No |
| Wake on request | No | No | No |
| HTTPS preview URLs | Yes | Yes | Yes |
| Raw TCP inbound | No | Yes | Yes |
| Public IPv4 | No | No | No |
| Egress allowlist | Yes | Yes | No |
| Secret proxy | Yes | No | Yes |
| Secret proxy for any API | Yes | No | Yes |
| Preinstalled agents | Yes | No | Yes |
| Agent harness API | No | No | Yes |
| MCP server | Yes | No | No |
| GPU | Yes | No | No |
| Windows | Yes | No | No |
| Arm64 | No | No | No |
| Self-hosting | No | No | No |
| BYOC | Yes | No | No |
| Open source | No | No | No |
| Scoped API keys | Yes | Not published | Yes |
| Spend limits | Not published | Not published | Yes |
| Usage per sandbox (API) | Yes | Not published | Yes |
| Audit logs | Yes | Yes | No |
| SSO | Yes | Yes | No |
| SOC 2 | Yes | Yes | No |
| HIPAA | Yes | Yes | No |
| EU data residency | Yes | Yes | Yes |
| Zero data retention | Not published | Not published | Yes |
Performance
In StarSling's public run of 2026-09-29 at 4 vCPU / 8 GB, bochka did 26.69 Node.js build-and-test runs per second, Daytona's Linux VM class 21.52 and Modal's VM runtime 15.54. So Daytona's VM class did about 1.4 times the CPU work of Modal's, and bochka about 1.2 times Daytona's and 1.7 times Modal's. Daytona's default container class reported no result, so the class most Daytona sandboxes use has no number.
Node.js build-and-test loop at 4 vCPU / 8 GB, higher is better. Measured with the open hpc-sandbox-benchmarks suite. Daytona measured on: Linux VM sandbox (same rates; KVM / nested virt per-org feature). Modal VM Sandboxes measured on: VM Sandbox, request = size.
Pricing in five scenarios
Each bill is priced from the providers' public price lists by the open Battleships engine, with the cheapest plan that runs the scenario.
| Scenario | Daytona, a month | Modal VM Sandboxes, a month | bochka, a month |
|---|---|---|---|
| One coding agent, workdays 4 vCPU / 8 GB, 50 GB disk, 8 hours a day, 22 days a month, files kept between days | $56 · Tier 3 ($500 top-up) | $15 · Starter · with limits | $20 · $20/mo |
| One agent that never stops 4 vCPU / 8 GB, 50 GB disk, running 24/7 all month | $245 · Tier 3 ($500 top-up) | $178 · Starter · with limits | $26 · $20/mo |
| 50 agents in parallel 50 machines of 4 vCPU / 8 GB at once, 8-hour sessions, 1,100 sessions a month, Docker inside | $2,682 · Tier 3 ($500 top-up) | $2,229 · Starter · with limits | $317 · $20/mo × 3 seats |
| Sandboxes for your users 2 vCPU / 4 GB, 30,000 sessions of 10 minutes a month, up to 300 at once | $2,000 · Tier 4 ($2,000 top-up every 30 days) · with limits | $792 · Team | $200 · $100/mo × 2 seats |
| 1,000 short jobs at once 2 vCPU / 4 GB, 1,000 at once, 3 minutes each, 200,000 jobs a month | $2,000 · Tier 4 ($2,000 top-up every 30 days) · with limits | $3,193 · Team · with limits | $2,000 · $2000/mo · with limits |
Daytona: Daytona bills per second for the vCPU, memory and disk you reserve, including while a sandbox starts or stops, and keeps billing the disk while it is stopped. You pay from a prepaid wallet: open internet needs a $500 top-up (Tier 3), and the biggest pool needs $2,000 every 30 days (Tier 4).
Modal VM Sandboxes: Modal bills by the second for whichever is higher, the CPU and memory you request or what you use, until the sandbox is terminated. Starter is free with $30 of monthly credit, Team is $250 a month with $100 of credit, pinning a region costs 1.15x to 1.75x, and egress above the free allowance is $0.04 per GiB.
Modal VM Sandboxes: bochka plans start at $20 a month and the whole fee becomes usage credit, spent per second while a sandbox runs. A stopped sandbox costs nothing and keeps its disk.
Limits in those scenarios
Daytona limits the total vCPU running at once, up to 500 vCPU on Tier 4, so 300 sandboxes for your users (600 vCPU) and 1,000 short jobs at once (2,000 vCPU) do not fit without a custom limit, and Tier 1 and 2 reach only an allowlist of services. A Modal VM Sandbox lives at most 24 hours and keeps files only in a Volume or snapshot, so the workday, always-on and 50-agent scenarios do not fit there, though 300 user sandboxes do fit on Team. Modal's 1,000-job burst is priced on shared CPU that is not guaranteed. On bochka the limit that bites is start speed: even the $2,000 plan starts 90 sandboxes a minute, so that burst gets queued.
| Scenario | Daytona | Modal VM Sandboxes | bochka |
|---|---|---|---|
| One coding agent, workdays |
|
| None that bite |
| One agent that never stops |
|
| None that bite |
| 50 agents in parallel |
|
| None that bite |
| Sandboxes for your users |
| None that bite | None that bite |
| 1,000 short jobs at once |
|
|
|
Which one should you use?
Use Daytona when
your agents need GPUs or Windows, must keep running for days with memory pause, or must run in the US or on your own machines.
- GPUs and Windows. Useful if your agents test models or need Windows: Daytona rents Nvidia and AMD GPUs and runs Windows VM sandboxes.
- No time limit. Useful for agents that work for days: a Daytona sandbox has no default cap, while a Modal VM Sandbox ends within 24 hours.
- Pause with memory, your own machines. Daytona's VM classes pause and come back with memory kept, and Daytona can run sandboxes on machines you bring.
Use Modal VM Sandboxes when
every job needs its own VM kernel, finishes within a day, comes in huge bursts, or sits next to models you already run on Modal.
- A VM for every sandbox. Every Modal VM Sandbox has its own Linux kernel, while Daytona's default class is a container that shares the host kernel.
- Very large bursts. Useful for many short jobs at once: Team runs 5,000 containers at once, and 300 user sandboxes fit where Daytona's pool does not.
- Regions and one AI platform. Useful if you need Asia-Pacific, or already serve or train models on Modal: sandboxes and models share one account.
Where bochka fits
If your agents work for hours or days in a machine they come back to, look at bochka. Every sandbox is a full VM that keeps its disk and has no session cap on paid plans, with a desktop and coding agents already inside. Pick Daytona or Modal instead for GPUs, Windows, regions outside Europe or huge bursts of short jobs.
A full VM that keeps its disk
Daytona's default is a container sharing the host kernel, and /dev/kvm needs its VM class with KVM turned on. A Modal VM ends within 24 hours and loses its root disk, so you write snapshot or Volume code to continue.
Faster builds and tests
At 4 vCPU / 8 GB, bochka did 26.69 runs per second, Daytona's VM class 21.52 and Modal's VM runtime 15.54. Each install, build and test waits about a quarter longer on Daytona and 1.7 times as long on Modal.
Desktop, agents and keys ready
On Daytona you install the agent and run it as a process. On Modal you also set up Xvfb, VNC and a browser, and keys sit in environment variables. bochka ships a 60fps desktop, agents you drive from outside, and a credentials proxy.
Use bochka when your agents do real work for hours or days: installs, builds, tests, Docker and emulators on a faster full VM that keeps its disk, with a desktop and coding agents built in. Compare it one to one: bochka vs Daytona and bochka vs Modal VM Sandboxes.
Questions people ask
Is Daytona cheaper than Modal VM Sandboxes?
Usually not: one always-on agent comes to $245 a month on Daytona against $178 on Modal, and 50 parallel agents $2,682 against $2,229. But Modal fits neither, because its VMs end within 24 hours. For 300 sandboxes for your users, Modal fits on Team at $792 a month, while Daytona's Tier 4 pool is too small.
Which is faster, Daytona or Modal VM Sandboxes?
In the same public CPU test at 4 vCPU / 8 GB, Daytona's Linux VM class did 21.52 runs per second and Modal's VM runtime did 15.54. bochka did 26.69. Daytona's default container class reported no result.
Are Daytona sandboxes VMs like Modal's?
Not by default. A Daytona sandbox is a Linux container unless you pick its Linux VM or Windows VM class, which have their own kernel. Every Modal VM Sandbox is a VM on Cloud Hypervisor, as is every bochka sandbox.
Can Daytona and Modal run Docker and Android emulators?
Both run Docker. Daytona gives /dev/kvm only on Linux VMs once KVM is turned on for your organization, and Modal offers nested virtualization on Team and Enterprise after you ask support. bochka has Docker and /dev/kvm on every plan.
How long can a sandbox run on each?
A Daytona sandbox has no default time limit; you can set an optional time to live or turn off idle auto-stop. A Modal VM Sandbox defaults to 5 minutes and stops at 24 hours at most. bochka has no session cap on paid plans.
Do Daytona or Modal VM Sandboxes have GPUs?
Daytona rents Nvidia and AMD GPUs, on-demand or preemptible. Modal VM Sandboxes have none; on Modal, GPU sandboxes need the gVisor runtime. bochka has no GPUs either.
Try bochka
Install the CLI, then run bochka new.
Product preview