Skip to content
Technical preview. This site is published for review. Everything on it, including the API, tokens and module protocol, is subject to change.
Limits

Limits

AutoFlow enforces the limits below. None of them is configurable per workflow except the schedule-to-complete timeout.

Payloads and values

LimitValueWhere it applies
Script size100 KiBStartWorkflowRequest.workflow_definition.
Workflow input256 KiBThe definition, args and kwargs marshaled together. Checked in AutoFlow, so a request over it is refused with INVALID_ARGUMENT.
Single string, bytes or sensitive value256 KiBAny value crossing the boundary between a workflow and AutoFlow. Enforced when the value leaves the workflow, not while it runs, so a concatenation can grow past it and fail later.
Integersigned 64-bitAny integer crossing that boundary. Starlark integers are arbitrary precision inside a workflow.
Action result256 KiBThe value an action resolves to, as recorded in history.
GitLab API response body240 KiBThe gitlab module reads the response up to the 256 KiB result cap minus a 16 KiB framing margin for the status and headers.
Module error message4 KiBThe Error.message a module returns.
Module file256 KiBEach Starlark file a module descriptor ships.
Annotations32 per workflow, value 1 KiBStartWorkflowRequest.annotations. Keys are unique and follow the Kubernetes annotation key format.

Channels

LimitValueWhere it applies
Channel values received10,000 per workflowAcross every channel of one workflow, for its whole life. A send past it is refused with RESOURCE_EXHAUSTED and never clears.
Single channel value64 KiB marshaledSendToWorkflowChannel and a module’s SendToChannel.
Channel name1 to 255 bytesNames a caller supplies. The __autocore_internal: prefix is reserved.
SendToChannel batch1 to 60 valuesOne message of a module’s send stream.

Time

LimitValueWhere it applies
Schedule-to-complete timeout30 days by default, 60 days at mostPer workflow, set with schedule_to_complete_timeout. The deadline cannot be disabled.
Token expirystart plus the timeout plus 1 hourThe workflow token and every channel token of that workflow. Recorded at creation, so re-minted tokens carry the same instant.
Module registration30 minutesA remote module’s descriptor. It re-registers periodically to stay loadable.
Inline action attemptat most 500 msThe in-goroutine attempt of an inlineable action. Exceeding it queues the action as any other.
Data retention90 daysWorkflow executions, history events and signal deliveries are partitioned by week and whole buckets are dropped past the window.

Retention is a ceiling on idle time, not only a cleanup horizon for finished workflows. A workflow that is still running but has recorded no history event for longer than the window is retired with its partition and is silently gone, so treat 90 days as the longest sleep or await a workflow definition can be written around.

Computation

LimitValueWhere it applies
Workflow thread steps100,000,000Each interpreter thread of a workflow, in Starlark computation steps, roughly a second of CPU. A warm resume carries the count and a cold replay reproduces it, so a runaway fails at the same instruction wherever it runs.
Module file thread steps10,000,000The thread that evaluates a loaded module file, a tenth of a workflow thread’s budget.
Transform source8 KiBThe source text of one derived_action transform.
Transform chain8 layersHow many transforms may wrap one invocation.
Transform steps1,000,000One run of a whole transform chain. Every layer spends from it.
Transform output256 KiBThe result a transform produces, checked inside the activity.
Poll predicate cost100,000 CEL unitsOne evaluation of a poll check.

Identifiers and API

LimitValueWhere it applies
Workflow key1 to 255 bytesReturned by StartWorkflow, presented by every other RPC.
Idempotency key1 to 255 bytesStartWorkflow and SendToWorkflowChannel. Required; the __autocore_internal: prefix is reserved.
Workflow token, channel token1 byte to 4 KiBEvery RPC that addresses an existing workflow.
Token bindingexactly 64 bytesStartWorkflowRequest.token_binding.
RPC rate60,000 calls per namespace per minuteAll four RPCs together. Over the limit is RESOURCE_EXHAUSTED.
Last updated on