Inventory is a set of simple key-value attributes that are useful know about a device, similar to the device identity attributes. However, the device inventory attributes are not used to uniquely identify over time, they are just informational. As such, they do not need to be unique for each device like the device identity attributes.

The Mender client will periodically collect inventory-related data for reporting to the Mender server. This data is obtained by running executables located in the directory /usr/share/mender/inventory. The Mender client will list and run files that are executable and have mender-inventory- prefix. Other files are ignored. Each executable may be a simple shell script or a binary.

When run, the executable is expected to produce a set of attribute on its standard output in the following key/value format:


For example, a script could produce the following output:


Newline characters are stripped, and it is not supported to have newline as part of values. If such characters may exist they need to be encoded. For example, a URL-compatible encoding foo\nbar becomes foo%10bar.

Creating lists

Attributes appearing multiple times will have their values merged into a list. For example, the following output


is conceptually merged into the following representation:

interface = [eth0, wlan0]
ip_address_eth0 =
ip_address_wlan0 =

Found errors? Think you can improve this documentation? Simply click the Edit link at the top of the page, and then the icon on Github to submit changes.