Skip to content

Component version & compatibility matrix

Each component carries its own VERSION file (SemVer) — the single source of truth read at build time via setuptools [tool.setuptools.dynamic]. See adr/0014-independent-component-versioning.md.

Bump a component with scripts/bump-version.sh <component-path> <major|minor|patch>.

Current (2026-08-26)

Component Path Version Requires orpheus-common
orpheus-common platform/orpheus-common 0.4.0 — (it is the shared lib)
orpheus-ui (backend) services/orpheus_ui/backend 0.4.0 via requirements.txt editable path
orpheus-gps services/orpheus-gps 0.2.0 >=0.2.0
orpheus-agent-audio-motion agents/orpheus-agent-audio-motion 0.3.0 >=0.2.0
orpheus-agent-audio-playback agents/orpheus-agent-audio-playback 0.2.0 >=0.2.0
orpheus-agent-audio-events agents/orpheus-agent-audio-events 0.2.0 >=0.2.0
orpheus-agent-video-motion agents/orpheus-agent-video-motion 0.3.0 >=0.2.0
orpheus-agent-video-snapshotter agents/orpheus-agent-video-snapshotter 0.3.0 >=0.2.0
orpheus-agent-video-timelapser agents/orpheus-agent-video-timelapser 0.2.0 >=0.2.0
orpheus-agent-bird-detection agents/orpheus-agent-bird-detection 0.2.0 >=0.2.0
orpheus-agent-crow-detection agents/orpheus-agent-crow-detection 0.2.0 >=0.2.0
orpheus-agent-event-correlator agents/orpheus-agent-event-correlator 0.2.0 >=0.2.0

Compatibility rule

Dependents declare a minimum orpheus-common version with an open upper bound (>=X.Y.Z, no <). The bound is raised only when a real breaking change in orpheus-common's public API forces it (which is also a major bump of orpheus-common). Until then, any newer orpheus-common is assumed compatible.

In the monorepo, agents resolve orpheus-common from the editable path install in their requirements.txt (-e ../../platform/orpheus-common), so the >= constraint is satisfied locally and never triggers a PyPI lookup. The pin becomes load-bearing once components are published (see the PyPI Publishing Pipeline backlog item).