Shipping one Rust CLI to nine platform targets
How Authdog packages its Rust terminal application for Linux, macOS, and Windows with checksums and a small installer service.
Authdog Engineering

A native terminal application feels simple the moment it's installed. Getting the right executable onto each person's machine in the first place is the part that actually takes work.
Authdog CLI is written in Rust, and its beta release publishes archives for nine separate operating-system and architecture targets.
Covering the machines developers actually use
The release matrix looks like this:
- Linux x86_64, aarch64, i686, and armv7
- Linux musl x86_64 and aarch64
- macOS Intel and Apple Silicon
- Windows x64
GNU-linked Linux builds cover the common distributions people already run, and the musl builds give a more portable option on supported x64 and arm64 systems, which is useful for anything from Alpine containers to more locked-down environments.
Every archive gets built in CI and published alongside a SHA-256 manifest, so installers and users both have a stable integrity value to check each release artifact against.
Keeping installation small
The install endpoint detects the operating system and architecture, resolves the matching GitHub release asset, downloads it, and drops authdog-cli into the chosen directory. That's the whole job, and it's intentionally boring.
If you need more control, a few environment variables handle it:
AUTHDOG_CLI_VERSION=0.1.0-beta.1 \
INSTALL_DIR="$HOME/.local/bin" \
curl https://cli.auth.dog/install -fsS | bashSupported Linux users can request musl explicitly:
AUTHDOG_CLI_USE_MUSL=1 \
curl https://cli.auth.dog/install -fsS | bashAnd PowerShell users get the equivalent through the Windows script:
iwr -useb https://cli.auth.dog/install.ps1 | iexTesting the core, continuously
Every normal CI run checks formatting, runs Clippy with warnings denied, builds, and executes unit tests on Linux and macOS. A weekly RustSec audit checks dependency advisories on top of that, so nothing lingers unnoticed between releases.
The current test suite covers parsing and rendering for login, organizations, tenants, projects, environments, identity information, and persisted sessions: the parts of the CLI that change the most and would hurt the most if they silently broke.
What the matrix doesn't prove
Packaging an executable correctly isn't the same thing as validating every end-to-end flow, and it's worth being honest about that gap. The beta doesn't yet have live integration coverage for browser OAuth and API navigation, and Windows is packaged without the same regular build-and-test matrix that Linux and macOS get.
Release engineering is strongest when it's precise about what it actually guarantees. Right now, Authdog ships broad binary coverage, checksums, static analysis, unit tests, and dependency auditing. Cross-platform end-to-end verification is honest work still ahead of us for a later release.