Limits
Every limit Ciresk CI applies to a request, a tree, a log, an artifact, a job and a worker, with its default and what you get when you reach it. A limit named with a policy field (max_tree_entries) is your organization's to change with ciresk ci policy set <field>=<value> (needs ci:policy.write); ciresk ci policy get shows what applies to you. Where a field says "at most", that is the cell's ceiling: the policy cannot go above it. The other limits are the same for every organization.
| Limit | Default | Scope | When it is reached |
|---|---|---|---|
| Request body | 1 MiB | one request | 413 payload_too_large. Bytes go through a presigned upload, never in the body. |
| Request body read time | 30 s | one request | 408 request_timeout. |
Inline blob in tree sync (max_inline_blob_bytes) | 64 KiB, at most 1 MiB | one blob | A larger blob goes through a presigned upload; ciresk ci picks the way by itself. |
Tree entries (max_tree_entries) | 200,000, at most 1,000,000 | one tree | 413 tree_too_large; ciresk ci refuses before it uploads and names .ciresk/ignore. |
Tree size (max_tree_bytes) | 2 GiB | one tree | 413 tree_too_large. |
Blob (max_blob_bytes) | 2 GiB | one file of a tree | 413 blob_too_large. |
Tree sync requests (trees_requests_per_minute) | 600 a minute, at most 6,000 | one credential, counted on each API server | 429 rate_limited with retry_after; ciresk ci waits and retries. |
| Digests per tree sync request | 10,000 | one request | 413 tree_missing_too_many; split the request. |
| Objects from dev checkpoints per request | 20,000 objects, 1 GiB, 64 directory levels | one job naming a tree_root | 413 checkpoint_too_large; sending the same root again continues. |
| Log chunk | 64 KiB | one upload from a worker | 413 log_chunk_too_large; the worker splits its chunks below it. |
Log per task (max_log_bytes) | 64 MiB | one task attempt | 413 log_chunk_too_large; the log stops there and the task keeps running. |
| Log read per call | 64 KiB, at most 256 KiB | one ciresk ci logs or ci__job_logs call | The answer is cut and says so; ask for the next window. |
Artifact (max_artifact_bytes) | 1 GiB | one artifact | 413 artifact_too_large. |
Task timeout (max_task_timeout_secs) | 3,600 s | one task | A task's timeout above it is cut to it; a task that runs past its timeout ends timed_out. |
Concurrent jobs per organization (max_concurrent_per_tenant) | twice the fleet's slots plus 4, at least 32 | queued, leased and running jobs | 429 concurrency_limited with retry_after 5: the job is refused, not queued. ciresk ci waits and submits again up to three times, then exits 5. |
Concurrent jobs per actor (max_concurrent_per_actor) | the organization's | one credential and actor | 429 concurrency_limited, scope: actor. |
Concurrent jobs per session (max_concurrent_per_session) | half the organization's, at least 4 | one CLI or MCP session | 429 concurrency_limited, scope: session. Not a policy field: it follows the organization's. |
| Webhooks per organization | 20 | the organization | 422 webhook_limit. |
| Unauthenticated requests per address | 60 a minute | one IP address, counted on each API server | 429 rate_limited. |
| Open long-polls per credential | 32 | one credential, counted on each API server | 429 rate_limited; close a wait before opening another. |
| Lease TTL | 300 s | one task on a worker | The lease expires, the task is requeued, and the worker's next report gets worker_lease_expired. |
| Lease renewal | every 30 s | one worker | A worker renews each lease with its heartbeat, so a lease survives about ten missed renewals. |
The concurrency caps follow your fleet unless your policy sets them: "the fleet's slots" are the slots your workers' pools can grow to plus the online slots of workers no pool reports, so work past a full fleet waits in the queue instead of being refused. ciresk ci budget shows concurrent: {used, limit}, and an agent sees a warning when every slot of it is in use.
A limit "counted on each API server" is enforced by every server of the cell on its own, so the cell as a whole may let a little more through. Budgets, the cost limits on a session, a day and a month, are on How it works.