Modal vs Upstash Box

Modal runs short-lived gVisor sandboxes inside a big AI compute platform with GPUs and regions around the world, and each one ends within 24 hours. Upstash Box gives each agent a light container in the US that pauses when idle, keeps its files and wakes on the next request.

The companies and products

Modal

Modal is a serverless cloud for AI work: inference, training, batch jobs and sandboxed code, all driven from Python, TypeScript or Go code.

Modal Sandboxes are containers you create from code, run commands in, and then terminate. By default they run under gVisor, a user-space kernel from Google; since October 2026 you can also pick a VM runtime with its own Linux kernel for Docker and FUSE (Battleships tracks that as a separate card, Modal VM Sandboxes). It suits teams that already run models on Modal and want short-lived, scalable code execution next to their GPUs.

Upstash Box

Upstash Box is a cloud computer for AI agents from Upstash, the company known for serverless Redis, Vector and QStash.

Each box is a Docker container with its own filesystem, shell, git and an optional coding agent such as Claude Code, Codex or OpenCode, which you drive from TypeScript or Python SDKs. A box pauses when it sits idle, keeps its files, and you pay for the CPU it actually uses. Upstash built it to run its own Context7 service and opened it to everyone in March 2026.

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. “19th cheapest of 345” means 18 of the other 344 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 workloadModal: price rankUpstash Box: price rankbochka: price rank
Software factory
100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month
A software factory needs Docker and a disk that lasts, which Modal's default sandbox and Upstash's container both lack, while bochka has both in every sandbox.
Can't run it61st of 367, with limits
$464 a month
3rd cheapest of 367
$634 a month
Always-on AI employees
50 machines 24/7 · 2 vCPU / 4 GB
An always-on agent hits Modal's 24-hour sandbox limit, while Upstash can keep a box on all month and bochka has no session cap on paid plans.
196th of 366, with limits
$1,924 a month
103rd of 366, with limits
$475 a month
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
Both fit short code runs well: Upstash Box ranks 10th because an idle box costs no CPU, Modal follows at 19th with fast starts, and bochka's start limits hold it back.
19th cheapest of 345
$181 a month
10th cheapest of 345
$119 a month
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
Giving each user a sandbox they come back to suits Upstash's paused boxes and bochka's free stops better than Modal, where every sandbox ends within a day.
11th cheapest of 361
$811 a month
2nd cheapest of 361
$222 a month
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
RL rollouts launch huge numbers of short sandboxes at once, which is what Modal is built for, while Upstash Box ranks 352nd here.
5th cheapest of 360
$19,038 a month
352nd of 360, with limits
$8,068 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
59th cheapest of 364
$1,244 a month
52nd cheapest of 364
$1,011 a month
10th cheapest of 364
$200 a month
CI runners
40 at once · 8 vCPU / 16 GB · 6,000 sessions of 12 min a month
CI jobs that build Docker images need Docker inside, which bochka has in every sandbox, Modal only on its VM runtime, and Upstash not at all.
126th cheapest of 377
$1,793 a month
120th cheapest of 377
$1,520 a month
4th cheapest of 377
$86 a month
24/7 dev boxes
1 machine 24/7 · 4 vCPU / 8 GB
A flat-price keep-alive box makes Upstash a good light dev box, while a Modal sandbox resets its packages within 24 hours.
138th of 368, with limits
$23 a month
10th cheapest of 368
$20 a month
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
Computer-use agents need a screen: Modal offers none, Upstash has a headless browser only, and bochka streams a full Linux desktop at 60fps.
98th of 369, with limits
$183 a month
73rd of 369, with limits
$76 a month
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
177th of 367, with limits
$136 a month
49th of 367, with limits
$38 a month
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
267th of 346, with limits
$394 a month
37th cheapest of 346
$400 a month
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
223rd of 338, with limits
$8,795 a month
200th of 338, with limits
$8,000 a month
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
Can't run it225th of 360, with limits
$259 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
Modal has GPUs from T4 to B300, and neither Upstash Box nor bochka has any, so Modal is the pick for GPU jobs.
19th cheapest of 98
$1,187 a month
Can't run itCan't run it
macOS agents
5 at once · 4 vCPU / 8 GB · 1,000 sessions of 20 min a month
Can't run itCan't run itCan't run it

Key features

FeatureModalUpstash Boxbochka
IsolationgVisor by default; VM runtime with its own kernel availableDocker container per box on AWSFull VM with its own kernel on dedicated AMD Ryzen 9 9950X hosts
Docker insideOnly with the VM runtimeNot documented; the box is itself a Docker containerYes, Docker and systemd in every sandbox
Nested virtualizationVM runtime only, Team and Enterprise plans, on requestNo VM support documentedYes, /dev/kvm for Android emulators and VMs
Stop and resumeNo paused state; a finished sandbox is gone, only Volumes keep filesPauses itself when idle and keeps its files; storage bills while pausedDisk saved every minute and on stop; a stopped sandbox costs nothing
Longest session24 hours (default 5 minutes)No documented cap; keep-alive boxes stay on all monthNo cap on paid plans
Wake on requestNoYes; a request to a public URL resumes a paused boxNo; a stopped sandbox is started by API
Fork and snapshotsSnapshot the filesystem into an image; memory snapshots in alphaSnapshot a running box and start many new boxes from itFork a running sandbox with its disk, without stopping it
Custom imagesBuild images in code or pull any linux/amd64 registry imageCustom images listed as coming soon; reuse setups through snapshotsNamed snapshots used as templates; no Dockerfile builds
GPUsT4 to B300; 10 at once on Starter, 50 on TeamNoneNone
Desktop, browser, computer useNot offered; an example shows how to set up VNC yourselfManaged headless Chromium with AI page actions and CDP; no desktop60fps Linux desktop, Chromium and computer-use API built in
Coding agentsExamples onlyClaude Code, Codex and OpenCode built in, with run and stream APIs, webhooks and scheduled promptsClaude Code, Codex and others preinstalled, with a prompt, steer and events API
Keeping API keys out of the sandboxSecrets are environment variables, or you run your own proxy in a sidecarHost proxy injects headers into outbound HTTPS on port 443, set at creationCredentials proxy for model providers and any HTTPS API; switch to another account when credits run out
Outbound network rulesBlock all, IP-range allowlist, domain allowlist (beta)Allow or deny by domain and CIDR, changeable on a running boxOpen internet, no provider-side allowlist
RegionsUS, EU and Asia-Pacific; pinning costs 1.15x to 1.75xUS only (AWS us-east-1)EU only (Germany, Finland, France)
Every feature Battleships tracks (43)
FeatureModalUpstash Boxbochka
Full VM (own kernel)NoNoYes
Docker insideNoNoYes
Nested virtualizationNoNoYes
RootYesNot publishedYes
SystemdYesNot publishedYes
Desktop GUINoNoYes
BrowserNoYesYes
Computer-use APINoNoYes
SSHYesYesYes
Persistent diskYesYesYes
Pause/resumeNoYesYes
Automatic snapshotsNoNoYes
Fork/cloneYesYesYes
Live fork (no pause)NoYesYes
Memory forkYesNoNo
Custom image (Docker or snapshot)YesYesYes
≥24 h sessionsYesYesYes
Idle auto-stopYesYesNo
Wake on requestNoYesNo
HTTPS preview URLsYesYesYes
Raw TCP inboundYesNoYes
Public IPv4NoNoNo
Egress allowlistYesYesNo
Secret proxyNoYesYes
Secret proxy for any APINoYesYes
Preinstalled agentsNoYesYes
Agent harness APINoYesYes
MCP serverNoYesNo
GPUYesNoNo
WindowsNoNoNo
Arm64NoYesNo
Self-hostingNoNoNo
BYOCNoNoNo
Open sourceNoNoNo
Scoped API keysNot publishedNot publishedYes
Spend limitsNot publishedNot publishedYes
Usage per sandbox (API)Not publishedYesYes
Audit logsYesNot publishedNo
SSOYesNoNo
SOC 2YesYesNo
HIPAAYesNoNo
EU data residencyYesNoYes
Zero data retentionNot publishedNot publishedYes

Performance

Modal12.79 runs/s
Upstash BoxNot measured
bochka26.69 runs/s

In the hpc-sandbox-benchmarks Node.js build-and-test loop at 4 vCPU / 8 GB, run on 29 September 2026, bochka finished 26.69 runs per second, Modal's default gVisor sandbox 12.79 and its VM runtime 15.54. Upstash Box has no result in that test, so there is no comparable measurement for it.

Node.js build-and-test loop at 4 vCPU / 8 GB, higher is better. Measured with the open hpc-sandbox-benchmarks suite. Modal measured on: Sandbox (gVisor), request = size, any region. Upstash Box has no published run in this suite yet, so there is no like-for-like number to compare.

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.

ScenarioModal, a monthUpstash Box, a monthbochka, 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
$15 · Starter · with limits$21 · Pay as You Go$20 · $20/mo
One agent that never stops
4 vCPU / 8 GB, 50 GB disk, running 24/7 all month
$178 · Starter · with limits$21 · Pay as You Go$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,229 · Starter · with limits$900 · Pay as You Go · 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
$792 · Team$306 · Pay as You Go$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
$3,193 · Team · with limits$1,822 · Pay as You Go$2,000 · $2000/mo · with limits

Modal: Modal bills by the second for whichever is higher, the CPU and memory you request or what you use, and an idle sandbox pays until it is terminated. Starter is free with $30 of monthly credit, Team is $250 a month with $100 of credit, and pinning a region multiplies the price by 1.15x to 1.75x.

Upstash Box: A standard box is billed for the CPU it actually uses, at $0.10, $0.20 or $0.40 per active CPU hour for Small, Medium and Large, plus $0.10 per GB-month of storage, and RAM is free. A keep-alive box costs a flat $8, $16 or $32 a month whether it is busy or not.

Upstash Box: bochka charges one hourly rate per machine size, by the second, only while the sandbox runs. Plans start at $20 a month and the whole fee becomes usage credit; a stopped sandbox costs nothing.

Limits in those scenarios

On Modal a sandbox lives at most 24 hours and its root disk is wiped when it ends, so the workday, always-on and fleet scenarios only keep files you put in a Volume. Neither Modal's default sandbox nor an Upstash box runs Docker inside, so the 50-agent fleet fits neither. Upstash does not publish its egress price, and its keep-alive pool is billed whether used or not. For 1,000 short jobs at once, Upstash fits, while bochka queues the starts at 90 a minute.

ScenarioModalUpstash Boxbochka
One coding agent, workdays
  • files survive a stop only in Volumes: packages installed elsewhere reset
  • flat pool: the tier is billed whether used or not
  • egress price not published
None that bite
One agent that never stops
  • Starter: sessions capped at 24 h
  • files survive a stop only in Volumes: packages installed elsewhere reset
  • flat pool: the tier is billed whether used or not
  • egress price not published
None that bite
50 agents in parallel
  • missing Docker inside
  • files survive a stop only in Volumes: packages installed elsewhere reset
  • missing Docker inside
  • flat pool: the tier is billed whether used or not
  • egress price not published
None that bite
Sandboxes for your usersNone that bite
  • egress price not published
None that bite
1,000 short jobs at once
  • shared vCPUs on this tier (Modal sells dedicated cores separately as “Sandbox (gVisor), request = size, any region”): heavy, sustained CPU use can be slowed by other tenants
  • egress price not published
  • max 2,400 starts/day (needs ~6,667)
  • max 600 starts/hour (needs ~1,000)
  • bursts above 90 starts/min are queued (a burst of 333 takes ~4 min to start)

Which one should you use?

Use Modal when

your sandboxes need GPUs, must run outside the US, or are huge bursts of short jobs that finish well within a day.

  • GPUs on the same platform. Useful if your agent trains or runs models: Modal rents GPUs from T4 to B300 next to its sandboxes.
  • Regions around the world. Modal runs in the US, EU and Asia-Pacific, while Upstash Box runs only in AWS us-east-1.
  • Huge fleets of short jobs. Useful for RL rollouts and big batches: Modal runs up to 5,000 containers on Team and builds images from any registry.

Use Upstash Box when

your agents mostly wait, need to wake on an incoming request, keep their files for days, and can run in the US without Docker.

  • A box that waits for free. Good for agents that wait a lot: an idle box costs no CPU, RAM is not billed, and a request wakes it.
  • Work that lasts past a day. A box keeps its files across pauses with no documented session cap, while a Modal sandbox ends within 24 hours.
  • Coding agents built in. Claude Code, Codex and OpenCode come ready to run, with webhooks and scheduled prompts; on Modal you wire them up yourself.

Where bochka fits

If what you are running is coding or computer-use agents that work for hours, both Modal and Upstash Box make you work around missing pieces. bochka gives each agent a full VM with Docker, a desktop and a disk that stays, on a CPU that did about twice the work of Modal's default sandbox in the same benchmark.

Docker and /dev/kvm in every sandbox

Modal runs Docker only on its VM runtime, and nested virtualization only on request for Team and Enterprise. An Upstash box is itself a container with no Docker inside, so the 50-agent scenario fits neither.

A desktop the agent can see

Modal has no desktop, so you set up VNC yourself, and Upstash gives a headless Chromium only. bochka streams a 60fps Linux desktop with computer-use tools, so the agent can open the app it built and check it.

A disk that keeps the work

A Modal sandbox ends within 24 hours and wipes everything outside a Volume. Upstash keeps files but caps disk at 10 GB on its 4 vCPU size. bochka gives 50 GB, saved every minute, and stops cost nothing.

Use bochka when your agents need a real machine: Docker, emulators, a desktop and a big disk that stays, on a fast CPU, for as long as the work takes. Compare it one to one: bochka vs Modal and bochka vs Upstash Box.

Questions people ask

Is Modal cheaper than Upstash Box?

In four of our five scenarios Upstash Box costs less: one agent that never stops is $21 a month against $178 on Modal, and sandboxes for your users are $306 against $792. Modal is cheaper for one agent on workdays ($15 against $21), but its files reset between days unless you use a Volume.

Which is faster, Modal or Upstash Box?

Only Modal has a result in the hpc-sandbox-benchmarks CPU test: 12.79 runs per second for its default sandbox and 15.54 for its VM runtime at 4 vCPU / 8 GB. Upstash Box has no comparable measurement. bochka did 26.69 in the same run.

Can Modal or Upstash Box run Docker?

Modal runs Docker only on its VM runtime, chosen with runtime="vm". Upstash Box does not document it: each box is itself a Docker container. Every bochka sandbox runs Docker and systemd with no extra setting.

How long can a sandbox run on Modal and Upstash Box?

A Modal sandbox defaults to 5 minutes and lasts at most 24 hours. An Upstash box has no documented cap: it pauses when idle and resumes later with its files, and a keep-alive box stays on all month. bochka has no session cap on paid plans.

Do Modal or Upstash Box have GPUs?

Modal does, from T4 up to B300, on its default gVisor runtime. Upstash Box has none, and bochka sandboxes are CPU machines too, so for GPU work Modal is the fit.

Where do Modal and Upstash Box run?

Modal runs in the US, the EU and Asia-Pacific, and you can pin a sandbox to a region for a higher price. Upstash Box runs in AWS us-east-1 only. bochka runs in the EU, in Germany, Finland and France.

Try bochka

Install the CLI, then run bochka new.

Product preview

More comparisons

Bochka product preview · Pricing, benchmarks and commands are illustrative. Sandbox provisioning is not connected.