Enable OTA support in your Zephyr project: set CONFIG_MEMFAULT_ZEPHYR_FOTA_BACKEND_MCUBOOT=y; ensure MCUboot is configured as the bootloader with a secondary (DFU) flash partition
Build and sign the firmware image with imgtool.py using your private signing key; the signed binary is the artifact to upload to Memfault
Upload the OTA artifact to Memfault: in the console go to Software > OTA Releases, create a release, and attach the signed firmware binary for the target hardware version
Create a Cohort in Memfault and assign devices to it; deploy the release to the cohort and set a rollout percentage to stage the update gradually
On the device, call the Memfault OTA check API (memfault_ota_check_for_update) at boot or on a schedule; if an update is available, download it to the MCUboot secondary partition and call boot_request_upgrade()
After reboot MCUboot swaps to the new image; the device must call boot_write_img_confirmed() after self-validation to make the update permanent, or MCUboot will revert to the previous image
Known gotchas
Image signing keys must match between the MCUboot build and the imgtool signing step; a key mismatch causes MCUboot to reject the image at boot with no obvious error in the application log
Rollout percentage is advisory, not enforced atomically; devices that poll simultaneously may all receive the update — use cohort staging with a small initial percentage to catch regressions early
The secondary partition size must be at least as large as the firmware image; adjust the partition table if builds grow beyond the initial estimate
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp