config.json inside the config directory (/config in the container, ./data/config on the host with the default compose file). The file is created on first boot with defaults; edits are picked up and applied live — recorders and detectors reconcile against the new config without a restart. Writes are atomic.
config.json
Top level
retention
cloud
If no URL/key is available from config or environment, the cloud link simply stays disabled — the node runs local-only.
go2rtc
paths
Camera entries
Cameras are normally added through the UI or API, but they live in this file:Motion and detection thresholds (frame diff limits, YOLOX confidence, clip pre/post-roll) are currently constants in the code, not configuration. See Recording and events for their values.
Environment variables
The Docker compose file wires the directories to
./data/* on the host and passes the two NIGHTJAR_SUPABASE_* variables through (defaults point at the official cloud).
identity.json
Alongsideconfig.json, the node keeps identity.json: the node’s machine secret (generated on first boot), its cloud node id after registration, and the current claim code while unclaimed. Treat it like a credential — anyone with the secret can act as your node. Deleting it resets the node’s cloud identity.