Modal vs Unikraft Cloud

Modal runs short-lived gVisor sandboxes on a big AI compute platform with GPUs, billed per second and capped at 24 hours. Unikraft Cloud turns a Dockerfile into a tiny Firecracker microVM that sleeps when idle and wakes in milliseconds, sold as flat plans with a fixed pool of running capacity.

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.

Unikraft Cloud

Unikraft Cloud is a microVM cloud from Unikraft Inc. that runs any Dockerfile-based workload as a minimal Linux microVM with millisecond cold starts and scale-to-zero.

Your Dockerfile becomes the VM image at build time, and each instance runs on a heavily customized Firecracker VMM, so it boots in milliseconds and can go into standby when no traffic arrives. It is a general compute platform built for dense, bursty work such as HTTP services, headless browsers and agent fleets, sold as flat self-serve plans plus Enterprise dedicated hosts, on-prem and bring your own cloud. It is not a dev machine you log into: instances are reached through services, the CLI and a sandbox plugin for commands and files.

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 rankUnikraft Cloud: price rankboat: price rank
Software factory
100 at once · 4 vCPU / 8 GB · 2,200 sessions of 8 h a month
Can't run itCan't run it3rd cheapest of 367
$634 a month
Always-on AI employees
50 machines 24/7 · 2 vCPU / 4 GB
An agent that never stops hits Modal's 24-hour cap, and on Unikraft it shares the plan's small memory pool; boat runs it with no session cap on paid plans.
196th of 366, with limits
$1,924 a month
Can't run it5th cheapest of 366
$657 a month
Code interpreter bursts
100 at once · 1 vCPU / 2 GB · 200,000 sessions of 1 min a month
Short code runs fit Modal well, with fast starts and up to 5,000 containers on Team; Unikraft suits the shape too but self-serve plans stop at 24 running instances.
19th cheapest of 345
$181 a month
Can't run it186th 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
Modal fits hundreds of user sandboxes on its Team plan; Unikraft Pro holds 5,000 sleeping instances but only 24 running ones, and boat fits them on its own plans.
11th cheapest of 361
$811 a month
Can't run itCheapest 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 many short sandboxes at once, which Modal is built for and which is far beyond Unikraft's self-serve pools.
5th cheapest of 360
$19,038 a month
Can't run it34th 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
Can't run it10th 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 Modal's VM runtime and have no documented container runtime on Unikraft; every boat sandbox runs Docker.
126th cheapest of 377
$1,793 a month
Can't run it4th cheapest of 377
$86 a month
24/7 dev boxes
1 machine 24/7 · 4 vCPU / 8 GB
Both can keep a box around all month as a compromise: Modal resets files outside Volumes, and Unikraft has no SSH yet, so boat fits this better.
138th of 368, with limits
$23 a month
219th of 368, with limits
$39 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
Neither Modal nor Unikraft ships a desktop, so you build your own; boat streams a 60fps desktop with Chromium and a computer-use API.
98th of 369, with limits
$183 a month
Can't run it6th 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
Can't run it7th 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
Can't run it6th 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
Can't run it71st 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 itCan't run it2nd cheapest of 360
$200 a month
GPU eval jobs
10 at once · 8 vCPU / 32 GB · 500 sessions of 30 min a month
Modal rents GPUs from T4 to B300 next to its sandboxes; Unikraft offers NVIDIA GPUs only on Enterprise, and boat has none.
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

FeatureModalUnikraft Cloudboat
IsolationgVisor by default; a VM runtime with its own kernel is also offeredMinimal Linux microVM on a customized Firecracker VMMFull VM with its own kernel on dedicated AMD Ryzen 9 9950X hosts
Docker insideOnly with the VM runtimeThe Dockerfile becomes the VM image; no container runtime inside documentedYes, Docker, systemd and root in every sandbox
Nested virtualizationVM runtime only, Team and Enterprise plans, on requestEnterprise only, with a per-instance flagYes, /dev/kvm on every plan
Desktop, browser, computer useNot offered; an example shows how to set up VNC yourselfNone built in; you can run your own headless browser60fps desktop, Chromium and a computer-use API built in
Idle and wakeNo paused state; an idle sandbox pays until it is terminatedStandby after 1 second idle by default, wakes on the next request in millisecondsStop for free with the disk saved; start again by API
Longest session24 hours (default 5 minutes)No published maximumNo cap on paid plans
Files between sessionsRoot disk is gone when a sandbox ends; only Volumes keep filesVolumes, and stateful standby keeps memory and cachesWhole disk saved every minute and on stop
Snapshots and forkFilesystem snapshots into images; memory snapshots in alpha that end the sandboxCheckpoint a running microVM with a pause of a few milliseconds and start new instances from itFork a running sandbox with its disk, without stopping it
Custom imagesBuild images in code or pull any linux/amd64 registry imageAny Dockerfile, built into the VM imageNamed snapshots used as templates; no Dockerfile builds
GPUsT4 to B300; 10 at once on Starter, 50 on TeamNVIDIA GPUs and vGPUs on Enterprise onlyNone
Running at once, self-serve100 containers on Starter, 5,000 on Team2, 8 or 24 running instances sharing a pool of 2 vCPU / 4 GiB, 8 vCPU / 8 GiB or 24 vCPU / 32 GiB100 to 2,000 sandboxes at once on paid plans, up to 16 vCPU / 32 GB each
Outbound network rulesBlock all, IP-range allowlist, domain allowlist (beta)Network shield, Enterprise only, limited accessOpen internet, no provider-side allowlist
Coding agents and API keysExamples only; secrets are environment variables or your own sidecar proxyNone preinstalled; secret injection is part of the Enterprise network shieldSeven agents preinstalled with a prompt API; credentials proxy for any HTTPS API on every plan
RegionsUS, EU and Asia-Pacific; pinning a region costs 1.15x to 1.75xDallas, Frankfurt, San Francisco, Singapore and Washington DC; more on requestEU only: Germany, Finland, France
Every feature Battleships tracks (43)
FeatureModalUnikraft Cloudboat
Full VM (own kernel)NoYesYes
Docker insideNoNoYes
Nested virtualizationNoYesYes
RootYesYesYes
SystemdYesNot publishedYes
Desktop GUINoNoYes
BrowserNoNoYes
Computer-use APINoNoYes
SSHYesNoYes
Persistent diskYesYesYes
Pause/resumeNoYesYes
Automatic snapshotsNoYesYes
Fork/cloneYesYesYes
Live fork (no pause)NoYesYes
Memory forkYesYesNo
Custom image (Docker or snapshot)YesYesYes
≥24 h sessionsYesYesYes
Idle auto-stopYesYesNo
Wake on requestNoYesNo
HTTPS preview URLsYesYesYes
Raw TCP inboundYesNot publishedYes
Public IPv4NoNoNo
Egress allowlistYesYesNo
Secret proxyNoYesYes
Secret proxy for any APINoYesYes
Preinstalled agentsNoNoYes
Agent harness APINoNoYes
MCP serverNoNoNo
GPUYesYesNo
WindowsNoNoNo
Arm64NoYesNo
Self-hostingNoYesNo
BYOCNoYesNo
Open sourceNoNoNo
Scoped API keysNot publishedNot publishedYes
Spend limitsNot publishedNot publishedYes
Usage per sandbox (API)Not publishedNoYes
Audit logsYesYesNo
SSOYesNoNo
SOC 2YesYesNo
HIPAAYesYesNo
EU data residencyYesYesYes
Zero data retentionNot publishedNot publishedYes

Performance

Modal12.79 runs/s
Unikraft CloudNot measured
boat26.69 runs/s

In the same hpc-sandbox-benchmarks run at 4 vCPU / 8 GB, boat finished 26.69 Node.js build-and-test runs per second and Modal's default gVisor sandbox finished 12.79, so boat did about twice the work. Unikraft Cloud has no comparable measurement; its under 10 ms cold start is its own figure and measures start time, not CPU speed.

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. Unikraft Cloud 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 monthUnikraft Cloud, a monthboat, 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$39 · Hobby$20 · $20/mo
One agent that never stops
4 vCPU / 8 GB, 50 GB disk, running 24/7 all month
$178 · Starter · with limits$39 · Hobby$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 limitsCan't run it$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 · TeamCan't run it$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 limitsCan't run it$2,000 · $2000/mo · with limits

Modal: Modal bills by the second for the higher of 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, and Team is $250 a month with $100 of credit.

Unikraft Cloud: Unikraft Cloud charges a flat monthly fee for a pool of running capacity: free for 2 vCPU / 4 GiB, $39 for 8 vCPU / 8 GiB, $199 for 24 vCPU / 32 GiB, with sleeping instances not counted. It publishes no per-hour, disk or egress rate, so anything bigger is an Enterprise quote.

Unikraft Cloud: boat plans start at $20 a month and the whole fee is usage credit. You pay per second while a sandbox runs, and a stopped sandbox costs nothing and keeps its disk.

Limits in those scenarios

On Modal, a sandbox lives at most 24 hours and keeps files only in Volumes, and Docker needs the VM runtime, so the workday, always-on and 50-agent scenarios do not fully fit. On Unikraft, every running instance shares the plan's pool: Team's 8 GiB is filled by one 4 vCPU / 8 GB agent, so 50 agents, 300 user sandboxes or 1,000 jobs at once fit no self-serve plan. boat fits all but the burst, where even its largest plan queues starts.

ScenarioModalUnikraft Cloudboat
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
  • disk beyond 0 GiB: price unknown
  • 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
  • disk beyond 0 GiB: price unknown
  • 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
  • no pool tier with 200 vCPU / 400 GiB for 50 VMs
  • no published per-resource rate
None that bite
Sandboxes for your usersNone that bite
  • no pool tier with 600 vCPU / 1,200 GiB for 300 VMs
  • no published per-resource rate
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
  • no pool tier with 2,000 vCPU / 4,000 GiB for 1,000 VMs
  • no published per-resource rate
  • 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, run as huge bursts of short jobs, or need outbound rules and regions outside Europe without a sales call.

  • GPUs on the same platform. For agents that train or run models, Modal rents GPUs from T4 to B300 next to its sandboxes on self-serve plans.
  • Very large bursts, self-serve. For huge numbers of short jobs, Modal runs up to 5,000 containers on Team without a sales call.
  • Outbound rules and per-second billing. Modal can block outbound traffic or allow only chosen domains, and bills by the second instead of a flat pool.

Use Unikraft Cloud when

you run many small services or headless browsers that sleep most of the time and must wake in milliseconds, or want on-prem or your own cloud under Enterprise.

  • Millisecond wake and scale-to-zero. For services that sleep most of the time, Unikraft instances go into standby when idle and wake on the next request in milliseconds.
  • Memory checkpoints of running VMs. Unikraft can checkpoint a running microVM with a pause of a few milliseconds and start new instances from it.
  • No session clock and your own hardware. Unikraft publishes no session limit, and Enterprise adds dedicated hosts, on-prem or your own cloud.

Where boat fits

If the sandboxes are for coding agents that work for hours, look at boat. Modal ends a sandbox within 24 hours and Unikraft caps self-serve plans at small shared pools, while every boat sandbox is a full VM with Docker, a desktop and a disk that is saved every minute.

A real machine with Docker and /dev/kvm

Agents run docker compose, databases and emulators. Modal needs its VM runtime for Docker and nested virtualization is on request on Team and up; Unikraft documents no container runtime and keeps nested virtualization for Enterprise.

Work that survives the night

Modal wipes the root disk when a sandbox ends, within 24 hours, so you write code to save files to a Volume. boat saves the whole disk every minute, stops for free and has no session cap on paid plans.

Desktop, agents and keys built in

Neither ships a desktop or coding agents, so you build them into the image. boat has a 60fps desktop, seven agents driven from outside, and a credentials proxy; on Unikraft secret injection is Enterprise only.

Use boat when your agents need a whole machine for hours or days: Docker, /dev/kvm, a desktop, coding agents driven from outside, and a disk that is saved every minute. Compare it one to one: boat vs Modal and boat vs Unikraft Cloud.

Questions people ask

Is Modal cheaper than Unikraft Cloud?

For one agent on workdays, Modal is about $15 a month against $39 for the Unikraft Team pool, but Modal resets files outside Volumes between days. For one agent that never stops, Unikraft is $39 a month against $178 on Modal, which also caps sessions at 24 hours. For 50 agents or sandboxes for your users, no self-serve Unikraft plan is big enough.

Which is faster, Modal or Unikraft Cloud?

For CPU work, only Modal has a comparable measurement: 12.79 runs per second against boat's 26.69 at 4 vCPU / 8 GB. For start time, Unikraft says its microVMs cold boot in under 10 ms and wake on the next request, which is its own figure.

Can Modal or Unikraft Cloud run Docker inside?

Modal runs Docker only with its VM runtime, not the default gVisor sandbox. Unikraft builds your Dockerfile into the VM image and documents no container runtime inside a running instance. Every boat sandbox runs Docker and systemd.

How long can a sandbox run?

A Modal sandbox runs at most 24 hours, with a 5-minute default. Unikraft publishes no maximum, and idle instances go into standby. boat has no session cap on paid plans.

Do Modal and Unikraft Cloud have GPUs?

Modal rents GPUs from T4 to B300 on its self-serve plans. Unikraft offers NVIDIA GPUs and vGPUs only on Enterprise. boat has no GPUs.

Try boat

Install the CLI, then run boat new.

7-day free trial

More comparisons