One static binary per platform, or a package for the manager you already use. The quickest way is the install script: it works out which build this machine needs, checks it against the published checksums, and puts it on your PATH.
curl -fsSLO https://raw.githubusercontent.com/mesutoezdil/siltide/main/packaging/install/install.sh
sh install.sh
The rest of this page is the manual alternative.
| Platform | What to take | Updates |
|---|---|---|
| Linux x86-64 / arm64 | siltide-linux-amd64, siltide-linux-arm64 | the install script, or by hand |
| macOS arm64 / x86-64 | siltide-darwin-arm64, siltide-darwin-amd64 | Homebrew, or the install script |
| Debian, Ubuntu | siltide_*_amd64.deb | apt, once installed |
| Fedora, RHEL, SUSE | siltide-*.x86_64.rpm | dnf or zypper |
| Alpine | siltide_*.apk | apk, with an OpenRC service included |
| Arch | siltide_*.pkg.tar.zst | pacman |
| Container | ghcr.io/mesutoezdil/siltide | pull the tag again |
| Nix | github:mesutoezdil/siltide | nix run, nothing installed |
The install script does all of this. To do it manually, paste the whole block into an empty directory: it downloads the build for this machine, checks it against the published checksums, checks where it was built, and installs it.
os=$(uname -s | tr '[:upper:]' '[:lower:]') # linux or darwin
arch=$(uname -m | sed 's/x86_64/amd64/; s/aarch64/arm64/') # amd64 or arm64
tag=$(curl -fsSL https://api.github.com/repos/mesutoezdil/siltide/releases | grep -m1 '"tag_name"' | cut -d '"' -f4)
base=https://github.com/mesutoezdil/siltide/releases/download/$tag
curl -fsSLO "$base/siltide-$os-$arch"
curl -fsSLO "$base/checksums.txt"
command -v sha256sum >/dev/null && sha=sha256sum || sha="shasum -a 256"
$sha -c checksums.txt --ignore-missing
gh attestation verify "siltide-$os-$arch" --repo mesutoezdil/siltide
chmod +x "siltide-$os-$arch"
sudo install "siltide-$os-$arch" /usr/local/bin/siltide
The attestation says which workflow, at which commit, produced that exact file, and gh attestation verify is the command that reads it. A binary downloaded through a browser rather than curl is quarantined by macOS until the builds are signed: xattr -d com.apple.quarantine /usr/local/bin/siltide.
Each release also ships an SBOM listing what went into every artifact.
siltide --demo # explore every view without hardware
siltide # probe what is actually in this machine
siltide --diagnose # what it found, what it did not, and why
siltide --update # move to the newest release, checksum verified
--update checks the download against the published checksums before anything is written, and replaces the binary with a rename rather than a copy, so an interrupted update cannot leave half a file on your PATH. If a package manager installed it, --update says so and stops.