Release Notes
What changed in each release, filtered to what matters for operators running an edge box. For how versions are reported on your device, see Versions & Updates.
Unreleased
Section titled “Unreleased”Not on any box yet — these land in the next release.
Config transfer carries the whole pipeline
Section titled “Config transfer carries the whole pipeline”An exported configuration will describe connections, tag mappings and the flows over them, so moving a pipeline to another box no longer means rebuilding every flow by hand. Flows reference their datasources and model by name, so a file carries no database Ids.
Imported flows always arrive disabled; loading a file never arms a pipeline. If the target box does not have a flow’s model, that flow is skipped and named in the import report with what to upload — upload it and re-import the same file.
An import that would rewrite a datasource the enabled flow is using is
refused with disable_flow_first, naming the flow. Disable it, import, enable it
again. This includes re-importing a box’s own export, which previously worked
only because the values happened to be identical.
Also fixed: exported configurations were dropping input samplingHz and output
tagCount, so a config moved between boxes came out subtly different.
Latest
Section titled “Latest”Flows replace per-datasource pairing and enabling
Section titled “Flows replace per-datasource pairing and enabling”A flow binds one input datasource, one model version and any number of output datasources. It is now the only record of which pipeline is selected: enabling a flow arms it, and at most one may be enabled at a time.
What you need to do after upgrading: nothing for an existing install — the upgrade creates a flow from your current pairing and keeps it enabled. But two things behave differently:
- Enabling moved. The Data Source page is connection management now; enable and model pairing live on the Task Manager page.
- Config import no longer carries flows. An exported configuration is connections and tag mappings; after importing onto a new box, create the flows in Task Manager. Envelopes exported before this release still import; their per-datasource enabled flag is ignored.
Removed API: POST /api/datasources/{input,output}/{id}/enable, and
POST|DELETE /api/datasources/input/{id}/active-model. Use /api/flows.
intentSource in /api/model-runtime now reports "flow" where it reported
"datasource".
See Task Manager and API Reference.
Live pipeline view (Preview Flow)
Section titled “Live pipeline view (Preview Flow)”- A new Preview Flow page visualizes the Input → Model → Output pipeline as an interactive, read-only graph, with live data-flow animation on the running inference chain. It draws every configured flow and dims the ones that are not running.
- Click any node to jump straight into its config dialog — edit mapping, test-write — from the canvas. Pairing and enabling now happen in Task Manager; the canvas links there.
See Preview Flow.
System notifications
Section titled “System notifications”- A new NotificationCenter (bell icon in the header) surfaces inference start/fault, model activation, log warnings/errors, and sink write failures as toasts and a running list.
- Inference now raises an alert when it stops for a reason you didn’t directly request — another datasource taking over, or the active datasource being edited or deleted while running.
- After a backend restart, a previously enabled input datasource automatically regains its Ready state and Start control — it does not restart inference by itself — see Monitoring.
See Notifications.
MQTT reliability hardening
Section titled “MQTT reliability hardening”- The MQTT input adapter now subscribes only to its mapped tags instead of the wildcard base topic, so unrelated broker traffic can’t starve inference.
- A mapped topic that goes quiet halts inference instead of feeding the model a frozen last value, and the adapter reconnects with backoff after a broker drop.
NaN/Infinityreadings are rejected before they reach the model, and Test Connection now reports real socket-level failures (refused, unreachable, DNS) instead of a raw exception name.
See Input Datasources and MQTT input stops or faults.
Delivery guarantees for predictions
Section titled “Delivery guarantees for predictions”- The MQTT output sink now publishes at QoS 1, so a broker-rejected write (for example, an ACL-denied topic) surfaces as a failure instead of silently reporting success.
See Output Datasources.
Datasource configuration UX
Section titled “Datasource configuration UX”- Config fields now show or hide based on what you’ve already selected — TLS fields only appear once TLS is enabled, for example — so the form only asks for what applies.
- Tag-mapping and connection errors now read as plain sentences instead of raw backend codes.
- Test Write starts from a payload template matching the datasource type, and an output with no tag mapped can no longer be enabled.
See Input Datasources and Output Datasources.
Datasource TLS certificates on the offline bundle
Section titled “Datasource TLS certificates on the offline bundle”- MQTT and OPC UA datasource TLS certificates are now supported on the offline/air-gapped installer and bundle-update path, not just local development.
2026-06 — Execution providers, CSV output & container hardening
Section titled “2026-06 — Execution providers, CSV output & container hardening”Execution-provider modes for edge hardware
Section titled “Execution-provider modes for edge hardware”- The runtime now classifies its execution provider explicitly: TensorRT, CUDA, or CPU. GPU boxes prioritize GPU acceleration by default and fall back gracefully if a GPU library is unavailable.
- A strict mode can turn a silent CPU fallback into a startup failure, so a GPU box never quietly runs on CPU.
- The dashboard now shows the active execution provider so you can confirm what your box is really using. See Monitoring.
CSV output datasource
Section titled “CSV output datasource”- A new CSV output writes prediction results to rotating CSV files, with configurable file size, rotation, and flush behavior. See Output Datasources.
Reliability & observability
Section titled “Reliability & observability”- Honest CPU temperature. When a box has no readable CPU thermal sensor, the
dashboard now shows N/A instead of a misleading
0 °C. - Disk space reclamation. The metrics database now returns freed space to the operating system after its retention sweep, and caps total rows so a traffic burst can’t fill the disk.
- Accurate runtime status. The Model Manager runtime card no longer shows a false “Desync” when idle or warming up.
Hardened containers
Section titled “Hardened containers”- All services now run as non-root users.
- The web frontend listens on an unprivileged port internally (host ports are unchanged).
v0.5 — Inference observability dashboard
Section titled “v0.5 — Inference observability dashboard”- Latency decomposition (queue / pre-process / model exec / post-process)
- Window & bucket controls for time aggregation
- Per-model latency thresholds
v0.4 — Datasource platform
Section titled “v0.4 — Datasource platform”- OPC-UA and MQTT adapters
- Rate limiting and backpressure reporting
v0.3 — Model lifecycle
Section titled “v0.3 — Model lifecycle”- Model versioning and staged promotion
v0.2 — Web dashboard
Section titled “v0.2 — Web dashboard”- Live, push-driven dashboard updates
- Role-based access control and an audit log