Introduction to Memfault
Memfault is a cloud platform that allows you and your team to continuously monitor devices, debug firmware issues, and deploy OTA updates to your fleet, iterating on hardware products as quickly as software.
- Memfault is embedded-first: embedded systems and devices running on any real-time operating system (RTOS), Android, or Linux are supported.
- Memfault runs on any device: from powerful SoCs down to microcontrollers (MCUs) with the most constrained capabilities, it fits into your device's available flash, RAM, and bandwidth.
- Memfault handles low and intermittent connectivity: if your device can only send out a small amount of data, you can ration it in chunks of the size you choose, and Memfault transports it. If your device relies on a companion device (such as a mobile phone) for internet access, you can use it as a bridge. You can also post data directly from your device.
- Memfault protects privacy: you have full control over what your devices send to Memfault.
Memfault is a central platform for:
Memfault provides insights into your devices' behavior by default, and is configurable to fit your needs.
Device Vitals provides built-in insights for your
devices. Read more in the
Device Vitals documentation.
Debugging​
On your devices, Memfault keeps track of crashes automatically and makes crash reports available on the Memfault web application as soon as they are uploaded.
The web application offers a complete view into your collected traces and bug reports. With them, you do not need to ship the device to your facility or attach a debug probe to it. Even with the device on your desk, the Memfault traces are a better place to debug, thanks to the visualizations and connected data the platform displays. The traces are useful even during development.
Memfault simplifies the reproduction of customer issues. Consider a workflow where a customer support agent files a ticket for engineering that already includes a Memfault link to the affected device, or even a link to the trace itself.

The trace analysis view exposes the full state captured in the crash dump your device uploaded. In this example, you can see the values of local variables and registers at the time of the crash.

The Memfault web application performs crash symbolication on your devices' traces and allows you to dig deep into the state of the device, right from your browser.

Read logs relevant to each trace and perform complex text searches.
Traces are grouped together during processing, so you do not have to look at every single instance of a problem. A group of collected traces with matching error reasons is called an issue. Even after grouping, you can still access all available traces of an issue.
To learn more about debugging and set it up for your project, continue on to:
Over-the-air (OTA) updates​
Traditionally, preparing an update means handing a pilot device over to QA, waiting for bugs to be found, fixing them, and repeating. With Memfault, the workflow looks different:
- Split your devices into a production cohort and a beta cohort.
- Configure an automatic update for devices in the beta cohort.
- Measure success metrics, such as the number of reboots or crashes.
- Once your software is ready, enable the update for all production devices.
Memfault OTA updates enable this streamlined workflow as well as complex setups, including staged rollouts (aiming at only a fraction of your population), delta releases (also known as incremental updates), and many more scenarios.
Memfault OTA updates increase velocity, reduce the risk of rolling out an update, and offer visibility into team productivity.

A view into the current state of a cohort and the software versions its devices are running, alongside the future versions targeted for OTA.
To benefit from the increased velocity while still maintaining the high standards of quality required by the nature of hardware products, use the rest of the Memfault feature suite: debugging and metrics.
To learn more about OTA updates and set up your project to use them, see the OTA updates documentation.
Monitoring via metrics​
To collect new data from your devices with Memfault, write two lines of C or Kotlin in any of the supported SDKs. The platform handles transport and the multipart data pipeline, so adding a new metric does not involve data scientists, your web backend team, or your mobile app developers.
Adding metrics to your Memfault integration unlocks many features whose value compounds with all other features of the platform.
Device metrics​
A timeline view for every single individual device showcasing its metrics, including time-series data, reboots, and crashes.

The metrics timeline for a single MCU device, showing reported software versions, reboots, and per-metric time-series traces.
Fleet metrics​
Among others, adding metrics to your Memfault integration unlocks:
- Device attributes and time-series data across your whole fleet.
- Metric charts that aggregate the value of your metrics across your fleet, sliced by cohort or software version.
- Email alerts based on your own configured thresholds.
- Device search view that lets you express complex queries.
- Device sets enable visualizing changes in device searches over time.

An aggregation of reboot events in your fleet. Drill down to find out which devices are causing an anomaly.

Compare aggregated custom metrics across the fleet and see the effect of recent updates against measured data.

Search devices by combining timeseries-metric thresholds over a historical
window. In this example, the query finds devices that reported a
chassis_temperature_celsius heartbeat above 50 and a voice_command_count
heartbeat above 5 between 2024-06-21 and 2024-06-27.

Save your searches as device sets and observe the evolution of the results.
To learn more about monitoring with metrics, see the Metrics documentation.