Skip to content

Defaults and Limits

ComponentPort
API3000
Web console3001
STS8080
Gateway8081
Audit9090
Coordinator4000
Postgres5432
Redis6379
LimitDefault
STS resource mandate cap15 minutes
STS session mandate cap60 minutes
STS MAX_GRANT_TTL_SECONDS3600
DCR application lifetime default and maximum3600 seconds
caracal run injected credential TTL900 seconds
Runtime approval waituntil the hold expires; 5-minute fallback when expiry is unavailable
Approval TTL1800 seconds default, clamped between 60 seconds and 7 days
Approval decision reason500 characters maximum
Gateway expiring-token preflight window35 seconds
LimitDefault
API body limit1_048_576 bytes
API request timeout30_000 ms
Coordinator body limit256 KiB
Coordinator request timeout30 seconds
STS request body limit64 KiB
Gateway max request bytes10 MiB
Gateway STS timeout5 seconds
Gateway upstream timeout30 seconds
Gateway non-stream write timeout60 seconds
Gateway stream idle timeout60 seconds per chunk
Gateway server idle timeout120 seconds
Gateway STS circuit failure limit3 failures
Gateway STS circuit open window10 seconds
STS OPA_POLL_SECONDS60 seconds, max 300
Control body limit64 KiB
Control rate capacity60 per window
Control rate window60 seconds
Control replay TTL3600 seconds

The SDKs share one timeout philosophy: control-plane calls are bounded, data-plane calls are bounded by you. Coordinator and STS operations carry defaults because a hung control plane must not hang the worker. Provider traffic through transport() carries no TypeScript/Go default because only the caller knows whether a request is a short lookup or a long stream; pass the language-specific timeout or cancellation primitive.

OperationDefaultNotes
Coordinator call10 secondsPer request, all SDKs.
Session startup to 2 retries5xx/network only. The SDK generates one operation id before the first attempt; Coordinator durably replays the same creation response and rejects changed inputs. This protects Session creation, not callback execution or downstream effects.
Delegation create1 retrySame durable creation-replay contract.
Coordinator retry backoff250 ms escalating, jitteredA server Retry-After wins, capped at 10 seconds.
STS token exchange30-second budget, one attemptIssuance is never retried automatically because a lost response can hide a successfully minted token. Callers reconcile or explicitly retry according to their operation contract.
TypeScript Control invoke30-second total budgetCovers one token mint and one invoke. Neither request is auto-retried; an invoke timeout is outcome-ambiguous.
Approval wait300-second defaultLong-polls in chunks; pending on timeout means waiting again is safe.
Heartbeat renewal10-second bound per tickFailures retry on the next tick; a session reported gone stops the timer and fires onLeaseLost.
transport() / fetch()none (TS/Go), httpx default (Python)Bound per call: timeoutMs, AbortSignal, timeout=, or the injected HTTP client.
LimitDefault
Concurrent Sessions per zone50 (MAX_AGENTS_PER_ZONE)
Concurrent Sessions per application200 (MAX_AGENTS_PER_APP)
Child Sessions per parent Session10
Delegation depth10
Session labels per Session32
Session label length64 characters
STS request rate per zone, resource, and acting application1000 per minute (STS_MINT_RATE_LIMIT_PER_MIN)

The per-zone ceiling binds first: with defaults, no application can hold more than 50 concurrent Sessions because its zone caps out there. The higher per-application ceiling matters once MAX_AGENTS_PER_ZONE is raised.

STS_MINT_RATE_LIMIT_PER_MIN is the deployment ceiling for the mint rate. Operators can set a lower working limit from the web console under Settings → Preferences → Mint rate limit; the STS applies a change within 30 seconds, and the working limit can never exceed the ceiling.

max_hops defaults to 1 on a constrained Delegation when omitted. The server validates every child bound against its parent’s remaining hops.

DefaultValue
Audit retention365 days
Audit max deliveries before DLQ8
Audit claim idle30 seconds
Audit tamper rolling window4 hours
Redis audit stream intended max length1,000,000
Redis audit DLQ intended max length100,000
Redis policy/revocation/key stream intended max length10,000
ServiceReplicasMax HPA replicas
API28
STS28
Gateway216
Audit28
Coordinator28
Controldisabled2 when enabled

Use CLI Exit Codes when automating top-level caracal runtime commands.