On this page · 2 min
Where boxd stands out
No session limit
A boxd machine runs until you delete it. It sleeps when it's idle and wakes on the next request, so a long agent run, a bot or a dev server never hits a cutoff.
Composable: the sandbox is one part of the kit
Modal schedules Functions, not sandboxes, has no built-in integrations, and documents no private network between sandboxes. Put together, boxd's parts ran the CI of 10 open-source projects 6× faster than one GitHub-hosted job.
| Feature | boxd | Modal |
|---|---|---|
| Composable | ||
| Ready machine described in code | Machine specs, built on one another | Image builder, chainable |
| Machines create machines | Yes, signed in as the machine | Not published |
| Built-in integrations | 100+, credentials kept out | Secrets only |
| Schedules and event triggers | Cron and events; sleeps between runs | Through Modal Functions |
| Standalone disks | Yes, outlive the machine | Volumes, shared read-write |
| Private network between machines | Org network, split by tags | Functions only |
| Tailscale or NetBird | Both, built in | Static-IP proxies (beta) |
| Agent skills or MCP | Agent skills; no MCP server | Agent skills; no MCP server |
Your app answers in 156 ms from sleep
A sleeping boxd machine keeps its memory, so the server you left running is still running. An HTTPS request wakes it and gets an answer: 156 ms median across ten runs, measured on our production cluster.
A new machine, app already up, in 1.19 s
Snapshot a machine with your stack running and every machine you create from it starts with that stack running: 1.19 s median from the create command to the app's first response. No boot script, no warm-up.
Claude Code, Codex and OpenCode are already there
Every machine boots with all three installed, plus headless Chrome, a desktop you can open in the browser, Docker and the boxd CLI. Your API keys stay outside the machine: the guest holds a placeholder and our proxy swaps in the real value.
Timings are medians of ten runs on our production cluster, from a client in the same datacenter. How we measured
Side by side
Checked Oct 30, 2026. Each ↗ goes to where Modal says it. boxd's column is from our code and our own measurements.
| Feature | boxd | Modal |
|---|---|---|
| The machine | ||
| Full VM, own kernel | Yes, every machine | gVisor by default; VM runtime option↗ |
| Default size | 2 vCPU · 8 GiB · 100 GB | 0.25 vCPU · 128 MiB, bursts↗ |
| Largest, self-serve | 8 vCPU · 32 GiB | Not published↗ |
| Root, systemd, Docker | Yes, plus nested virtualization | Docker on VM runtime; root not documented↗ |
| CPU test (runs/s) | 12.6 (our run) | 15.48 (VM) · 12.6 (gVisor)↗ |
| Composable | ||
| Ready machine described in code | Machine specs, built on one another | Image builder, chainable↗ |
| Machines create machines | Yes, signed in as the machine | Not published↗ |
| Built-in integrations | 100+, credentials kept out | Secrets only↗ |
| Schedules and event triggers | Cron and events; sleeps between runs | Through Modal Functions↗ |
| Standalone disks | Yes, outlive the machine | Volumes, shared read-write↗ |
| Private network between machines | Org network, split by tags | Functions only↗ |
| Tailscale or NetBird | Both, built in | Static-IP proxies (beta)↗ |
| Agent skills or MCP | Agent skills; no MCP server | Agent skills; no MCP server↗ |
| Ready when you are | ||
| Sleeps with processes kept | Yes, standby and hibernate | No; no stop and start↗ |
| Wakes on a request | Yes, HTTPS or SSH · app answers in 156 ms | Not published↗ |
| Starts from a snapshot, app running | Yes · app answers in 1.19 s | Memory snapshots in alpha↗ |
| Session limit | None | 24 h maximum↗ |
| Built for agents | ||
| Coding agents installed | Claude Code, Codex, OpenCode | Not published |
| SSH | Native, own port per machine | `modal shell` only↗ |
| HTTPS URL per port | Yes, plus custom domains | Yes, tunnels↗ |
| Raw TCP inbound | Yes, 3 ports per machine | Yes, TCP↗ |
| Secrets kept out | Yes, swapped in at the proxy | Beta↗ |
| Price | ||
| vCPU-hour | $0.047, CPU used | ≈$0.071, ×1.15–1.75 pinned↗ |
| RAM GiB-hour | $0.014, memory in use | ≈$0.024↗ |
| While asleep | Hibernated: disk only | No paused state↗ |
| Also worth knowing | ||
| GPUs | No | Yes, T4 to B300↗ |
| Regions | Frankfurt (US waitlist) | ~20 incl. US, EU, Asia↗ |
| SOC 2 | SOC 2 in progress | SOC 2 Type II↗ |
| SAML SSO | No | Enterprise↗ |
| Egress allowlist | Yes | Yes↗ |
| Self-host | Yes, free to 16 vCPUs | No |
Where Modal is stronger
GPUs. Modal rents GPUs from T4 to B300 by the second. boxd has none.
Bursts. Modal says it creates more than 10,000 sandboxes a second. For huge numbers of short jobs it's built for that.
Regions. Around 20 regions across the US, EU and Asia-Pacific.
Compliance. SOC 2 Type II, HIPAA on Enterprise, and SAML SSO.
Questions
- How long can a Modal sandbox run?
- Five minutes by default and 24 hours at most, and there is no stop and start: state survives only through snapshots or volumes. A boxd machine has no limit and keeps its memory and processes while it sleeps.
- Is Modal faster on CPU?
- On StarSling's open Node.js test, Modal's VM runtime scored 15.48 and its gVisor runtime 12.6; boxd scored 12.6 in our run. If raw CPU throughput is the deciding factor, Modal's VM runtime is ahead.