docs/install/reference/limits.mdx
Limits on how long a flow runs, how much memory and concurrency a worker gets, and how long run data is kept. The run timeout counts only active execution time — flows paused by Wait for Approval or Delay don't count against it.
| Limit | Cloud | Env var | Self-hosted default |
|---|---|---|---|
| Flow run timeout | 10 min | AP_FLOW_TIMEOUT_SECONDS | 600 |
| Worker process memory | 1 GB | the worker container's memory cap | 1 GB |
| Paused flow lifetime | 30 days | AP_PAUSED_FLOW_TIMEOUT_DAYS | 30 |
| Execution data retention | 30 days | AP_EXECUTION_DATA_RETENTION_DAYS | 30 |
| Worker concurrency (per worker) | 1 | AP_WORKER_CONCURRENCY | 5 (set to 1 — see Production Setup) |
Platform admins can shorten the execution-data retention window for a single
project by setting executionDataRetentionDays on the
update project endpoint; null reverts the
project to the instance-wide value. The value must be between
AP_PAUSED_FLOW_TIMEOUT_DAYS (a shorter window would delete the data a
still-paused run needs to resume) and AP_EXECUTION_DATA_RETENTION_DAYS (the
instance value is the ceiling). Raise the instance value if you need a wider
range to place projects in. If either variable changes after an override was
saved, the override is clamped back into the new bounds at cleanup time.
Files emitted by actions or triggers are persisted to the database or S3 so a flow can retry from a later step. The log-size limit covers the combined inputs and outputs of every step in a single run.
| Limit | Cloud | Env var | Self-hosted default |
|---|---|---|---|
| Step file size | 10 MB | AP_MAX_FILE_SIZE_MB | 25 |
| Flow run log size (combined inputs + outputs, includes sliced payloads) | 25 MB | AP_MAX_FLOW_RUN_LOG_SIZE_MB | 50 |
| Step output slice threshold | 32 KB | AP_FLOW_RUN_LOG_SLICE_THRESHOLD_KB | 32 |
| Step input truncate threshold | 2 KB | AP_FLOW_RUN_LOG_INPUT_TRUNCATE_THRESHOLD_KB | 2 |
How it works
AP_FLOW_RUN_LOG_INPUT_TRUNCATE_THRESHOLD_KB are
replaced with a placeholder in the log; the step still receives the full
value at runtime.AP_FLOW_RUN_LOG_SLICE_THRESHOLD_KB are offloaded
to object storage and replaced with a reference in the log; the payload is
re-hydrated on demand.AP_MAX_FLOW_RUN_LOG_SIZE_MB. Runs that exceed it end with status
LOG_SIZE_EXCEEDED — regardless of how many outputs were offloaded to object
storage. Lowering AP_FLOW_RUN_LOG_SLICE_THRESHOLD_KB will not buy more
log headroom; only raising AP_MAX_FLOW_RUN_LOG_SIZE_MB does.Limits on how long a synchronous webhook waits for a response and how large an incoming payload can be.
| Limit | Cloud | Env var | Self-hosted default |
|---|---|---|---|
| Sync webhook response timeout | 30 s | AP_WEBHOOK_TIMEOUT_SECONDS | 30 |
| Max webhook payload size | 5 MB | AP_MAX_WEBHOOK_PAYLOAD_SIZE_MB | 25 |
| Webhook payload inline threshold | 1024 KB | AP_WEBHOOK_PAYLOAD_INLINE_THRESHOLD_KB | 512 |
Used by the built-in Store piece and any piece that calls context.store.
Values are stored directly in Postgres (jsonb), so unlike files and run logs
they are not offloaded to object storage. Every stored value counts toward
your database size and is read and written in full on each access.
| Limit | Cloud | Env var | Self-hosted default |
|---|---|---|---|
| Maximum key length | 128 characters | not configurable | 128 |
| Maximum value size | 512 KB | AP_MAX_STORE_ENTRY_VALUE_SIZE_KB | 512 |