# Modal

The platform for production AI — cloud infrastructure for teams that develop, train, and serve AI applications at scale.

Source: https://wheredoirunthis.com/products/modal · JSON: https://wheredoirunthis.com/api/products/modal · Read on 2026-10-06

## At a glance

- Type: Serverless
- Kind: Hosted
- Isolation: Kata / gVisor
- Free tier: Not documented
- Starting price: $250/mo
- GPU: Yes
- Regions: 9
- Coverage: 24 of 57 assessed capabilities supported · 4 not assessed
- Agent readiness: read 11 of 11 signals, drive 9 of 11 signals

## Links

- Homepage: https://modal.com/
- Docs: https://modal.com/docs
- Pricing: https://modal.com/pricing

## Pricing

- Model: usage (per-second CPU/mem/GPU) + plan tier (seats + monthly credits + features); Sandbox/Notebook compute billed at 3x standard
- Unit: per-second (CPU core-sec, GiB-sec, GPU-sec) + per-GiB-month storage
- Free tier: $30/mo free compute credits on Starter (+ 1 TiB/mo egress + 1 TiB-mo storage free); startup + academic credit grants (up to $10k)

| Tier | Price | Includes | Notes |
| --- | --- | --- | --- |
| Starter | $0/mo + compute; $30/mo free credits | $30/mo compute credits · 3 workspace seats · 100 containers + 10 GPU concurrency · 200 deployed apps · 5 deployed crons · 1-day log retention · region selection · 1 TiB/mo free network egress · SOC 2; $30/mo of free compute credits (dollar-denominated, not unit quotas); 3 seats; 100 concurrent containers + 10 GPU concurrency; 200 deployed apps; 5 crons; 1 TiB/mo egress + 1 TiB-mo Volume storage free. |  [source](https://modal.com/pricing) |
| Team | $250/mo + compute; $100/mo free credits | $100/mo compute credits · unlimited seats · 5000 containers + 50 GPU concurrency · 1000 deployed apps · unlimited crons · 30-day logs · custom domains · Static IP proxy · RBAC · 3-version deployment rollbacks · environment-level budgets · 10 TiB/mo free egress; $100/mo compute credits; unlimited seats; 5000 concurrent containers (was 1000 in 2026-07) + 50 GPU concurrency; 1000 apps; unlimited scheduled functions; custom domains; Static IP proxy; RBAC; rollbacks (3 versions); 10 TiB/mo egress free. |  [source](https://modal.com/pricing) |
| Enterprise | Custom | Volume-based discounts · unlimited seats · higher GPU concurrency · audit logs · Okta/SAML SSO · HIPAA BAA · private-Slack support · embedded ML engineering · AWS/GCP marketplace committed spend · 100 TiB/mo free egress; Contact-sales tier; custom containers/GPU concurrency/credits/log retention. | contact us — no public price [source](https://modal.com/pricing) |

- Overages: GPU per-second: T4 $0.000164, L4 $0.000222, A10 $0.000306, L40S $0.000542, A100-40 $0.000583, A100-80 $0.000694, RTX PRO 6000 $0.000842, H100 $0.001097, H200 $0.001261, B200 $0.001736, B300 $0.001972. CPU $0.0000131/core/s (~$0.0472/core-hr, min 0.125 core), memory $0.00000222/GiB/s. Sandbox + Notebook compute = 3x (CPU $0.00003942/core/s, mem $0.00000667/GiB/s; GPU at standard). Volumes $0.09/GiB-mo (1 TiB/mo free). Network egress $0.04/GiB beyond the plan allotment. Region selection 1.15x (broad) / 1.75x (narrow); non-preemptible 3x. Shared Endpoints billed per token at rates shown in the dashboard; plan credits do NOT cover them.
- Card required: Not documented
- Source: https://modal.com/pricing

## Runtime

- **GPU & accelerators**: Yes — "Per-second GPU fleet, unchanged since 2026-07: B300 ($0.001972/s, top SKU), B200, H200 SXM, H100 SXM5, RTX PRO 6000, A100 (80/40 GB), L40S, A10, L4, T4. No reservations; scale out then to zero. GPU Sandboxes are gVisor-runtime only." [source](https://modal.com/pricing%20(2026-10-06)) (confidence: high)
- **BYOC (Bring your own cloud)**: No — "Hosted multi-cloud pool (AWS/GCP/OCI) — no documented BYOC-into-your-own-account flow; you run on Modal's infra. Region selection is offered, BYOC is not." (source: pricing/docs) (confidence: medium)
- **Secrets management**: Yes — "Modal Secrets (unlimited on all plans) injected into Functions/Sandboxes as env vars; Sandbox Secret Injection (Beta) keeps keys OUT of the Sandbox entirely ('without the API key ever being visible inside the Sandbox'); `include_oidc_identity_token=True` injects a MODAL_IDENTITY_TOKEN OIDC token for keyless cloud auth." [source](https://modal.com/docs/guide/secrets%20+%20https://modal.com/docs/guide/sandbox-secret-injection) (confidence: high)
- **Storage options**: Volumes (distributed FS) + cloud bucket mounts (BYO); $0.09/GiB-mo (1 TiB/mo free); ephemeral container FS otherwise — "Volumes (v1 + v2; $0.09/GiB-mo, 1 TiB/mo free) + cloud bucket mounts (BYO S3/R2/GCS); Sandbox filesystem/directory snapshots are stored Images. No Modal-branded object store." [source](https://modal.com/pricing) (confidence: high)
- **Supported workloads**: ai-agent-sandboxes, llm-inference, model-inference-endpoints, training-finetuning, batch, notebooks, code-execution, web-servers — "Products nav: Inference (Shared/Dedicated Endpoints + self-deployed vLLM etc.), Sandboxes ('Isolated environments for coding agents, RL rollouts, and untrusted code'), Training; docs add batch, Notebooks, Modal Servers (`@app.server()`, low-latency HTTP), Sandbox Sidecars (Beta) for agent-harness/tool separation." [source](https://modal.com/%20+%20https://modal.com/docs%20(2026-10-06)) (confidence: high)
- **Persistence**: ephemeral containers + persistent Volumes (v1/v2) / cloud bucket mounts; Sandbox filesystem, directory AND memory snapshots (restorable, TTL'd) — "Containers are ephemeral; durable state via Volumes (v2 is HIPAA-scoped), cloud bucket mounts (BYO S3/R2/GCS), Dicts/Queues. Sandboxes persist state via Filesystem Snapshots (Images, 30-day TTL default, opt-out), Directory Snapshots (mount into another Sandbox) and Memory Snapshots (full memory+FS state, 7-day expiry, 'cannot currently be extended')." [source](https://modal.com/docs/guide/sandbox-snapshots%20+%20https://modal.com/docs/guide/volumes) (confidence: high)
- **Data jurisdiction**: region selection across 20+ selectors — broad us / eu / ap (1.15x) and narrow us-east/central/south/west, eu-west/north/south, ap-northeast/southeast/south/melbourne, jp, au, uk, ca, me, sa, af, mx (1.75x); default input routing via us-east (Virginia, USA); Shared Endpoints route via us-west — "'Modal runs containers globally across multiple different clouds. By default, all inputs ... are routed through our servers in Virginia, USA (us-east)'. `region=` on functions and Sandboxes; broad 1.15x / narrow 1.75x multiplier; 'more granular region definitions? Contact sales'." [source](https://modal.com/docs/guide/region-selection%20(2026-10-06)) (confidence: high)
- **Resource limits & quotas**: Starter: 100 containers + 10 GPU concurrency, 3 seats, 200 deployed apps, 5 crons, 1-day logs; Team: 5000 containers + 50 GPU concurrency, unlimited seats, 1000 apps, 30-day logs, 3 rollback versions; Enterprise custom. Workspace rate limit 200 Function calls/HTTP req per s (5s burst) -> 429; web request bodies <= 4 GiB; Shared Endpoints have per-model concurrency caps (429). Memory snapshots expire after 7 days. — "Pricing compare table publishes the per-plan caps (Team containers raised to 5000 from the 1000 seen 2026-07). 'Each workspace on Modal has a rate limit on total operations. For a new account, this is set to 200 Function calls or HTTP requests per second, with a burst multiplier of 5 seconds ... excess requests will return a 429'." [source](https://modal.com/pricing%20+%20https://modal.com/docs/guide/webhook-urls%20+%20https://modal.com/docs/guide/shared-endpoints%20(2026-10-06)) (confidence: high)
- **SDK languages**: python, javascript, go — "Python is the first-class control-plane SDK (decorators, no YAML/Dockerfile). JavaScript (npm `modal`) and Go SDKs are documented as Beta ('JavaScript/Go SDKs (Beta)'), covering Sandboxes, Volumes, Functions, Sidecars (`SidecarContainer`) — Sandbox creation with `runtime: "vm"` is shown in JS too." [source](https://modal.com/docs/guide/sdk-javascript-go%20+%20llms-full%20(2026-10-06)) (confidence: high)
- **Network & egress controls**: Yes — "Sandbox network controls: `block_network=True` (drop all outbound), `outbound_cidr_allowlist`, `outbound_domain_allowlist` (additive), `inbound_cidr_allowlist` (tunnels + connect tokens), updatable on a running Sandbox; experimental `proxy_traffic_via_sidecar` for HTTPS inspection; Outbound Policy (Beta) header injection via a Modal-attached SNI proxy. Team+ plans add a Static IP proxy for Functions. (Container-to-container reachability = i6pn, scored under private-networking.)" [source](https://modal.com/docs/guide/sandbox-networking%20+%20https://modal.com/docs/guide/sandbox-secret-injection) (confidence: high)
- **Snapshots & forks**: Yes — "Three snapshot kinds for Sandboxes: Filesystem Snapshots (+ 'Forking' — start multiple Sandboxes from the same snapshot), Directory Snapshots, and Memory Snapshots ('copies of a Sandbox's entire state, both in memory and on the filesystem ... All running processes will still be running'). Function Memory Snapshots (CPU GA, GPU alpha) cut cold starts 3-10x." [source](https://modal.com/docs/guide/sandbox-snapshots%20+%20https://modal.com/docs/guide/memory-snapshots) (confidence: high)
- **Deployment methods**: cli, sdk — "`modal` CLI + client SDK decorators (@app.function, @app.cls); deploy via `modal deploy`. Not git-push. (deploy_interface controlled vocab: cli + sdk.)" [source](https://modal.com/docs) (confidence: high)
- **Isolation**: Kata / gVisor — "PRIMARY = gVisor: 'Compute jobs at Modal are containerized and virtualized using gVisor ... Sandboxes may also run on Modal's secure VM runtime.' MIXED ISOLATION (kinds/hosted.md rule — single-valued enum, best-evidenced primary): Sandboxes offer two runtimes — `runtime="gvisor"` ('strong isolation and is suitable for most workloads') or `runtime="vm"` ('run the Sandbox in a virtual machine with its own Linux kernel' — Docker-in-Sandbox, FUSE, nested cgroups; nested virtualization on Team/Enterprise by request). GPU Sandboxes are gVisor-only; Functions are gVisor. So the per-VM-kernel option now exists as a per-Sandbox choice; the fleet default and the Functions substrate remain gVisor syscall interception." [source](https://modal.com/docs/guide/security%20+%20https://modal.com/docs/guide/sandboxes#runtimes%20(2026-10-06)) (confidence: high)

## Capabilities

### AI & agents

| Capability | Status | Evidence |
| --- | --- | --- |
| Agent skills | Supported | "Modal provides a skill (py/modal/skills/modal/SKILL.md) that helps coding agents work most effectively with the platform. `modal skills install # [--claude] [--global]` / `modal skills update`; also installable via `npx skills`. First-party, installable agent skill." [source](https://modal.com/docs/guide/skills%20(llms-full%20%C2%A7Install%20agent%20skills)%20+%20https://www.skills.sh/modal-labs/modal-client/modal) |
| AI app builder | Not supported | "No prompt-to-app builder (it is code-first infrastructure)." [source](https://modal.com/docs) |
| Autonomous QA agent | Not supported | "No first-party autonomous QA/testing agent." [source](https://modal.com/docs) |
| Built-in coding agent | Not supported | "Ships no first-party coding agent — agents run ON Modal." [source](https://modal.com/docs) |
| BYOK for LLMs | Not applicable | "Not an LLM-gateway product; BYOK does not apply (you bring your own keys as Secrets used in code)." [source](https://modal.com/docs) |
| Credential-injection proxy | Supported | "Sandbox Secret Injection (Beta/experimental): 'An Outbound Policy lets a Sandbox call external HTTPS APIs that require authentication without the API key ever being visible inside the Sandbox ... declaring headers replacements which are injected into outbound HTTPS requests to given domains. This replacement happens outside the Sandbox so the secret never appears in the Sandbox's environment.' Implemented by a Modal-attached SNI/TLS-terminating proxy (HTTPS/443 only). A DIY sidecar credential-proxy example also exists." [source](https://modal.com/docs/guide/sandbox-secret-injection) |
| LLM gateway | Not supported | "Hosts inference workloads but is not a multi-provider LLM gateway/router." [source](https://modal.com/docs) |
| MCP client | Not supported | "No first-party MCP client." [source](https://modal.com/docs) |
| MCP-server hosting | Supported | "Documented pattern: 'Deploy a remote, stateless MCP server on Modal with FastMCP' — run/host MCP servers as a workload behind a web endpoint." [source](https://modal.com/docs%20(examples)) |
| MCP server | Not supported | "No Modal-owned MCP control server — the 'MCP server' references are customers DEPLOYING MCP servers ON Modal (scored under mcp-hosting), not Modal exposing one. /.well-known/mcp 404." [source](https://modal.com/docs) |
| Model inference API (first-party) | Supported | "Shared Endpoints serve a subset of models in the Modal Library from Modal-managed pools ... Modal manages the hardware and autoscaling, and usage is billed per token. Callable through the OpenAI-compatible Chat Completions and Responses APIs or the Anthropic-compatible Messages API (embeddings via the OpenAI Embeddings API). Library lists 46 model pages (DeepSeek V4, Qwen3.5/3.6, Kimi K2.6/K3, gpt-oss-120b, Gemma 4, Nemotron 3). Dedicated Endpoints serve custom HF weights." [source](https://modal.com/docs/guide/shared-endpoints%20+%20https://modal.com/library) |
| Preinstalled coding agent | Not assessed |  |

### Networking & delivery

| Capability | Status | Evidence |
| --- | --- | --- |
| Automatic HTTPS | Supported | "Web endpoints (@modal.web_server / @modal.asgi_app) and Tunnels get automatic HTTPS URLs." [source](https://modal.com/docs) |
| Custom domains | Supported | "Custom domains: Not included (Starter) / Included (Team, Enterprise); wildcard domains supported; 'Sandbox custom domains work differently ... must currently be set up manually by Modal'." [source](https://modal.com/pricing%20+%20https://modal.com/docs/guide/webhook-urls#custom-domains) |
| Direct public IPv6 | Not supported | "i6pn assigns PRIVATE IPv6 (fdaa::/16) for container-to-container traffic, not per-instance PUBLIC IPv6 for raw TCP/UDP. Public ingress is via managed HTTPS endpoints / Tunnels." [source](https://modal.com/docs) |
| Edge KV store | Not applicable | "Not an edge/PoP runtime — no edge KV primitive. Category-wrong for a serverless-compute platform." [source](https://modal.com/docs) |
| Egress controls | Supported | "block_network=True drops all outbound; outbound_cidr_allowlist / outbound_domain_allowlist (additive) restrict destinations; inbound_cidr_allowlist restricts tunnel/connect-token sources; policies updatable on a running Sandbox; experimental proxy_traffic_via_sidecar for HTTPS inspection. Team+ Static IP proxy for Functions." [source](https://modal.com/docs/guide/sandbox-networking) |
| Email send / receive | Not supported | "No platform email send/receive primitive (you'd build it in function code)." [source](https://modal.com/docs) |
| Public preview URLs | Partially supported | "Web-endpoint / function URLs are shareable, but there is no git-branch preview-environment primitive." [source](https://modal.com/docs) |
| Private networking | Supported | "i6pn (IPv6 private networking) is Modal's private container-to-container networking solution — clusters of containers send traffic to each other over a 50 Gbps private IPv6 network (fdaa::/16 per-workspace subnet)." [source](https://modal.com/docs/guide/private-networking) |
| Built-in reverse proxy | Supported | "Platform routes external traffic to web endpoints; Tunnels expose ports; static-IP Proxies route egress." [source](https://modal.com/docs) |

### Organisation & security

| Capability | Status | Evidence |
| --- | --- | --- |
| Built-in auth | Partially supported | "Web endpoints support OIDC token authentication + proxy-auth tokens — auth for your endpoints, not full auth-as-a-service/IAM." [source](https://modal.com/docs) |
| BYOC | Not supported | "Hosted multi-cloud pool; no documented BYOC-into-your-own-account flow." [source](https://modal.com/docs) |
| Deploy into customers' VPCs | Not assessed |  |
| Secrets management | Supported | "Secrets: Unlimited on every plan; modal.Secret injected into Functions/Sandboxes; plus OIDC identity tokens (include_oidc_identity_token=True) and the Beta Outbound-Policy injection that keeps keys outside the Sandbox." [source](https://modal.com/pricing%20+%20https://modal.com/docs/guide/secrets) |
| Self-host / OSS core | Not supported | "Closed hosted platform — only an OSS client library, no self-hostable server core." [source](https://modal.com/) |
| Sharing | Partially supported | "Notebooks have real-time collaboration + public/unlisted view-or-run share links; web-endpoint URLs are shareable — but no general share-a-running-workload-by-link primitive." [source](https://modal.com/docs) |
| SSO / SAML | Partially supported | "SSO: Not included (Starter/Team) / Included (Enterprise) — 'Audit logs, Okta SSO, and HIPAA' on Enterprise; audit event `workspace.update_idp` = 'A workspace's SAML identity provider configuration was changed'. Enterprise-only -> partial." [source](https://modal.com/pricing) |
| Teams | Supported | "Workspaces with seats (Starter up to 3, Team/Enterprise unlimited), 'Sharing and collaboration: Included' on all plans, RBAC (Team+: tokens scoped to Environments), audit logs (Enterprise)." [source](https://modal.com/pricing) |
| Workload identity | Not assessed |  |

### Developer access

| Capability | Status | Evidence |
| --- | --- | --- |
| CLI | Supported | "Official `modal` CLI (run/deploy/shell/token)." [source](https://modal.com/docs) |
| E2B-compatible API | Not supported | "No E2B-compatibility claim anywhere on the public surface (the only 'e2b' strings are commit hashes). Modal's Sandbox API is its own (Python/JS/Go SDKs)." [source](https://modal.com/llms-full.txt) |
| Filesystem API | Supported | "Sandboxes expose filesystem operations + process exec over the SDK in Python/JS/Go (`sb.exec([...])`, file read/write) — remote file/process ops without SSH." [source](https://modal.com/docs%20(sandbox%20filesystem)) |
| Git deploy | Not supported | "Deploy is CLI/decorator-driven (`modal deploy`), not git-push-to-deploy." [source](https://modal.com/docs) |
| HTTP data API | Not applicable | "No stored data plane to query over HTTP — category-wrong for a compute platform (Dicts/Queues are code-level primitives, not an HTTP data API)." [source](https://modal.com/docs) |
| OpenAPI spec | Not supported | "No published OpenAPI/Swagger spec (/openapi.json 404). Interface is the client SDK." [source](https://modal.com/openapi.json) |
| Private container registry | Not supported | "Builds images from Python and can PULL from your private registry, but does not HOST a private registry." [source](https://modal.com/docs) |
| Public API | Supported | "Documented programmatic API via the Python SDK + a polyglot Sandboxes API (Python/JS/Go); CLI over the same control plane." [source](https://modal.com/docs) |
| SDK | Supported | "First-class Python SDK (decorators); JavaScript/TypeScript + Go SDKs for Sandboxes." [source](https://modal.com/docs) |
| SSH access | Partially supported | "Interactive shell via `modal shell` + PTY `.exec()` into Sandboxes; native sshd not provided — SSH shown only as a DIY tunnel example (~/.ssh/id_rsa)." [source](https://modal.com/docs) |

### Compute & storage

| Capability | Status | Evidence |
| --- | --- | --- |
| Cloud-init / ignition config | Not applicable | "Not a raw-VM launch model — image/environment is declared in Python (`modal.Image`), not via cloud-init / ignition user-data. Category-wrong for a container/decorator platform." [source](https://modal.com/docs) |
| Desktop / computer-use sandbox | Not supported | "Headless compute — no virtual-desktop / computer-use (noVNC/GUI) sandbox surface." [source](https://modal.com/docs) |
| GPU compute | Supported | "B300 / B200 / H200 / H100 / RTX PRO 6000 / A100 (80/40) / L40S / A10 / L4 / T4, per-second billing." [source](https://modal.com/pricing) |
| Live-state (memory) snapshots | Supported | "Sandbox memory snapshots are copies of a Sandbox's entire state, both in memory and on the filesystem. These Snapshots can be restored later to create a new Sandbox, which is an exact clone of the original Sandbox ... All running processes will still be running, in the same state as when they were snapshotted. (Expire 7 days after creation.) Function Memory Snapshots (CPU GA / GPU alpha) restore pre-initialised state for 3-10x faster cold starts." [source](https://modal.com/docs/guide/sandbox-snapshots#memory-snapshots) |
| Multi-region | Supported | "region= on Functions and Sandboxes across broad (us, eu, ap @1.15x) and narrow selectors (us-east/central/south/west, eu-west/north/south, ap-northeast/southeast/south/melbourne, jp, au, uk, ca, me, sa, af, mx @1.75x). Multi-cloud pool; default routing via us-east." [source](https://modal.com/docs/guide/region-selection) |
| Object storage | Not supported | "Modal MOUNTS your own cloud buckets (S3/R2/GCS via Cloud Bucket Mounts) — it does not PROVIDE a first-party managed object store/bucket product to your workloads." [source](https://modal.com/docs%20(cloud%20bucket%20mounts)) |
| Persistent disk | Supported | "Volumes (distributed persistent filesystem) + cloud bucket mounts persist across runs." [source](https://modal.com/docs) |
| Sandbox templates / custom images | Supported | "modal.Image builds reusable images from a base / Dockerfile / registry (`Image.debian_slim()`, `from_registry`, `add_local_dir`) used as the Sandbox base you fork instances from; filesystem/memory snapshots reused as templates." [source](https://modal.com/docs%20(images)) |
| Scale to zero | Supported | "Serverless — scale to 1000+ GPUs then to zero; zero-idle billing (per-second, no reserved capacity)." [source](https://modal.com/) |
| Selectable isolation runtime | Not assessed |  |
| Snapshots / forking | Supported | "Memory Snapshots (container + GPU state) + Directory Snapshots (snapshot a dir, mount into another sandbox) + sandbox fork." [source](https://modal.com/docs) |

### Data

| Capability | Status | Evidence |
| --- | --- | --- |
| Database branching | Not applicable | "Not a data layer — no managed database, so DB-branching cannot apply (category-wrong for a compute platform)." [source](https://modal.com/docs) |
| Ephemeral instant DB (no-signup) | Not applicable | "No database product — no claimable/no-signup instant DB. Category-wrong for a compute platform." [source](https://modal.com/docs) |
| First-party database | Partially supported | "Distributed Dicts (KV-ish) + Queues as primitives; no managed relational/SQL database offered." [source](https://modal.com/docs) |
| Vector search | Not applicable | "Not a data layer — provides no first-party vector store/index (you'd run one as a workload). Category-wrong for a compute platform." [source](https://modal.com/docs) |

### Platform & operations

| Capability | Status | Evidence |
| --- | --- | --- |
| Managed CI/CD runners | Not supported | "No managed GitHub Actions / GitLab CI runner product (you could build one as a workload, but it is not offered as a drop-in runner)." [source](https://modal.com/docs) |
| Built-in observability | Supported | "'Real-time metrics and logs' on all plans; log retention 1 day (Starter) / 30 days (Team) / custom (Enterprise); Dedicated-Endpoint metrics + benchmarks; container runtime activity excluded from audit logs." [source](https://modal.com/pricing%20+%20https://modal.com/docs/guide/dedicated-endpoints#metrics) |
| Preview environments | Not supported | "No full ephemeral per-PR/branch environment primitive (shareable function URLs are preview-urls, not preview-environments)." [source](https://modal.com/docs) |
| Scheduled tasks | Supported | "Cron jobs: 5 deployed crons (Starter) / Unlimited (Team, Enterprise); 'Scheduled and Web Functions (limited)' on Starter, 'Unlimited Scheduled Functions' on Team." [source](https://modal.com/pricing) |
| Project template marketplace | Not supported | "An examples gallery of code samples exists, but there is no clone-a-project-starter template marketplace you launch new projects from." [source](https://modal.com/docs/examples) |
| Durable workflows | Partially supported | "Durable-ish primitives — `.spawn()`/`.spawn_map` async jobs, automatic retries, memory-snapshot checkpointing — but not a Temporal-style durable-workflow engine." [source](https://modal.com/docs) |

## Agent readiness

### Read: 11 of 11 signals present

11/11 signals (7 full, 4 partial)

- Llms txt: pass — "GET /llms.txt 200, 26.5KB (also served at /docs/llms.txt) — rich index linking docs/guide/examples/SDK pages with .md URLs (grew from 23.7KB in 2026-07)"
- Llms full txt: pass — "GET /llms-full.txt 200, 2.43MB comprehensive (grew from ~2.1MB); committed as a POINTER stub"
- Robots AI policy: partial — "robots.txt (1.4KB) Disallows private dashboard/API paths for `User-agent: *` (Googlebot/Bingbot get a temporary purge exception), blocks only PetalBot/BLEXBot/Bytespider/Barkrowler; public docs/pricing allowed; no AI UA named -> silent default-allow = half"
- JSON LD: partial — "Homepage ld+json @graph: Organization (name/url/logo/sameAs) + WebSite — minimal, no SoftwareApplication/Product/offers"
- Sitemap: pass — "GET /sitemap.xml 200 application/xml, 659 <loc> URLs; declared via `Sitemap:` in robots.txt (was 404 in 2026-07)"
- Meta quality: pass — "<title> 'Modal: The platform for production AI' + meta description + 9 og: tags"
- Markdown negotiation: partial — "Docs negotiate cleanly: GET /docs/guide with `Accept: text/markdown` -> 200 text/markdown (4.1KB), and `/docs/guide.md` -> text/markdown; llms.txt links .md URLs. Marketing pages (/, /pricing) still return text/html on negotiation -> 'some pages serve markdown' = half (was none in 2026-07)"
- Content efficiency: partial — "Homepage 435KB HTML -> ~9.2KB readable text (~2.1%, in the 1-5% band; JS-heavy SvelteKit redesign)"
- Docs discoverable: pass — "'Docs' is a top-level header nav item (server-rendered HTML) + llms.txt"
- Pricing machine readable: pass — "Structured tiers + per-second resource matrix (GPU/CPU/mem/volumes/egress) + a full compare table, all in server-rendered HTML"
- Anti bot: pass — "Homepage, docs, pricing, well-known files all 200 to a plain curl; no challenge on public content"

### Drive: 9 of 11 signals present

9/11 signals (5 full, 4 partial)

- Public API: pass — "Documented programmatic surface: Python/JS/Go SDKs over a gRPC API, Web Functions/Servers with proxy-token auth, OpenAI/Anthropic-compatible inference Endpoints"
- Openapi spec: fail — "/openapi.json, /api/openapi.json, /docs/openapi.json all 404; no published spec (gRPC + SDKs are the interface); ora agrees (openapi-spec fail)"
- MCP server: fail — "No Modal-owned MCP control server: /.well-known/mcp 404 (SPA shell), 0 'Model Context Protocol' hits beyond the FastMCP deploy example (that is mcp-hosting); ora mcp-server fail"
- SDK packages: pass — "Python (PyPI `modal`) + JavaScript/TypeScript (npm `modal`, Beta) + Go (Beta) — multiple official SDKs"
- Auth docs: pass — "API tokens (`modal token new [--expires-in]`), proxy tokens for Web Functions/Endpoints, OIDC identity tokens, RBAC-scoped tokens — clearly documented"
- Agent self serve creds: partial — "Signup (human) -> `modal token new` / dashboard token; `Sandbox.create_connect_token` for per-sandbox HTTP tokens; no programmatic account/key issuance without a human signup"
- Webhooks: partial — "Web Functions act as webhook RECEIVERS with proxy-token auth; no platform-emitted signed webhooks"
- CLI tool: pass — "Official `modal` CLI (run/deploy/serve/shell/token/skills/endpoint ...)"
- Error model: partial — "Documented exception hierarchy + 429/`ResourceExhausted` semantics and client auto-backoff; no formal JSON error-object schema for HTTP surfaces"
- Rate limit docs: partial — "Documented limits: 200 Function calls/HTTP req per s per workspace (5s burst) -> 429; parametrized-Function creation 1/s burst 1000; Shared-Endpoint per-model concurrency -> 429. No rate-limit response headers documented (was fail in 2026-07)"
- Agent config: pass — "Multiple surfaces: first-party `modal skills install` SKILL.md (+ skills.sh listing), AGENTS.md + CLAUDE.md at the modal-client repo root, /llms.txt + /llms-full.txt. No apex /agents.md or /.well-known/agent (404 shell)"

## Coding harnesses

- Claude Code (Anthropic) — "Connect OpenCode, Codex, or Claude Code to your [Shared Endpoint] ... Install Claude Code and create a proxy token. | `modal skills install # [--claude] [--global]` — Modal provides a skill that helps coding agents work most effectively with the platform." [source](https://modal.com/docs/guide/endpoint-integrations%20+%20https://modal.com/docs/guide/skills%20(llms-full%20'Install%20agent%20skills'))
- Codex CLI (OpenAI) — "## Codex — Install Codex, create a proxy token and add a provider in `~/.codex/config.toml` ... Then you can run Codex via the following command with the endpoint hostname" [source](https://modal.com/docs/guide/endpoint-integrations)
- OpenCode (opencode) — "## OpenCode — Install OpenCode and create a proxy token. In the OpenCode CLI, run ... | example: 'Run a background coding agent with OpenCode' (on Modal)" [source](https://modal.com/docs/guide/endpoint-integrations%20+%20https://modal.com/docs/examples/opencode_server)

## Compliance & regions

- SOC 2 Type II: certified (scope: hosted) — "We have successfully completed a System and Organization Controls (SOC) 2 Type 2 audit. Go to our Security Portal (trust.modal.com) to request access to the report." [source](https://modal.com/docs/guide/security)
- HIPAA: enterprise-only (scope: hosted) — "To use Modal services for HIPAA-compliant workloads, a Business Associate Agreement (BAA) should be established with us ... This is available on our Enterprise plan. ... Volumes v1, Images (excluding Filesystem and Directory Snapshots), Memory Snapshots, and user code are out of scope of the commitments within our BAA" [source](https://modal.com/docs/guide/security)
- Regions: us (United States (broad; 1.15x) — narrow: us-east (Virginia, default routing), us-central, us-south, us-west (1.75x)), eu (European Economic Area (broad) — narrow: eu-west, eu-north, eu-south), ap (Asia-Pacific (broad) — narrow: ap-northeast, ap-southeast, ap-south, ap-melbourne; jp (Japan), au (Australia)), uk (United Kingdom), ca (Canada), me (Middle East), sa (South America), af (Africa), mx (Mexico)
- Regions note: Region SELECTORS, not a datacenter list: Modal schedules onto a multi-cloud capacity pool and `region=` constrains placement at a 1.15x (broad) / 1.75x (narrow) multiplier; 'more granular region definitions' via sales. Default: inputs routed via us-east (Virginia). Shared inference Endpoints route via us-west. Previous scan listed 6 representative regions incl. an OCI us-ashburn-1 — the live page now exposes the full selector table.

## Company & presence

- Headquarters: New York City, USA
- Founded: 2021
- Team size: not disclosed (38 open roles across 4 offices, 2026-10)
- Funding: total disclosed, $466M+, as of 2026-10
- Privacy policy: https://modal.com/legal/privacy-policy
- Terms of service: https://modal.com/legal/terms
- GitHub: https://github.com/modal-labs
- Blog: https://modal.com/blog
- Docs: https://modal.com/docs
- Changelog: https://modal.com/changelog
- X/Twitter: https://x.com/modal
- LinkedIn: https://www.linkedin.com/company/modal-labs/
- YouTube: https://www.youtube.com/@ModalLabs
- Slack community: https://modal.com/slack

## Nearby in the atlas

- [Beam](/products/beam.md)
- [Chutes](/products/chutes.md)
- [Deno Deploy](/products/deno.md)
- [Koyeb](/products/koyeb.md)
- [Kyushu](/products/kyushu.md)
- [NVCF (NVIDIA Cloud Functions)](/products/nvcf.md)

## Method

Facts come from the product's own public pages. Each claim carries its evidence: a quote and the page it came from. We count capabilities rather than grade products, and "Not assessed" means we have not checked, never that the product lacks it.
