Reference values for the platform's defaults and hard bounds. Per-function settings (timeout, memory) are edited in the function's settings panel or via the SDK; queue options are passed when enqueueing.
The values below are what the hosted platform enforces. Self-hosted installations can tune most of them with environment variables; more than one replica per application needs the allocation compute plane (COMPUTE_ALLOCATION_MODE=embedded).
Functions#
| Limit | Default | Maximum |
|---|---|---|
| Execution timeout | 5,000 ms | 86,400,000 ms (24 h) |
| Memory per container | 256 MB | 2,048 MB |
| Code upload (ZIP) | — | ~37 MB (base64-encoded inside the 50 MB request) |
| Unpacked code size | — | 100 MB / 5,000 files and folders |
| Request body | 2 MB | 50 MB (function create/update, code files, layers and deploy) |
| Preview environment lifetime (non-production deploys) | 7 days (since its last deploy) | |
Applications (app runtime)#
Limits for containerized applications: releases, resources and scaling. See the “Applications” article for runtime details.
| Limit | Default | Maximum |
|---|---|---|
| Replicas per application (activation: always) | 1 | 8 (http/manual — always 1) |
| Container memory | 512 MB | 2,048 MB |
| Container CPU | 0.5 vCPU | 2 vCPU |
| Live releases per workspace | — | 10 |
| Source upload (ZIP) | — | ~284 MB (base64-encoded inside the 512 MB request; the dashboard's upload button accepts up to 280 MB) |
| Unpacked source size | — | 1,024 MB / 50,000 files and folders |
| Preview release TTL | 24 h | |
| Startup deadline (health gate) | 120 s | |
| Drain window on release cutover (rolling deploy) | 5 min | 60 min (drainGraceSeconds per app, 0–3600 s) |
| Scale-to-zero idle timeout (http) | 15 min | 30 days (minimum 5 min) |
| Wake activation timeout | 60 s | 300 s |
| Public TCP port range | 20000–39999 (private-network endpoints use the container port) | |
Memory, CPU and live-release ceilings apply per workspace and can be raised on request. The CPU figure is a ceiling: about half of it is reserved for the container, and the rest is burst headroom shared with other workloads. Memory is reserved in full and is a hard limit.
Background jobs#
| Limit | Default | Maximum |
|---|---|---|
| Attempts per job (maxAttempts) | 1 | 100 |
| Retry backoff (exponential + jitter) | 1,000 ms × 2ⁿ | 300,000 ms (5 min) |
| Delayed start | 0 | 7 days |
| Visibility timeout (stuck-job reaper) | 22.5 min (the lease is renewed while the job runs; an expired lease uses up an attempt) | |
| Concurrent jobs per concurrencyKey | — | 10,000 |
| Enqueue rate per workspace | 120 / min | |
Pipeline schedules and durable instances#
| Limit | Value |
|---|---|
| Minimum cron interval | 1 min |
| Scheduler tick | ~30 s |
| Durable instance turn-lock lease | 5 min |
Warm container pool#
| Limit | Default |
|---|---|
| Max warm containers per function | 8 |
| Idle TTL | 5 min (hard removal after 10 min) |
| Container recycled after | 1,000 invocations |
If a workload needs more than a listed maximum — longer timeouts, larger uploads, higher rate limits — contact us: most bounds are policy, not architecture.