Modal
Serverless Python and containers on CPU and GPU: functions, inference, batch jobs and agent sandboxes, billed per second.
What is Modal?
Modal is a serverless cloud for Python and containers. You decorate ordinary Python functions with the image, CPU, memory and GPU they need, and modal deploy turns them into autoscaling containers, cron jobs or web endpoints that scale to zero when idle. Sandboxes are the second building block: containers or VMs created at runtime for coding agents, RL rollouts and untrusted code, isolated with gVisor or a VM runtime. There are Python, JavaScript/TypeScript and Go SDKs and a CLI.
Modal Labs bills per second for the CPU, memory and GPU a container requests or uses, whichever is higher, and the Starter plan includes $30 of compute a month. The client SDK (modal-client) is Apache-2.0; the platform itself is proprietary, running on a capacity pool Modal says spans 20+ clouds.
On 14 October 2026 Modal raised a $750M Series D led by Accel at a $15.75B post-money valuation. It said it had passed $1B in annualized run rate, that Sandboxes alone ran at $300M, and that VM Sandboxes were generally available. Next to Fly.io or Railway, it trades always-on servers for scale-to-zero, Python-first code.
Our review
4.0The easiest place we list to run Python on a GPU for minutes rather than months, and a serious sandbox platform besides, as long as you're willing to write your code around Modal. You pay per second for what containers request or use, a scaled-to-zero app costs nothing, and the $30 monthly credit covers a small always-warm CPU endpoint outright. The costs hide in multipliers: Functions can be preempted unless you pay 3x for CPU and memory, Sandboxes always pay that 3x rate, pinning a region adds 1.15x to 1.75x, and custom domains need the $250-a-month Team plan. Your code ends up full of Modal decorators and images, and it's the wrong shape for an always-on web app with a database. On StarSling's October sandbox run its VM runtime landed mid-pack and the gVisor runtime near the back. Independent discussion is thin right now, so there's little outside evidence of how support behaves when something breaks.
Pros
- + Per-second, usage-based billing with scale to zero and $30 of free compute every month on Starter
- + GPUs from a T4 ($0.59/h) to a B300 ($7.10/h) with no reservation, plus CPU functions, cron, web endpoints, volumes and sandboxes from one Python SDK
- + Sandboxes on gVisor or a VM runtime (Docker, FUSE and nested cgroups on VMs), billed on actual usage rather than reserved size
Cons
- − Lock-in: apps are written against Modal's decorators, image builder and volumes, and only the client is open source
- − Multipliers stack: 3x for non-preemptible CPU and memory (all Sandboxes pay it), 1.15x to 1.75x for a pinned region
- − A payment method is required even on Starter, and custom domains, rollbacks and RBAC start at $250 a month
Reviewed by SeekDeploy Editorial · updated 2026-11-15. Reviews are independent — we don’t accept payment for coverage or ratings.
Should you use Modal?
A good fit if you're…
- Python teams that need GPUs for inference, fine-tuning or batch jobs by the hour without reserving instances
- Spiky or scheduled workloads (cron jobs, batch pipelines, webhooks) that should cost nothing while idle
- Products running agent, eval or RL sandboxes at scale that want to pay for CPU actually used rather than a reserved size
Probably not for you if you're…
- Classic always-on web apps with a database and long requests: there's no managed database, web requests hand back a redirect after 150 seconds, and Starter has no custom domains
- Teams that want code they can move to another host unchanged: apps depend on Modal's decorators, images and volumes
- Workloads that must run in one specific region on a tight budget: region pinning costs 1.15x to 1.75x
Pick something else if…
- you're running long-lived servers with volumes and websockets in many regions rather than bursty Python jobs → Fly.io
- you want a conventional web app plus a database deployed from a repo, without rewriting code around a framework's decorators → Railway
- your agents need Windows or macOS sandboxes, or VMs that pause and fork, and you prefer a fixed price per reserved size → Daytona
Gotchas to know before you commit
- Functions are preemptible by default: Modal interrupts and restarts them on the same input. Long jobs need checkpoints, or nonpreemptible=True (client 1.2.3+) at 3x the CPU and memory price.
- Containers stay up for 60 seconds after the last input by default, and that idle time is billed, as is model and image load time. Raising scaledown_window cuts cold starts and raises the bill.
- Sandboxes have a default lifetime of 5 minutes and a maximum of 24 hours. Set timeout (and idle_timeout) explicitly, and use snapshots for anything longer.
- Web endpoints have a 150-second HTTP timeout, after which they return a 303 redirect that breaks CORS requests. The default rate limit is 200 requests a second per function and 2,000 per workspace, after which you get 429s.
- GPU Sandboxes only run on the gVisor runtime, and Docker inside a Sandbox needs the VM runtime. In StarSling's run the two runtimes differed by about 1.5x on the same dependency install.
Modal pricing
A plan fee (Starter $0, Team $250 a month) plus per-second compute: CPU per physical core (2 vCPU), memory per GiB and GPU per second, charged on whichever is higher of what you request and what you use, minus monthly credits. It gets expensive with GPUs kept warm around the clock, with Sandboxes and non-preemptible Functions (3x CPU and memory), and with pinned regions (1.15x to 1.75x).
- $30 of compute a month; 3 seats
- 100 containers and 10 GPUs at once
- 1 TiB a month of egress
- Limit: Web and scheduled functions limited (5 deployed crons); no custom domains
- Limit: Logs kept 1 day; 200 deployed apps
- Limit: Payment method required
- $100 of compute a month; unlimited seats
- 5,000 containers and 50 GPUs at once
- Custom domains, static IP proxy, rollbacks, RBAC, 10 TiB egress
- Limit: Logs kept 30 days; no SSO, audit logs or HIPAA
- CPU $0.0472 per physical core-hour (min 0.125 core); memory $0.0080 per GiB-hour
- GPU per hour: T4 $0.59, L4 $0.80, L40S $1.95, H100 $3.95, B300 $7.10
- Volumes $0.09 / GiB-month after 1 TiB free
- Limit: Sandboxes and non-preemptible Functions: CPU $0.1419 / core-hour, memory $0.0240 / GiB-hour (3x)
- Limit: Pinned region 1.15x (broad) to 1.75x (narrow); egress $0.04 / GiB past the allowance
- Volume discounts, SSO, audit logs, HIPAA, private Slack support
- Committed spend through AWS and GCP marketplaces
- Limit: Contact sales
What it costs in practice
| CPU web endpoint | $0 (inside the credit) A FastAPI endpoint kept warm with one container (min_containers=1), requesting 0.5 physical core and 1 GiB, 730 h: CPU 0.5 × 730 × $0.04716 = $17.21, memory 730 × $0.00799 = $5.83, total $23.05, under Starter's $30 credit. Pin it to one narrow region (1.75x) and it's $40.33, so $10.33 over. Need a custom domain and it's the $250 Team plan, with compute inside its $100 credit. |
|---|---|
| GPU inference job | ~$163 / month A batch inference job on 1 H100 with 4 cores and 32 GiB, 2 h each workday (44 h, including model load, which is billed): GPU 44 × $3.9492 = $173.76, CPU 44 × 4 × $0.04716 = $8.30, memory 44 × 32 × $0.00799 = $11.25, total $193.32 minus the $30 credit. The same GPU kept warm 24/7 would be about $2,883 for the GPU alone. |
| Ten agent sandboxes | ~$304 / month 10 Sandboxes 8 h a day for 22 days = 1,760 h, averaging 1 physical core (2 vCPU) and 2 GiB at Sandbox rates: 1,760 × ($0.14191 + 2 × $0.02401) = $334.29, minus $30. Billing is max(request, usage), so estimate from average use, not peaks; agents that sit idle cost less, busy builds more. |
Estimates in USD from list prices. Your bill depends on usage, region, and discounts.
Health & activity
From modal-labs/modal-client (modal-client, the Apache-2.0 Python SDK and CLI; the platform is closed). Counts cover the last 90 days unless noted.
Downloads
- npm ·
modal5.2M last 30 days - PyPI ·
modal49M last 30 days
Benchmarks
Mastra cold install (StarSling sandbox benchmarks)
Source: StarSling hpc-sandbox-benchmarks, run 37073680030Wall-clock time for a cold dependency install of the Mastra repository on a 4 vCPU / 8 GiB sandbox, median across 12 sandboxes (11 for Modal gVisor) · s, lower is better
- Namespace37.2 s
- Daytona (VM)39.3 s
- Blaxel42 s
- boat44.4 s
- Modal (VM)46.4 s
- Vercel Sandbox59 s
- Modal (gVisor)70.9 s
- E2B72.9 s
How this was measured
Third-party run by StarSling, a CI-runner company that isn't one of the providers ranked. It requests 4 vCPU / 8 GiB / 40 GB disk from every provider and reports medians with cluster-bootstrap intervals; the raw dataset and methodology are public. StarSling marks this run partial (800 of 840 cells). It measures Modal Sandboxes only, not Functions or GPUs. Modal (VM) ranks 4th, statistically tied with boat, Novita, Microsandbox Cloud, Brezel and Vercel Sandbox; Modal (gVisor) ranks 10th of 15. Modal picks the runtime when you don't set one. Eight of 15 providers shown; copied from the leaderboard on 2026-11-15.
Versions: Modal Sandboxes (gVisor and VM runtimes) as of 2026-10-03
Published Oct 3, 2026 · source
Node.js web tooling (StarSling sandbox benchmarks)
Source: StarSling hpc-sandbox-benchmarks, run 37073680030V8 Web Tooling Benchmark throughput on a 4 vCPU / 8 GiB sandbox, median across 5 fresh sandboxes (10 trials) · runs/s, higher is better
- Brezel30.1 runs/s
- boat28.1 runs/s
- Namespace24.9 runs/s
- Daytona (VM)21.5 runs/s
- Modal (VM)15.5 runs/s
- Vercel Sandbox12.7 runs/s
- Modal (gVisor)12.6 runs/s
- E2B11.1 runs/s
How this was measured
Same run and methodology as the table above, using the versioned Phoronix Test Suite profile. Both Modal runtimes rank 7th of 15, statistically tied with Blaxel, run.cloud, Vercel Sandbox, E2B and tama. StarSling requested 4 vCPU, which on Modal's pricing is 2 physical cores. Eight of 15 providers shown; copied from the leaderboard on 2026-11-15.
Versions: Modal Sandboxes (gVisor and VM runtimes) as of 2026-10-03
Published Oct 3, 2026 · source
What the community says
There wasn’t enough discussion in the last 90 days to summarise fairly. Here’s what there was.
On Hacker News · 21 threads, 0 comments mentioning it
- Building Fast Filesystems for VMs11 points · 0 comments · Oct 16, 2026
- >1B tokens/minute/GPU by combining query planner and inference engine7 points · 2 comments · Sep 26, 2026
- Show HN: Compute.cx is simple (modal.com like) interface for on-demand GPUs7 points · 0 comments · Aug 20, 2026
- Modal crosses $1B in Annualized Run Rate and raises $750M Series D4 points · 0 comments · Oct 14, 2026
- GPU Glossary4 points · 0 comments · Sep 27, 2026
Most-reacted new GitHub issues · 22 opened in the window
- Unable to view effective workspace HTTP rate limits in Dashboard or CLI0 reactions · 2 comments · Oct 21, 2026
- Status of Python 3.15 support0 reactions · 2 comments · Oct 2, 2026
Alternatives to Modal
Fly.io
Hosting & DeploymentRun full containers close to users, with real VMs and a global Anycast network.
Railway
Hosting & DeploymentDeploy apps and databases from a dashboard that feels like magic.
Vercel
Hosting & DeploymentFrontend cloud from the creators of Next.js — push to deploy.
Cloudflare Workers
Hosting & DeploymentServerless on a 300+ city edge network, with storage primitives to match.
boat
Hosting & DeploymentPersistent Ubuntu VMs for AI agents, billed per second, running in EU data centres.
Daytona
Hosting & DeploymentSandboxes for AI agents (containers, VMs, Windows, macOS and GPUs), billed per second for what you reserve.
E2B
Hosting & DeploymentOpen-source Firecracker sandboxes for AI agents, billed per second while they run, with pause, resume and fork.
Spotted something wrong or out of date? Flag a correction on GitHub. Health and community data refresh on the 1st and 15th of every month.