YAML is your installation plan
Keep human-owned configuration separate from generated deployment files. Change the source YAMLs, validate them, then regenerate.
Which file controls what?
Actual values live in config/YAMLs. Samples are versioned under config/config_sample. The controller reads the installation directory by default.
| File | What you configure |
|---|---|
| device.yaml | Device ID, environment, logging, and health reporting. |
| api.yaml | Branch ID/key, backend URL, ingest batches, retries, and buffer storage. |
| cameras.yaml | Enabled sources, camera IDs, FPS targets, model assignments, classes, zones, and table routing. |
| models.yaml | Weights, model ID/version, Ultralytics device selector, thresholds, and tracking choice. |
| boxmot_tracker.yaml | Tracking algorithm and its parameters. |
| rules.yaml | Camera/class/zone matching, UTC schedules, cooldowns, severity, and messages. |
| notifications.yaml | Log, webhook, and SMTP channels; rule and severity filters. |
| collection.yaml | Dataset sessions, output path, sampling, filters, and sample caps. |
| graph.yaml | Node templates, typed connections, optional paths, and queue profiles. |
Source in, generated files out
Installation YAMLs, credentials, weights, datasets, and generated output stay local. Keep source code and samples in Git.
config/
config_sample/ # tracked templates
YAMLs/ # your installation values
controller/ # parser, validator, compiler, writer
.generated/ # generated pipeline and Compose
models/ # local model assets
collected/ # dataset outputCatch mistakes before startup
The controller rejects unknown keys, invalid types, duplicate IDs, missing references, invalid class selections, and incompatible graph connections. Review file and field names in its error output.
python -m config.controller --details
python -m config.controller --plan
python -m config.controller --generate
python -m config.controller --help