Configuration

The settings of the CLI and the worker: flags, environment variables, files in the repository and worker.toml.

The CLI

FlagMeaning
--jsonExactly one JSON document on stdout; progress still goes to stderr unless --quiet.
--api-url <url>The API origin; the default is https://ci.eu.ciresk.com, or CIRESK_CI_API_URL.
--org <slug>The organization whose stored token to use, when the keychain holds several.
--timeout <dur>Network timeout per request, default 30s.
--quietNo stderr progress.

The full list is in CLI reference.

VariableMeaning
CIRESK_TOKEN, CIRESK_CI_TOKENA csk_ key or an exchanged cix_ token, for machines and sandboxes. The OS keychain (from auth login) is read first. Never printed; ciresk ci passes it on only with --pass-token.
CIRESK_CI_API_URL, CIRESK_API_URLThe API origin; ciresk ci config set server <url> stores one instead.
CIRESK_JOBThe default for every [job] argument. run without --wait prints export CIRESK_JOB=job_... on stderr.
CIRESK_ACTOROverrides the detected actor (user, agent:claude-code, agent:codex, ...).
CIRESK_SESSIONAttributes a session to the job.
CIRESK_CI_SKIP1 makes the push hooks skip the check once.
CIRESK_CI_BINThe binary the push hooks call; by default the CI plugin binary on PATH.
CIRESK_REQUESTED_SCOPESThe scopes the GitHub Action asks for on exchange.
NO_COLORDisables color, as do a non-tty stdout and --json.

Files in the repository

FileContent
.ciresk/ci.yamlThe manifest: tasks, inputs, outputs, toolchains, workspace. See Manifest.
.ciresk/ignoregitignore syntax, anchored at the root: files that never travel to the cell, on top of .gitignore and the built-in list (.git, .hg/, .svn/, .jj/, target/, node_modules/).
.ciresk/repoThe slug of a folder without a git remote, written on the first run; edit it to rename.
.ciresk/<job>/Where ciresk ci artifacts <job> --download <name> puts a file unless --out <dir> says otherwise.
.ciresk/out/<task>/On the worker: a task's output directory ($CIRESK_OUT).

The worker: /etc/ciresk-ci/worker.toml

Precedence: command-line flag, then CIRESK_CI_* environment, then the file, then the default. ciresk-ci-worker join writes the file.

KeyEnvDefaultMeaning
api_urlCIRESK_CI_API_URLhttps://ci.eu.ciresk.comThe cell
nameCIRESK_CI_WORKER_NAMEhostnameUnique per organization and factory
factory_idCIRESK_CI_FACTORY_IDstaticstatic or the pool id (aws:eu1-pool-a)
labelsCIRESK_CI_LABELSdetectedExtra key=value pairs
data_dirCIRESK_CI_DATA_DIR/var/lib/ciresk-ciMirrors, workspaces, mise, local cache, spool
slotsCIRESK_CI_SLOTS1Concurrent tasks; one repository's warm workspace never runs two at once
warm_workspacesCIRESK_CI_WARM_WORKSPACEStrueAdvertise workspace:warm
run_userCIRESK_CI_RUN_USERciresk-runThe unprivileged account tasks run as
cpu_quota_pct, memory_per_slot_bytesCIRESK_CI_CPU_QUOTA_PCT, CIRESK_CI_MEMORY_PER_SLOT_BYTESall cores minus one, 90% of RAM, each divided by slotsWhat one slot stands for: the per-task cgroup caps; memory_max_bytes is still read as the same key
egress_proxyCIRESK_CI_EGRESS_PROXYbuiltinbuiltin, off (development only), or an external proxy URL
idle_stop_secsCIRESK_CI_IDLE_STOP_SECS0After this long without a lease the worker runs shutdown -h now; 0 never stops
disk_quota_bytesCIRESK_CI_DISK_QUOTA_BYTES80% of the data volumeThe worker's local caches are evicted, least recently used first, to stay under it
health_addrCIRESK_CI_HEALTH_ADDR127.0.0.1:9471/healthz and /metrics, localhost only
secrets_backendCIRESK_CI_SECRETSenvenv, file:<dir>, aws-sm:<prefix>; where pass_env values come from (never a git credential: CIRESK_GIT_CREDENTIAL is refused, the cell holds git credentials)
auto_updateCIRESK_CI_AUTO_UPDATEtrueSelf-update between jobs; false to disable
log_levelCIRESK_CI_LOG_LEVELinfoThe worker's own log

The worker's health endpoint

http://127.0.0.1:9471/healthz answers {"state": "online", ...} (503 while the worker is not online) and /metrics exports Prometheus metrics; both bind localhost unless health_addr says otherwise. Do not expose it publicly.