Graph, pipeline, and Compose
Three related files with different jobs. The graph describes connection intent; the pipeline resolves it; Compose runs the supported services.
From intent to containers
Start from graph.sample.yaml. Maintain your installation graph alongside the other YAMLs. Generation expands it from enabled cameras, models, and collection sessions.
graph.yaml · you own
Templates for nodes, inputs, outputs, edges, conditions, and queue settings. Edit it when changing supported pipeline paths.
pipeline.yaml · generated
The concrete nodes and connections for this installation. Disabled cameras and inactive conditional branches are omitted.
pipeline.compose.yaml · generated
The Docker entry point. Includes service Compose files with images, commands, mounts, endpoints, restart policies, and health checks.
The processing path
Each enabled camera gets its capture service. Models may be shared; tracking and enrichment remain scoped to cameras. With tracking disabled, inference can feed enrichment directly.
- 01Camera
- 02Inference
- 03Tracking
- 04Enrichment
- 05Rules
Delivery and optional branches
Rules send accepted events and alerts to row builder, and alerts to notifier. Monitor sends health metadata to row builder. Collector joins original camera frames with inference detections.
- 01Row builder
- 02Persistent buffer
- 03HTTP ingest
- 04Branch database
One entry point, separate service files
Keep the generated files together. Use the umbrella for the whole installation, or select a service name from its service list.
config/.generated/
pipeline.yaml
pipeline.compose.yaml # umbrella: project, volumes, includes
camera.compose.yaml
inference.compose.yaml
tracking.compose.yaml
enrichment.compose.yaml
rules.compose.yaml
row_builder.compose.yaml
buffer.compose.yaml
ingest.compose.yaml
notifier.compose.yaml
monitor.compose.yaml
collector.compose.yaml