Authdog
Back to journal

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

2 min read
Rust CLI binary connected to Linux, macOS, and Windows targets

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 | bash

Supported Linux users can request musl explicitly:

AUTHDOG_CLI_USE_MUSL=1 \
curl https://cli.auth.dog/install -fsS | bash

And PowerShell users get the equivalent through the Windows script:

iwr -useb https://cli.auth.dog/install.ps1 | iex

Testing 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.