Skip to content

Configuration Order

caracal run and SDK loaders use this order:

  1. CARACAL_CONFIG, when set and the file exists.
  2. Environment runtime config.
  3. $XDG_CONFIG_HOME/caracal/caracal.toml.
  4. ~/.config/caracal/caracal.toml.

The runtime does not read ./caracal.toml from the current working directory.

Environment config is considered when workload identity variables are present. Local dev and stable launches use CARACAL_ZONE_ID and CARACAL_APPLICATION_ID, then auto-detect credential files from the OS Caracal config directory. Cloud and custom deployments can provide explicit CARACAL_APP_CLIENT_SECRET_FILE, CARACAL_RUN_CREDENTIALS, CARACAL_RUN_CREDENTIALS_FILE, or CARACAL_RESOURCES_FILE values when mounted secret or config paths differ from the local convention.

Set only one of CARACAL_RUN_CREDENTIALS and CARACAL_RUN_CREDENTIALS_FILE.

Resource bindings resolve from profile credentials, then CARACAL_RESOURCES_FILE, then CARACAL_RESOURCES. Later bindings with the same resource ID override earlier bindings, so a short environment override can replace one entry from a mounted JSON file without duplicating the file.

Services support *_FILE variants for configured secret keys. File values are resolved before validation so deployment templates can mount secrets instead of placing sensitive material directly in environment variables.

Deployment pathPrecedence model
Docker ComposeShell environment overrides defaults in compose files; secrets are mounted from files.
HelmCLI --set and later values files override earlier chart values; runtime Secret keys feed mounted service env.
Console generated profileExplicit values from guided setup write a profile and secret file when file writing is enabled.
SymptomCheck
Expected profile is ignoredCARACAL_CONFIG may point elsewhere or environment runtime config may be winning.
Service fails with missing secretConfirm the *_FILE variable name is supported by that service and the file is readable.
Helm values render unexpected defaultsCheck values file order and CLI overrides.

Use Defaults and Limits to confirm ports, TTLs, request limits, and stream defaults.