Max

OTA Firmware Flow

Device registry → flash → self-test → commit or rollback.

OTA Firmware Flow (v2026-09-30T095736Z-5e473105f4) 2026-09-30 | Device registry → flash → self-test → commit or rollback. 1 - Device Registry - Maintains device information device_registry.py _emit_device_discovered DeviceRegistryRequest DeviceRegistry _device_to_dict _wrap_device device_registry.db devices table registry_versions table event_bus fleet:device_discovered device info device event 2 - Firmware Release - Manages firmware versions firmware_releases.py compute_sha256 releases_root _write_atomic FirmwareReleaseStore PopulateRequest device_registry.db firmware_releases table prod/firmware-releases content-addressed firmware binaries manifest.json firmware binary firmware manif… 3 - Firmware Doctor - Monitors device health firmware_doctor.py DeviceHealth FirmwareDoctor on_device_online on_device_offline event_bus firmware:alert firmware:recovered firmware:doctor:escalate device health 1. Register device 2. Populate firmware 3. Monitor device health 4. Alert on issues 5. Escalate critical issues Device Registration Request { "device_id": "dev123", "name": "Blaine", "friendly_name": "Blaine", "hardware_class": "V3", "ip_address": "192.168.1.100" } Firmware Release Manifest { "sha256": "abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890", "version": "0.0.88V4", "git_commit": "abc123", "git_branch": "main", "size_bytes": 123456 } The firmware binaries are stored in a content-addressed manner, ensuring immutability and deduplication. Legend actor = initiates work · process = code path · store = state on disk · bus = durable queue · dashed = separate process cyan = request flow · pink = state read/write · dashed green = pull / return path · red = refusal As of 2026-09-30 09:57 UTC, from commit 5e47310

Provenance

This drawing is generated, not drawn. It is rebuilt from the source files below, so when they change the picture changes — a diagram here cannot quietly describe a system that no longer works this way.

Owner
Max
Slug
ota-firmware-flow
Rendered
2026-09-30T095736Z
From commit
5e473105f4
Updated
30 Sep 2026, 09:57 UTC
Sources at
5e47310
Watches
5 paths
  • daemon/src/device_registry.py
  • daemon/src/firmware_releases.py
  • daemon/src/firmware_doctor.py
  • daemon/scripts/populate_firmware_release.py
  • firmware/mx/lib/OTAManager