Limits
Capability profile, concurrency, upload caps, request/response body sizes, and account quotas.
Capability profile
http-sync-v0: one synchronous fetch handler, optional scheduled and queue handlers, env.* bindings, no streaming, no WebSockets. See The handler for the full compatibility table.
Concurrency
One request executes at a time per process. Client concurrency past two or three in flight adds latency, not throughput — a deployed sprout is one process. Scale a standalone binary with several copies behind SO_REUSEPORT.
Size limits
| Limit | Value | Notes |
|---|---|---|
| Sprout upload | 16 MiB | |
| Assets, total | 64 MiB | across up to 4096 files |
| Inbound request body | 1 MiB | SB_REQUEST_BODY_MAX; the runtime answers 413 before the handler runs, so a larger upload never reaches your code |
Outbound fetch() response body |
32 MiB | SB_FETCH_MAX_BYTES; the remote host chooses the size and the body is held whole, so this is what stops one upstream exhausting a box |
Account quotas
| Scope | Limit |
|---|---|
| Per account | 50 projects, 100 storage resources |
| Per project | 25 retained versions, 5 custom domains, 64 secrets |
Deploys are rate-limited per account and per IP.