Limits
Capability profile, concurrency, upload caps, request and response body sizes, and account quotas.
Capability profile
http-sync-v0: one fetch handler, optional scheduled and queue handlers, env.* bindings, buffered request and response bodies, no WebSockets. See The handler for the handler contract and Runtime compatibility for tested APIs and npm packages.
Concurrency
Each sprout process runs one request at a time. More than two or three requests in flight add latency, not throughput, because a deployment is one process. To scale a standalone binary, run several copies behind SO_REUSEPORT.
Size limits
| Limit | Default | Notes |
|---|---|---|
| Sprout upload | 16 MiB | |
| Assets | 64 MiB | Up to 4096 files. |
| Inbound request body | 1 MiB | SB_REQUEST_BODY_MAX. A larger body gets a 413 before the handler runs. |
Outbound fetch() response body |
32 MiB | SB_FETCH_MAX_BYTES. The body is held in memory whole. |
| R2 direct upload | 100 MiB | Per upload URL, set with maxBytes up to 5 GiB. See R2. |
| Secret value | 8 KiB |
Account quotas
| Scope | Default |
|---|---|
| Per account | 50 projects, 100 storage resources |
| Per project | 25 retained versions besides the active one, 5 custom domains, 64 secrets |
| Deploys | 10 per minute per account, 20 per minute per IP address |
The platform operator can change these defaults.