# Usage For every field, default, constraint and complete example, see the [TOML configuration reference](configuration.md)。 Panda RPKI reads one TOML file at process start. Copy the file to create a different profile; there is no command-line business-option or environment override. ## Snapshot, delta and automatic refresh ```toml config-version = 1 mode = "validate" out = "output/ripe" rrdp-state-dir = "state/ripe" rrdp-sync-mode = "auto" ccr-out = "output/ripe/result.ccr" publish-dir = "publish/ripe" [[anchors]] id = "ripe" tal = "input/ripe.tal" # ta = "input/ripe.cer" # leave out to refresh from the TAL URI ``` ```bash panda-rpki validate --config validate.toml --check-config panda-rpki validate --config validate.toml ``` An empty state selects a snapshot. After a successful run, `auto` can use delta updates; after an incomplete or failed run it recovers with `auto`. Explicit `snapshot` requires an empty state and `delta` requires an existing database. A valid downloaded TA is cached beside the state directory using the TAL public-key hash. Refresh failures may use that cache under `allow-valid-cache` and produce `partial`; use `require-fresh` to reject the fallback. ## Multiple anchors and constraints Use one named `[[anchors]]` table per RIR. There is no positional TAL/TA pairing: ```toml config-version = 1 mode = "validate" out = "output/all5" rrdp-state-dir = "state/all5" ccr-out = "output/all5/result.ccr" [[anchors]] id = "afrinic" tal = "input/afrinic.tal" # ta = "input/afrinic.cer" # uncomment for fixed TA mode [[anchors]] id = "apnic" tal = "input/apnic.tal" # ta = "input/apnic.cer" # uncomment for fixed TA mode [[anchors]] id = "arin" tal = "input/arin.tal" # ta = "input/arin.cer" # uncomment for fixed TA mode [[anchors]] id = "lacnic" tal = "input/lacnic.tal" # ta = "input/lacnic.cer" # uncomment for fixed TA mode [[anchors]] id = "ripe" tal = "input/ripe.tal" # ta = "input/ripe.cer" # uncomment for fixed TA mode constraints = "input/ripe.constraints" ``` An omitted `constraints` field discovers a same-stem file beside the TAL. An explicit path must exist and parse. Constraint rules follow the profile in the [standards matrix](conformance-matrix.md). ## Continuous operation Daemon configuration keeps the controller and validator settings together: ```toml config-version = 1 mode = "daemon" state-root = "data/all5-daemon" interval-secs = 600 # max-runs = 3 # uncomment for a finite three-cycle run retain-runs = 10 run-timeout-secs = 1800 shutdown-grace-secs = 30 require-complete = true ta-refresh-policy = "allow-valid-cache" log-format = "text" log-level = "info" [[anchors]] id = "ripe" tal = "input/ripe.tal" # ta = "input/ripe.cer" # uncomment for fixed TA mode ``` ```bash panda-rpki daemon --config daemon.toml --check-config panda-rpki daemon --config daemon.toml ``` Each cycle writes `data/all5-daemon/runs/run_000001/`, including the generated `validator-config.toml`, CSV/CCR/summary/timing artifacts, process metrics and logs. The daemon points `data/all5-daemon/latest` at the newest successful run; partial and failed runs remain available for diagnosis. It chooses snapshot for empty state, delta after success and auto after partial/failed recovery. A finite daemon exits 2 if any run failed, 3 when only partial runs occurred and `require-complete` is true, otherwise 0. ## Outputs and diagnostics `summary.json` and `result-complete.json` describe the current attempt. Use the immutable `publish/latest` (validate with `publish-dir`) or daemon `latest` when consumers need a consistent group of files. `validator.log` contains structured diagnostics on stderr; `--print-config` is configuration JSON and does not contain validation payloads. For path, state-layout, RRDP origin or permission errors, inspect the error first and preserve the existing state directory. Do not share a writable state directory between concurrent instances. TAL files themselves are operator-maintained; automatic refresh changes only TA certificates in the cache. See [stop/edit/reload](docker.md#graceful-stop-edit-and-reload) for Docker shutdown semantics, text logging changes and switching anchor modes.