# Modal

> gVisor containers by default with a five-minute lifetime, no pause at all, and a CPU unit that may be one or two vCPUs depending on which reading you trust.

Website: https://modal.com  
Guide page: https://botperch.com/providers/modal/  
Checked: 2026-10-28

**Short answer:** One always-on personal agent (2 vCPU / 4 GiB / 20 GiB) costs about $143.71 a month here, with a catch: Sessions end after 24 hours, so an always-on machine has to be restarted by your own code. Modal sandboxes have no stopped state; keeping files needs a Volume or a snapshot. The AI model adds about $14.70 a month on top (GLM 5.3, 30 requests a day at 40k tokens each, median zero-retention price; from $6.84 at the cheapest host). Fits well: High-volume, short-lived code execution: Sandboxes start in about a second and the platform claims over 10,000 creates a second.

Modal Sandboxes are short-lived Linux containers for running untrusted code inside Modal's serverless platform. You create one from Python, JavaScript or Go, run commands over an API, and either let it expire or terminate it.
There is no paused or stopped state. A sandbox runs, then it is finished; local state survives only through a filesystem snapshot, a memory snapshot or a Volume, and every restore produces a new sandbox.
It sits beside Modal's Functions, Inference and Training products on one workspace and one bill.

**Who it is for:** Teams already on Modal, or building high-volume code execution and RL rollouts, who want sandboxes next to their Functions and GPUs.

**Isolation:** gVisor by default, with a KVM-backed VM runtime opt-in for Docker, FUSE or nested cgroups. Every container runs as root. GPU sandboxes are gVisor only. Up to 250 sidecar containers per sandbox give a second boundary for credentials or a proxy.

**Sizes and regions:** No fixed sizes: fractional physical cores (1 core = 2 vCPUs, as documented) and MiB of memory, with a default of 0.125 core and 128 MiB. Sandboxes can burst above the request and are billed on the higher of request and actual use. Disk is a fixed 512 GiB quota, not resizable. The maximum shape is not published. Container regions are selectable at 1.15× (broad) or 1.75× (narrow); GPU sandboxes are preemptible.

## How it charges

- model: Per-second usage on one workspace bill, with no Sandbox-specific plan or fee.
- meter: CPU $0.141912 per core-hour and memory $0.024012 per GiB-hour, billed on the higher of request and actual use. Sandboxes pay the non-preemptible rate, 3× list. Disk is billed as memory at a 20:1 ratio.
- stopped: Nothing, because there is no stopped state. A running sandbox bills its request even when idle; a terminated one bills nothing.
- planFee: Starter is $0 plus compute with $30 a month of credits; Team is $250 plus compute with $100 of credits; Enterprise is custom.
- minimum: A payment method is required to use Modal. Minimum request is 0.125 core and 128 MiB.

Per second on the higher of requested and used CPU and memory, at 3× list for sandboxes; there is no stopped state.
- Modal bills per physical core and documents one core as 2 vCPUs, so a vCPU here is half a core. Battleships prices a whole core as one vCPU, twice this figure. How many CPUs the machine itself reports per core was not tested.
- A payment method is required.
- Egress beyond the plan's included amount is $0.04 per GiB and is not included.

## Monthly cost for each preset workload

- A personal agent that stays on (Hermes, OpenClaw): $143.71 (catch: Sessions end after 24 hours, so an always-on machine has to be restarted by your own code. Modal sandboxes have no stopped state; keeping files needs a Volume or a snapshot.)
- A coding agent for one developer: $46.15 (catch: Modal sandboxes have no stopped state; keeping files needs a Volume or a snapshot.)
- A code interpreter inside your product: $49.32
- A browser agent for a small team: $1,159.80
- Self-hosted n8n for a small team: $143.71 (catch: Sessions end after 24 hours, so an always-on machine has to be restarted by your own code. Modal sandboxes have no stopped state; keeping files needs a Volume or a snapshot.)
- A Discord or Slack bot for one server: $56.86 (catch: Sessions end after 24 hours, so an always-on machine has to be restarted by your own code. Modal sandboxes have no stopped state; keeping files needs a Volume or a snapshot.)
- Claude Code for a team of five: $350.74 (catch: Modal sandboxes have no stopped state; keeping files needs a Volume or a snapshot.)
- A scraper that runs four times a day: $0.00
- Your own remote MCP server: $39.33 (catch: Sessions end after 24 hours, so an always-on machine has to be restarted by your own code. Modal sandboxes have no stopped state; keeping files needs a Volume or a snapshot.)
- A: 1,000 short tasks: $9.66
- B: one always-on box: $317.42 (catch: Sessions end after 24 hours, so an always-on machine has to be restarted by your own code. Modal sandboxes have no stopped state; keeping files needs a Volume or a snapshot.)
- C: three hours a day: $0.00 (catch: Modal sandboxes have no stopped state; keeping files needs a Volume or a snapshot.)

## Fits well

- High-volume, short-lived code execution: Sandboxes start in about a second and the platform claims over 10,000 creates a second.
- A GPU sandbox for inference or training-adjacent work: up to 8 GPUs per container, priced per GPU-second.
- A team already on Modal: sandboxes share the workspace, Images, Volumes and billing with Functions.
- Splitting trust with sidecars: up to 250 extra containers per sandbox for a proxy or credentials.

## Fits badly

- An agent that needs to pause and resume: there is no paused state, and a memory snapshot terminates the source.
- An always-on box: the lifetime cap is 24 hours and a running idle sandbox bills its full request.
- A cheap always-on dev box: $347 a month documented, $555 on the measured CPU reading.
- A client-facing URL: inbound is closed by default and there is no built-in desktop or browser.

## Features

- **Isolation** (partly): gVisor; VM on request. gVisor by default, with a KVM VM runtime opt-in for Docker, FUSE or nested cgroups. Every container runs as root, and GPU sandboxes are gVisor only. Up to 250 sidecars per sandbox give a second boundary. [source](https://modal.com/docs/guide/sandboxes) [docs](https://modal.com/docs/guide/sandboxes#runtimes)
- **Sizes and regions** (partly): No fixed sizes; 1 core = 2 vCPU. Fractional physical cores (1 core = 2 vCPUs as documented) and MiB of memory, default 0.125 core / 128 MiB. Disk is a fixed 512 GiB. The maximum shape is unpublished. Regions are selectable at 1.15× broad and 1.75× narrow. [source](https://modal.com/docs/guide/sandbox-resources) [docs](https://modal.com/docs/guide/sandbox-resources)
- **Lifecycle** (no): No pause; terminate. No paused or stopped state. Terminate sends SIGKILL; a memory snapshot terminates the source and restores a new sandbox within seven days. The nearest thing to a resume is an automatic exit snapshot, which is filesystem only. [source](https://modal.com/docs/guide/sandbox-snapshots) [docs](https://modal.com/docs/guide/sandboxes#timeouts)
- **Snapshots and forks** (partly): Filesystem 30 d; memory 7 d. Filesystem, directory and memory snapshots, plus automatic exit snapshots. Filesystem and exit snapshots last 30 days by default; memory snapshots 7 days and cannot be extended. Fork means several sandboxes from one filesystem image, not a live clone. [source](https://modal.com/docs/guide/sandbox-snapshots) [docs](https://modal.com/docs/guide/sandbox-snapshots)
- **Storage** (partly): 512 GiB; billed as memory. A fixed 512 GiB root filesystem, not resizable, billed by raising the memory request at a 20:1 ratio. Volumes are separate, survive the sandbox, are excluded from snapshots, and cost $0.09/GiB-month after 1 TiB. [source](https://modal.com/docs/guide/sandbox-resources) [docs](https://modal.com/docs/guide/sandbox-files)
- **Idle and waking** (partly): 5 min lifetime; no idle. Default maximum lifetime 5 minutes, up to 24 hours. Idle timeout is off by default and terminates rather than pauses. There is no lifetime-free option; longer work needs snapshots. [source](https://modal.com/docs/guide/sandboxes) [docs](https://modal.com/docs/guide/sandboxes#idle-timeouts)
- **Reaching it** (yes): Connect token. No inbound by default. Expose encrypted, h2 or unencrypted ports; connect tokens are the recommended path for HTTP and WebSockets, and raw TCP is possible. inbound_cidr_allowlist is not enforced on unencrypted tunnels. [source](https://modal.com/docs/guide/sandbox-networking) [docs](https://modal.com/docs/guide/sandbox-networking#forwarding-ports)
- **Custom domains** (yes): Team+, manual. Custom domains for sandbox tunnels are on Team and Enterprise, with a manual setup step: NS records plus a Slack request. [source](https://modal.com/docs/guide/sandbox-networking) [docs](https://modal.com/docs/guide/sandbox-networking#custom-domains)
- **Outbound network** (yes): $0.04/GiB. Open by default, with block-all, CIDR and domain allowlists; DNS leaks past the allowlists. Static IPs come from Proxies on Team and Enterprise. Egress is $0.04/GiB over 1, 10 or 100 TiB by plan. [source](https://modal.com/docs/guide/sandbox-networking) [docs](https://modal.com/docs/guide/sandbox-networking#outbound-access-control)
- **Keys and secrets** (partly): Env vars, or beta proxy. Secrets arrive as environment variables by default. A beta Outbound Policy injects credentials into outbound HTTPS outside the sandbox and is immutable per configuration. OIDC identity tokens are available. [source](https://modal.com/docs/guide/sandbox-secret-injection) [docs](https://modal.com/docs/guide/sandbox-secret-injection)
- **Ways to drive it** (partly): No; SDK. Python, JavaScript and Go SDKs, a CLI, modal shell and a dashboard with per-App metrics. No REST API separate from the SDK surface, no SSH daemon and no control-plane MCP server. [source](https://modal.com/docs/guide/sandboxes) [docs](https://modal.com/docs/guide/sandboxes)
- **Built-in agents** (no): None; SDK. No hosted agent, desktop, browser or computer-use API. The documented use cases are RL rollouts and coding agents, both as SDK code you write. [source](https://modal.com/docs/guide/sandboxes)
- **Teams and accounts** (partly): Environment budgets. Environment budgets on Team and Enterprise stop workloads at the limit. RBAC is Team+, SSO and audit logs are Enterprise. Starter has 3 seats and 100 containers. [source](https://modal.com/docs/guide/budgets) [docs](https://modal.com/docs/guide/workspaces)
- **Billing models** (partly): $0.141912/core-hour. Per second on the higher of request and actual use: CPU $0.141912/core-hour and memory $0.024012/GiB-hour at the non-preemptible sandbox rate, 3× list. Disk is billed as memory at 20:1. [source](https://modal.com/docs/guide/sandbox-resources) [docs](https://modal.com/docs/guide/billing)
- **Trials and free tiers** (partly): $30/month credits. Starter is $0 plus compute with $30 a month of credits; Team is $250 plus compute with $100. A payment method is required to use Modal. [source](https://modal.com/pricing) [docs](https://modal.com/pricing#pricing-plans)
- **The company** (partly): Modal Labs, Inc.; no public SLA. Modal Labs, Inc., Delaware, founded 2021; $750M Series D at $15.75B, over $1.2B raised, 200+ staff. No public SLA; SOC 2 Type II with a 2025 report period; HIPAA Enterprise only. [source](https://modal.com/legal/terms)

## Capabilities

- Its own virtual machine: partly (gVisor by default). The default is a gVisor container, which is not a computer of its own; a true virtual machine with its own kernel is a separate runtime you have to ask for. [source](https://modal.com/docs/guide/sandboxes)
- Root access: yes (always root) [source](https://modal.com/docs/guide/existing-images)
- Docker inside: partly (VM runtime only). Docker needs the VM runtime; the default gVisor sandbox cannot run it. [source](https://modal.com/docs/guide/sandboxes)
- Nested virtualisation: partly (Enterprise plan only). Nested virtual machines are an Enterprise-plan option that must be switched on when the sandbox is created. [source](https://modal.com/docs/guide/sandboxes)
- Your own image: yes (any registry image) [source](https://modal.com/docs/guide/existing-images)
- Any size you like: yes (any cores and MiB) [source](https://modal.com/docs/guide/sandbox-resources)
- Large machines: yes (no published ceiling) [source](https://modal.com/docs/guide/resources)
- Resize while running: no (fixed at creation). Resources are fixed when the sandbox is created; changing them means starting a new one. [source](https://modal.com/docs/guide/sandbox-resources)
- GPUs: yes (up to 8 GPUs) [source](https://modal.com/docs/guide/gpu)
- Choose the region: yes (broad or narrow regions) [source](https://modal.com/docs/guide/region-selection)
- Runs in the EU: yes (eu regions) [source](https://modal.com/docs/guide/data-residency)
- Pause keeps memory: no [source](https://modal.com/docs/guide/sandbox-snapshots)
- Pre-started pools: partly. You have to build and run the pool yourself; there is no setting that keeps machines waiting. [source](https://modal.com/docs/guide/sandboxes)
- Starts in under a second: yes (Sub-second) [source](https://modal.com/)
- Snapshots of files: yes (30 days default) [source](https://modal.com/docs/guide/sandbox-snapshots)
- Snapshots with memory: partly (Experimental; 7 days). Memory snapshots are still labelled experimental and are deleted after seven days, which cannot be extended. [source](https://modal.com/docs/guide/sandbox-snapshots)
- Copy a running machine: no [source](https://modal.com/docs/guide/sandbox-snapshots)
- Pick an older snapshot: yes [source](https://modal.com/docs/guide/sandbox-snapshots)
- Reusable templates: yes [source](https://modal.com/docs/guide/sandbox-snapshots)
- Automatic backups: no [source](https://modal.com/docs/guide/sandbox-snapshots)
- Files survive a stop: no [source](https://modal.com/docs/guide/sandboxes)
- Separate volumes: yes (Up to 1 TiB free) [source](https://modal.com/docs/guide/volumes)
- One volume, several machines: yes (Hundreds of writers). Two machines writing the same file means the last write wins. [source](https://modal.com/docs/guide/volumes)
- Mount outside storage: yes [source](https://modal.com/docs/guide/cloud-bucket-mounts)
- Large disk: yes (512 GiB) [source](https://modal.com/docs/guide/sandbox-resources)
- Can stay on indefinitely: partly (24 h maximum). No sandbox can run longer than 24 hours, however busy it is. [source](https://modal.com/docs/guide/sandboxes)
- Choose the idle timeout: partly. You can set an idle timeout, but reaching it ends the machine rather than pausing it. [source](https://modal.com/docs/guide/sandboxes)
- Wakes on a request: no [source](https://modal.com/docs/guide/sandboxes)
- Scheduled runs: yes [source](https://modal.com/docs/guide/cron)
- Public link to a port: partly (Open raw port only). A normal web port needs a connect token; only a port exposed as raw traffic is open to anyone. [source](https://modal.com/docs/guide/sandbox-networking)
- Private link: yes (Connect token) [source](https://modal.com/docs/guide/sandbox-networking)
- Real SSH: partly (Install it yourself). The machine has no SSH server; you have to install one and open a port for it. [source](https://modal.com/docs/guide/sandbox-networking)
- Terminal in the browser: not-published [source](https://modal.com/docs/guide/sandbox-networking)
- Tunnel to your computer: not-published [source](https://modal.com/docs/guide/sandbox-networking)
- Non-web ports: yes (Raw tunnels) [source](https://modal.com/docs/guide/sandbox-networking)
- Your own domain: partly (Team+, manual). Only Team and Enterprise plans get it, and you must move the domain's name servers and ask support to finish setup. [source](https://modal.com/docs/guide/sandbox-networking)
- Automatic HTTPS: partly (Team+, manual). Certificates come with the domain, but only on Team and Enterprise plans and after a manual setup step. [source](https://modal.com/docs/guide/sandbox-networking)
- Outbound data included: yes (1 TiB, then $0.04) [source](https://modal.com/docs/guide/network-egress-billing)
- Allow only some sites: yes (Domain or address list) [source](https://modal.com/docs/guide/sandbox-networking)
- Turn the internet off: yes (block_network) [source](https://modal.com/docs/guide/sandbox-networking)
- Fixed outgoing IP: partly (Team+, 5 addresses). Only Team and Enterprise plans get it, and each account can create one or three gateways holding up to five addresses each. [source](https://modal.com/docs/guide/proxy-ips)
- Stored secrets: yes (Inline secrets) [source](https://modal.com/docs/guide/sandboxes)
- Secrets the agent cannot read: partly (Beta). The feature that hides keys is in beta and cannot be changed once set up. [source](https://modal.com/docs/guide/sandbox-secret-injection)
- Limited API keys: partly (Workspace role). Permissions come from a person's workspace role, not from a key that can only do one thing. [source](https://modal.com/docs/guide/rbac)
- Create from the website: no [source](https://modal.com/docs/guide/sandboxes)
- Command-line tool: yes [source](https://modal.com/docs/cli/latest/shell)
- Python SDK: yes [source](https://modal.com/docs/guide/sandboxes)
- TypeScript SDK: yes [source](https://modal.com/docs/guide/sandboxes)
- Documented HTTP API: no. The documented interface is the SDK and its gRPC connection; there is no separate HTTP API to call. [source](https://modal.com/docs/guide/sandboxes)
- MCP server: no. The only MCP guidance is how to deploy someone else's MCP server inside Modal. [source](https://modal.com/docs/examples/mcp_server_stateless.md)
- Interactive terminal over the API: yes [source](https://modal.com/docs/cli/latest/shell)
- Files over the API: yes [source](https://modal.com/docs/guide/sandbox-files)
- Coding agents preinstalled: no. Nothing is preinstalled and there is no agent API; the agent is code you run. [source](https://modal.com/docs/guide/sandboxes)
- Send it a prompt: no. Modal sells the computer, not an agent loop; the docs show SDK code you write. [source](https://modal.com/docs/guide/sandboxes)
- One-click Hermes: no. Hermes lists Modal as a terminal backend, not as a one-click host. [source](https://modal.com/docs/guide/sandboxes)
- One-click OpenClaw: no. No OpenClaw template or guide is published. [source](https://modal.com/docs/guide/sandboxes)
- Browser built in: no. No browser, desktop or computer-use API is documented; the sandbox is a headless container. [source](https://modal.com/docs/guide/sandboxes)
- Desktop for computer use: no. No desktop, VNC or computer-use API is documented. [source](https://modal.com/docs/guide/sandboxes)
- Runs other platforms' agents: yes [source](https://modal.com/docs/examples/cursor.md)
- Team workspace: yes [source](https://modal.com/docs/guide/rbac)
- Roles and permissions: partly (Team plan and above). Role-based access starts on the Team plan; the free-to-start Starter plan has no roles. [source](https://modal.com/docs/guide/rbac)
- Single sign-on: partly. Okta SSO is listed with audit logs and HIPAA on the Enterprise plan. [source](https://modal.com/pricing)
- Hard spending cap: yes [source](https://modal.com/docs/guide/budgets)
- Usage alerts: not-published [source](https://modal.com/docs/guide/budgets)
- Audit log: partly. Audit logs are listed with SSO and HIPAA on the Enterprise plan. [source](https://modal.com/pricing)
- Billed per second: yes (per second) [source](https://modal.com/docs/guide/sandbox-resources)
- CPU billed only while working: no (request or use, whichever is higher). A machine that reserves more than it uses pays for the reservation. [source](https://modal.com/docs/guide/sandbox-resources)
- Paused costs only storage: no (no pause). There is no pause: a sandbox bills until it is shut down, and its saved copy is stored separately. [source](https://modal.com/docs/guide/sandbox-resources)
- No monthly fee: yes (Starter $0) [source](https://modal.com/pricing)
- Flat monthly price: no (request or use). The bill follows the higher of what you asked for and what you used. [source](https://modal.com/docs/guide/sandbox-resources)
- Ongoing free tier: partly ($30 a month, card needed). Thirty dollars of free compute returns each month, but a payment method must be on file before anything runs. [source](https://modal.com/pricing)
- Free starting credit: yes ($30 a month) [source](https://modal.com/pricing)
- Try without a card: no (card required). A payment method must be on file before you can use Modal at all. [source](https://modal.com/docs/guide/billing)
- Public status page: yes [source](https://modal.com/docs/cli/latest/shell)
- Uptime promise (SLA): no. There is no public SLA; one is attached to the order only if you bought a plan that includes it. [source](https://modal.com/legal/terms)
- SOC 2 report: yes (Type II) [source](https://modal.com/legal/terms)
- Data processing agreement: yes [source](https://modal.com/legal/terms)
- Open source or self-hostable: no. The client libraries are open source; the platform is not. [source](https://modal.com/legal/terms)

## Usability

- Dashboard: An operator console: a Sandboxes tab per App with CPU, memory, pressure and exit-reason charts, plus billing and invoices.
- Without code: No. Every creation path is SDK code; modal shell attaches to a sandbox that already exists.
- Signup: A payment method is required to use Modal. Starter is $0 plus compute with 3 seats and $30 a month of credits.
- Docs: Extensive docs with llms.txt, Python, JavaScript and Go SDKs, and a CLI. Support is community Slack on all plans, a private Slack and embedded engineers on Enterprise; no response times published.
- Trips people up: The default lifetime is five minutes.
- Trips people up: An idle sandbox is not free: it bills max(request, actual).
- Trips people up: Snapshot means three different things; only the memory one keeps processes, and it kills the source.
- Trips people up: Disk is billed as memory at 20:1.
- Trips people up: Region pinning adds 15–75%.

## Company

- Legal entity: Modal Labs, Inc., a Delaware corporation. [source](https://modal.com/legal/terms)
- Founded and leadership: 2021, by Erik Bernhardsson (CEO) and Akshat Bubna (CTO). [source](https://modal.com/blog/1-billion-annualized-run-rate-series-d)
- Funding: $750M Series D at a $15.75B post-money valuation in October 2026, led by Accel; over $1.2B raised in total. [source](https://modal.com/blog/1-billion-annualized-run-rate-series-d)
- Headcount: 200+, company-stated in October 2026. TechCrunch estimated about 150 three weeks earlier. [source](https://modal.com/blog/1-billion-annualized-run-rate-series-d)
- Status and SLA: Sandboxes showed 100% over 30 days, 99.983% over 60 and 99.989% over 90. No public SLA document; the SLA is attached to a Service Order. [source](https://modal.com/legal/terms)
- Certification: SOC 2 Type II, with the current report covering September–December 2025. HIPAA is Enterprise only. [source](https://modal.com/legal/terms)
- Price changes: No rate-change clause and no published notice period for list prices. [source](https://modal.com/legal/terms)

## Caveats

- **The pricing page says you never pay for idle, and the sandbox meter says you do** (contradiction): The headline describes scale-to-zero Functions. A sandbox with no active command bills its full request until it is terminated.
- **Sandbox disk cannot be increased, except where a 3 TiB maximum is published** (contradiction): The sandbox resources page says disk cannot be increased; the resources guide documents an ephemeral_disk parameter with a 3.0 TiB maximum. The most likely reading is that the parameter belongs to Functions, so 512 GiB is the sandbox ceiling.
- **An EU region does not keep snapshots in the EU** (contradiction): Sandboxes can be pinned to eu at 1.15×, but application logs and snapshots you create are stored in the United States whatever region the container runs in.
- **One core is two vCPUs in the docs and one guest CPU in a third-party measurement** (contradiction): Modal prices CPU per physical core and equates a core to two vCPUs. A third-party benchmark reports that cpu=N gives a guest that sees N CPUs. The two readings differ by 1.6× on every cost estimate.
- **There is no pause** (open): A sandbox runs or it is finished. The nearest equivalent is a memory snapshot, which terminates the source, restores into a new sandbox and expires after seven days.
- **Memory snapshots are alpha and picky** (open): They cannot run with GPUs, restore only on the same instance type, cannot be taken while a command runs, and cannot have their seven-day expiry extended.
- **Snapshot storage has no published price** (open): Filesystem, directory, memory and exit snapshots all bill as storage, and none of the pricing page, the snapshots guide or the billing guide gives a rate.
- **No SSH and no control-plane MCP server** (open): modal shell is a CLI session, not an SSH daemon, and the only MCP material in the docs is an example of running an MCP server inside a sandbox.

## Sources

- [Sandboxes guide](https://modal.com/docs/guide/sandboxes)
- [Sandbox resources](https://modal.com/docs/guide/sandbox-resources)
- [Snapshots](https://modal.com/docs/guide/sandbox-snapshots)
- [Sandbox networking](https://modal.com/docs/guide/sandbox-networking)
- [Pricing](https://modal.com/pricing)
- [Billing](https://modal.com/docs/guide/billing)
- [Data residency](https://modal.com/docs/guide/data-residency)
- [Terms](https://modal.com/legal/terms)
