Tools and libraries to work with AppStream metadata
280
stars
4,795
commits
C
primary language
Sep 11, 2026
updated
AppStream makes machine-readable software metadata easily accessible. It is a foundational block for modern Linux software centers, offering a seamless way to retrieve information about available software, no matter the repository it is contained in. It can provide data about available applications as well as available firmware, drivers, fonts and other components. This project it part of freedesktop.org.
appstreamcli for metadata queries, data verification and diagnostics.
The appstreamcli compose tool can be used for simple catalog metadata composition.You can download signed release tarballs of AppStream on freedesktop.org.
Run appstreamcli validate --pedantic /path/to/metadata.xml on the XML metadata you want to check.
Any error makes the data unreadable, warnings result in degraded data (and parts of it may be ignored),
while infos are recommendations that are not fatal. Pedantic issues are nice-to-have or may not
be applicable recommendations in all cases.
Your contributions make AppStream better! Whether you're a developer, translator, or enthusiast, there's a place for you here.
Issues are currently tracked via GitHub Issues. Feel free to file your bug, feature request or change request there. Please be patient in case it takes a while for your issue rto be reviewed, and be open to discussions in case of feature requests.
We gladly consider your changes as pull requests! Thank you for contributing and taking the time
to write a patch. Make sure your code compiles in maintainer mode, and you may want to format
your changes to adhere to the AppStream coding style.
To help with the latter we provide the autoformat.py helper script to format code via clang-format.
Optional:
If you are using the released tarballs, the HTML documentation will be prebuilt and DAPS, which is a heavy dependency, is not required to make it available locally.
To compile AppStream, make sure that you have all required libraries (development files!) installed. Then continue (the build system will complain about missing dependencies).
Use Meson to configure AppStream and build it with Ninja:
mkdir build
cd build
meson setup <flags> ..
ninja
ninja test
For commonly used setup flags, use -Dqt=true to enable building the Qt interface, -Dvapi=true
to build the Vala bindings, -Dcompose=true to build the AppStream catalog compose library and
tools, -Dapt-support=true to enable integration with APT and -Ddocs=true to rebuild
the documentation using DAPS.
During development and before submitting a pull-request, you may also want to use
-Dmaintainer=true to enable stricter compiler flags and other changes to aid development.
To install the compiled binaries and required data, execute ninja install.
You can help translating AppStream via Weblate! Check out the AppStream Weblate Page, and thank you for helping to translate this project!
C
89.8%
C++
8.0%
Meson
1.2%
Tools and libraries to work with AppStream metadata
280
stars
4,795
commits
C
primary language
Sep 11, 2026
updated
AppStream makes machine-readable software metadata easily accessible. It is a foundational block for modern Linux software centers, offering a seamless way to retrieve information about available software, no matter the repository it is contained in. It can provide data about available applications as well as available firmware, drivers, fonts and other components. This project it part of freedesktop.org.
appstreamcli for metadata queries, data verification and diagnostics.
The appstreamcli compose tool can be used for simple catalog metadata composition.You can download signed release tarballs of AppStream on freedesktop.org.
Run appstreamcli validate --pedantic /path/to/metadata.xml on the XML metadata you want to check.
Any error makes the data unreadable, warnings result in degraded data (and parts of it may be ignored),
while infos are recommendations that are not fatal. Pedantic issues are nice-to-have or may not
be applicable recommendations in all cases.
Your contributions make AppStream better! Whether you're a developer, translator, or enthusiast, there's a place for you here.
Issues are currently tracked via GitHub Issues. Feel free to file your bug, feature request or change request there. Please be patient in case it takes a while for your issue rto be reviewed, and be open to discussions in case of feature requests.
We gladly consider your changes as pull requests! Thank you for contributing and taking the time
to write a patch. Make sure your code compiles in maintainer mode, and you may want to format
your changes to adhere to the AppStream coding style.
To help with the latter we provide the autoformat.py helper script to format code via clang-format.
Optional:
If you are using the released tarballs, the HTML documentation will be prebuilt and DAPS, which is a heavy dependency, is not required to make it available locally.
To compile AppStream, make sure that you have all required libraries (development files!) installed. Then continue (the build system will complain about missing dependencies).
Use Meson to configure AppStream and build it with Ninja:
mkdir build
cd build
meson setup <flags> ..
ninja
ninja test
For commonly used setup flags, use -Dqt=true to enable building the Qt interface, -Dvapi=true
to build the Vala bindings, -Dcompose=true to build the AppStream catalog compose library and
tools, -Dapt-support=true to enable integration with APT and -Ddocs=true to rebuild
the documentation using DAPS.
During development and before submitting a pull-request, you may also want to use
-Dmaintainer=true to enable stricter compiler flags and other changes to aid development.
To install the compiled binaries and required data, execute ninja install.
You can help translating AppStream via Weblate! Check out the AppStream Weblate Page, and thank you for helping to translate this project!
(top 30 of 307)
C
89.8%
C++
8.0%
Meson
1.2%