The GitHub Actions workflow .github/workflows/release.yml publishes a GitHub
Release when a version tag is pushed. A release holds one archive per platform:
| Asset | Runner | Executable |
|---|---|---|
flare-linux-amd64.tgz |
ubuntu-24.04 |
flare/flare, the CLI |
flare-linux-arm64.tgz |
ubuntu-24.04-arm |
flare/flare, the CLI with the RoCE transport |
flare-windows-amd64.zip |
windows-2025 |
flare/Flare.exe, the desktop client |
flare-windows-arm64.zip |
windows-11-arm |
flare/Flare.exe, the desktop client |
Archive names carry no version, so
releases/latest/download/flare-linux-arm64.tgz always names the most recent
release. Each archive also contains LICENSE, NOTICE,
THIRD_PARTY_NOTICES.md, licenses/, and third_party/, as
third-party notices describes.
A release contains no Windows CLI, Debian package, Selene manager, or container image. Build those from source: Windows serving, Debian packages, the Selene manager, and container. Ignition, Python, and model cores are separate preparation inputs and are never part of a release.
Every executable loads the NVIDIA driver at run time; no archive contains CUDA libraries, and no build links the CUDA toolkit.
- The Linux executables are built on Ubuntu 24.04 and require glibc 2.39 or later.
- The arm64 Linux executable links
libibverbsfor multi-host RoCE serving. Installlibibverbs1andibverbs-providers. - The Windows desktop requires Windows 11. It bundles its Windows App SDK and
Visual C++ runtime files.
Flare.exeis unsigned.
Release executables embed no publisher verification profiles; publisher acceptance follows signing as it does for a source build.
- Set the same
versioninflare-cli/Cargo.toml,flare-winui/bridge/Cargo.toml, andflare-winui/launcher/Cargo.toml, update the threeCargo.lockfiles, and merge the change to the default branch. - Tag that commit
vMAJOR.MINOR.PATCHwith the same version and push the tag.
The workflow publishes to the repository that received the tag. Running it
through workflow_dispatch performs every build and check and uploads the four
archives as workflow artifacts without creating a release.
Enable the repository's immutable-releases setting so that published assets
cannot be replaced and gh release verify-asset can check a downloaded file.
The workflow attaches every asset to a draft and publishes the draft last, the
order that setting requires.
All builds use Rust 1.94.1 and the locked Cargo manifests. Every job must pass before anything is published; no target can be skipped.
- Version. A tag push requires the tagged commit to be an ancestor of the
default branch. The three crate versions listed above must equal the tag's
version. A dispatched run takes the version from
flare-cli/Cargo.toml. - Linux. The runner builds
flarewithcargo build --locked --release --manifest-path flare-cli/Cargo.tomland packages it withpackaging/archive.py. The extracted archive then runs in anubuntu:24.04container that holds only that image's libraries, plus the two RoCE packages on arm64:flare --versionmust printflare VERSION, andflare run --help,flare agent --help, andflare orbit --helpmust succeed. The job also requires the license and notice files in the archive. - Windows. The runner installs tools with
scripts/setup_windows.ps1 -RustToolchain 1.94.1 -BuildToolsOnly, builds withscripts/build_winui.ps1 -Platform PLATFORM -SingleFile, and packages withpackaging/archive.py --winui-packages.Flare.exeis then started from a directory that contains no other file. The launcher must exit with code zero, andflare-winui.exemust open a window from the extracted runtime and still be running 15 seconds later. - Publication.
gh release create --draft --generate-notesattaches the four archives, thengh release edit --draft=falsepublishes the release. If publication fails after the draft exists, delete the draft before rerunning the job.
The runners have no NVIDIA GPU. A release establishes that each executable
builds from the locked manifests, starts on its operating system and
architecture, and ships with its notices. It does not establish model serving.
Serving qualification is stated per platform in Windows serving,
the desktop client, and
model preparation and serving, and a release does not
extend it. The workflow runs no crate test suites; Native serving runs them
on x86_64 Linux and x86_64 Windows only.
Qualified on x86_64 Linux outside GitHub Actions: packaging the CLI with
packaging/archive.py and the workflow's clean-container check, including its
rejection of a version that differs from the expected one. The desktop archive
layout is qualified with a placeholder in place of Flare.exe and the pinned
NuGet packages downloaded from nuget.org.
Not qualified: any run of the workflow on GitHub-hosted runners, the arm64 Linux build and check, the Windows build and startup check on either architecture, and publication.