Skip to content

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.

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.


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.

  • 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.

  • 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.

  • 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/Infinity readings 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.

  • 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.

  • 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.

See Offline Bundle Install.

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.
  • A new CSV output writes prediction results to rotating CSV files, with configurable file size, rotation, and flush behavior. See Output Datasources.
  • 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.
  • 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
  • OPC-UA and MQTT adapters
  • Rate limiting and backpressure reporting
  • Model versioning and staged promotion
  • Live, push-driven dashboard updates
  • Role-based access control and an audit log