Flatpak
June 10, 2026 ยท View on GitHub
Release page: https://github.com/jeduden/mdsmith/releases
The Flatpak channel ships mdsmith as a single-file
.flatpak bundle. The bundle is attached to each GitHub
release. Its app id is io.github.jeduden.mdsmith, and it
is x86_64 only. The commands below download the latest
mdsmith-x86_64.flatpak, install it, and run it:
curl -LO https://github.com/jeduden/mdsmith/releases/latest/download/mdsmith-x86_64.flatpak
flatpak install ./mdsmith-x86_64.flatpak
flatpak run io.github.jeduden.mdsmith check .
The first install also pulls the
org.freedesktop.Platform 24.08 runtime from Flathub.
That happens only if the host lacks it. Only the runtime
comes from Flathub; the mdsmith binary is baked into the
bundle. The bundle records Flathub as its runtime source,
so the install can offer it.
Flatpak sandboxes every app. So the manifest declares
--filesystem=host. A linter must read whatever files the
user points it at. Those files can live anywhere. A
narrower grant would hide them.
The app is one prebuilt binary, so the manifest has no
compile step. A file source installs the x86_64 binary
as /app/bin/mdsmith. That source is a local path, not a
release-download URL. The bundle is built from the freshly
built binary, before the release that hosts it exists.
The flatpak job in release.yml chains off build, not
release. So the bundle is ready before the draft release
freezes. An immutable, published release rejects new
assets, so the timing matters.
The job stages the manifest and the binary with
build-flatpak. It runs
flatpak-builder against the freedesktop 24.08 runtime
and SDK. Then flatpak build-bundle packs the result into
one file. The job also verifies the bundle installs and
reports the tag's version. Then it uploads the bundle as
an artifact.
The release job attaches that artifact to the draft. The
bundle is named mdsmith-x86_64.flatpak. So it matches
the mdsmith-* glob the release job already uses. That
glob drives checksums.txt, the SLSA build-provenance
attestation, and the cosign signature. All three cover the
bundle, the same as the raw binaries.
Only x86_64 ships. flatpak-builder targets the runner's
native architecture. Cross-building aarch64 under
emulation is not worth it for this channel. aarch64 Linux
hosts use the binary, npm, or PyPI channels.
Auth: none of its own. The bundle rides the release
job's GITHUB_TOKEN upload and OIDC signing. That is the
same path the other release binaries take. There is no
separate publisher token to rotate.