# boxd vs Modal

> Modal sandboxes are short-lived, end after 24 hours at most, and can't be stopped and started again. A boxd machine stays until you delete it and sleeps with your app running.

Checked 2026-10-30. Every Modal claim links to Modal's own docs or pricing. Web page: https://boxd.sh/compare/modal/

## At a glance

|  | boxd | Modal |
| --- | --- | --- |
| **Where boxd is ahead** |  |  |
| Session limit | None | 24 h maximum |
| Sleeps with processes kept | Yes, standby and hibernate | No; no stop and start |
| Built-in integrations | 100+, credentials kept out | Secrets only |
| Private network between machines | Org network, split by tags | Functions only |
| SSH | Native, own port per machine | `modal shell` only |
| Coding agents installed | Claude Code, Codex, OpenCode | Not published |
| **Where Modal is ahead** |  |  |
| 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 |

## Use boxd when

- Your work runs past 24 hours or should pick up where it stopped
- You want to SSH in and keep the machine
- You want agents installed without building an image

## Use Modal when

- You need GPUs
- You fan out thousands of short Python jobs
- You need US or Asia-Pacific regions

## 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.

|  | 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.

boxd's timings were measured on its production cluster on 2026-10-29, ten runs each, from a client in the same datacenter: a hibernated machine's app answered an HTTPS request in 156 ms median; a new machine from a snapshot answered 1.19 s after the create command.

## Side by side

|  | boxd | Modal |
| --- | --- | --- |
| **The machine** |  |  |
| Full VM, own kernel | Yes, every machine | gVisor by default; VM runtime option ([source](https://modal.com/docs/guide/sandboxes)) |
| Default size | 2 vCPU · 8 GiB · 100 GB | 0.25 vCPU · 128 MiB, bursts ([source](https://modal.com/docs/guide/sandbox-resources)) |
| Largest, self-serve | 8 vCPU · 32 GiB | Not published ([source](https://modal.com/docs/guide/resources)) |
| Root, systemd, Docker | Yes, plus nested virtualization | Docker on VM runtime; root not documented ([source](https://modal.com/docs/guide/sandboxes)) |
| CPU test (runs/s) | 12.6 (our run) | 15.48 (VM) · 12.6 (gVisor) ([source](https://github.com/starslingdev/hpc-sandbox-benchmarks/blob/main/LEADERBOARD.md)) |
| **Composable** |  |  |
| Ready machine described in code | Machine specs, built on one another | Image builder, chainable ([source](https://modal.com/docs/guide/sandboxes)) |
| Machines create machines | Yes, signed in as the machine | Not published ([source](https://modal.com/docs/guide/sandboxes)) |
| Built-in integrations | 100+, credentials kept out | Secrets only ([source](https://modal.com/docs/guide/sandbox-secret-injection)) |
| Schedules and event triggers | Cron and events; sleeps between runs | Through Modal Functions ([source](https://modal.com/docs/guide/cron)) |
| Standalone disks | Yes, outlive the machine | Volumes, shared read-write ([source](https://modal.com/docs/guide/volumes)) |
| Private network between machines | Org network, split by tags | Functions only ([source](https://modal.com/docs/guide/private-networking)) |
| Tailscale or NetBird | Both, built in | Static-IP proxies (beta) ([source](https://modal.com/docs/guide/proxy-ips)) |
| Agent skills or MCP | Agent skills; no MCP server | Agent skills; no MCP server ([source](https://modal.com/docs/cli/latest/skills)) |
| **Ready when you are** |  |  |
| Sleeps with processes kept | Yes, standby and hibernate | No; no stop and start ([source](https://modal.com/docs/guide/sandboxes)) |
| Wakes on a request | Yes, HTTPS or SSH · app answers in 156 ms | Not published ([source](https://modal.com/docs/guide/sandbox-networking)) |
| Starts from a snapshot, app running | Yes · app answers in 1.19 s | Memory snapshots in alpha ([source](https://modal.com/docs/guide/sandbox-snapshots)) |
| Session limit | None | 24 h maximum ([source](https://modal.com/docs/guide/sandboxes)) |
| **Built for agents** |  |  |
| Coding agents installed | Claude Code, Codex, OpenCode | Not published |
| SSH | Native, own port per machine | `modal shell` only ([source](https://modal.com/docs/cli/latest/shell)) |
| HTTPS URL per port | Yes, plus custom domains | Yes, tunnels ([source](https://modal.com/docs/guide/sandbox-networking)) |
| Raw TCP inbound | Yes, 3 ports per machine | Yes, TCP ([source](https://modal.com/docs/guide/sandbox-networking)) |
| Secrets kept out | Yes, swapped in at the proxy | Beta ([source](https://modal.com/docs/guide/sandbox-secret-injection)) |
| **Price** |  |  |
| vCPU-hour | $0.047, CPU used | ≈$0.071, ×1.15–1.75 pinned ([source](https://modal.com/pricing)) |
| RAM GiB-hour | $0.014, memory in use | ≈$0.024 ([source](https://modal.com/pricing)) |
| While asleep | Hibernated: disk only | No paused state ([source](https://modal.com/docs/guide/sandbox-resources)) |
| **Also worth knowing** |  |  |
| GPUs | No | Yes, T4 to B300 ([source](https://modal.com/pricing)) |
| Regions | Frankfurt (US waitlist) | ~20 incl. US, EU, Asia ([source](https://modal.com/docs/guide/region-selection)) |
| SOC 2 | SOC 2 in progress | SOC 2 Type II ([source](https://modal.com/docs/guide/security)) |
| SAML SSO | No | Enterprise ([source](https://modal.com/pricing)) |
| Egress allowlist | Yes | Yes ([source](https://modal.com/docs/guide/sandbox-networking)) |
| 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.

## How we measured

### Wake from hibernation

A small Python HTTP server on a default 2 vCPU machine, published on its HTTPS URL. Ten times: hibernate the machine, confirm it reports hibernated, then send one HTTPS request on a new connection from a client machine in the same datacenter. Median 156 ms until the app answered (104–213 ms); a warm request takes about 73 ms, so waking adds about 80 ms. The app's process ID was the same after every wake.

### New machine from a snapshot

A snapshot of that machine with the server running. Ten times: run `boxd new --from-snapshot`, then request the new machine's HTTPS URL until the app answers. Median 1.19 s from the create command to the app's first response (1.14–1.24 s). The first request succeeded every time; nothing was started after boot.

### CPU

The Node.js web tooling test from StarSling's open sandbox benchmark (Phoronix Test Suite 10.8.4, pts/node-web-tooling-1.0.1, Node 22.23.1, two passes per run), on a 4 vCPU machine. Three runs: 12.65, 12.86 and 12.19 runs/s. The other providers' numbers are from StarSling's own published leaderboard, which runs 4 vCPU / 8 GiB; boxd's 4 vCPU size has 16 GiB, which this test doesn't use.

### What these numbers don't include

Your own network distance. Every timing was taken from a client in the same Frankfurt datacenter; from the US, add your round trip on top. A larger app has more memory to bring back, so it takes longer than a small server.

## More comparisons

- [boxd vs E2B](https://boxd.sh/compare/e2b/index.md)
- [boxd vs Daytona](https://boxd.sh/compare/daytona/index.md)
- [boxd vs Vercel Sandbox](https://boxd.sh/compare/vercel-sandbox/index.md)
- [boxd vs Blaxel](https://boxd.sh/compare/blaxel/index.md)
- [boxd vs Cloudflare Sandbox](https://boxd.sh/compare/cloudflare-sandbox/index.md)
- [Moving off Runloop](https://boxd.sh/compare/runloop/index.md)
- [boxd vs exe.dev](https://boxd.sh/blog/boxd-vs-exe-dev/)
- [boxd vs sprites.dev](https://boxd.sh/blog/boxd-vs-sprites/)
- [All comparisons](https://boxd.sh/compare/index.md)
