Skip to content

Design docs

Working documents: the shape of a change and its trade-offs, written before or alongside the code. They are not reference — a design doc can describe something that shipped differently, or has not shipped at all, so check its status line before trusting a detail. Decisions that were made live in decision records; how to run what shipped is the Operator's Manual.

Design What it covers
Actor model and control plane Why Orpheus hand-rolls actors on NATS rather than adopting an actor framework, with the survey of eleven that were rejected
Audio-events agent The PANNs/AudioSet classifier: model choice, the curated class whitelist, and interval post-processing
Cross-classifier identity Making three classifiers agree that two labels mean one animal — namespaces, the equivalence table, and the layered identity stack
Distributed and config service Sequencing for splitting Orpheus across hosts, and the backplane as the config source
Distributed deployment The ops layer for multi-host installs: per-host component sets, the backbone URL, and what a sensor-only host needs
Entity source identity Grouping observations by source rather than by clock time, so one clip does not collapse into one entity
Event-sourcing determinism contract What a future rebuild from the event log may and may not reconstruct
Observability and event sourcing Keeping telemetry out of the detection stream, and what a durable shadow stream would cost
Read-only portal A public-facing read path: the projection chokepoint, and the replica that keeps browsing off the recording database
Sim test matrix Testing failure modes against topologies without a field station
Storage retention One component owning every deletion: ceilings, floors, the free-space reserve, and why floors win