Limits¶
This page tells what Stateous does not do, and the limits that it has today.
What Stateous does not do¶
- It has no authentication, no tenants and no keys. Add them around Stateous with a proxy, a VPN, or one control plane for each customer.
- It serves one workflow structure for each database. It has no versions side by side. See Change a workflow.
- It does not launch agents. A routine launches them with PHD. See Agents, with PHD.
Known limits¶
- On Codex, a payload model with a
dict[str, Any]field cannot run. See Free-form payloads. - The supervisor cannot stop a
defroutine. It ignores the result of that routine. Useasync deffor work that must stop when the token moves on. - A paused token never ends on its own. A lease continues while the token is paused.
count('event')counts the event over the whole life of the token, not for one visit. See Guards.- In a context or payload model, a field with
default_factorycan be required incontract.py. This occurs when the field's type is a model or a union. compilecannot prove that two guards withbranches.allorbranches.anynever overlap. Use one such guard andotherwise=True. See Parallel and nested work.
Sizes¶
The HTTP API refuses a request that is larger than these sizes.
| What | The most |
|---|---|
| A request body | 1 MiB |
| The nesting of a body's JSON | 64 levels |
| A token id | 128 characters |
| An idempotency key | 256 characters |
| A supervisor's name | 256 characters in a claim; 128 characters in stateous.yaml |
| A note | 500 characters |
| A memory key | 128 characters |
| The states in one claim, and the tasks in one heartbeat | 1000 |
| The tokens in one listing | 1000 |
| The routines that one supervisor runs at once | 1000 |
See also¶
- The HTTP API: the refusal codes.
- Reliability: what is guaranteed, and what is not.