staxup is a cross‑platform binary updater and version manager designed for the Stax ecosystem — but flexible enough for any standalone CLI tool.
It provides a consistent, reliable, and secure way to distribute, update, and
rollback self‑contained binaries across Linux, macOS, and Windows.
Tools like StaxPing, StaxSpec, and future Stax utilities all use staxup as
their update engine.
staxup is written in Rust, licensed under Apache 2.0, and built to be simple, predictable, and ecosystem‑friendly.
-
Cross‑platform binary updates
Linux, macOS, Windows — no installers required. -
Manifest‑driven
Tools define their metadata in a simple TOML file (e.g.staxping.toml). -
Rollback support
Every update keeps the previous version for instant recovery. -
Channels
Stable, beta, nightly — fully supported. -
Checksums & integrity verification
SHA‑256 validation for all downloaded binaries. -
Self‑contained folder structure
Tools install into:~/.local/share/stax/<tool>/ -
Library + CLI
Use staxup as a Rust crate or as a standalone command. -
Registry‑optional
Works with GitHub Releases, custom URLs, or a Stax registry. -
Ecosystem‑ready
Designed for multi‑tool suites like Stax, but generic enough for external use.
staxup is distributed as a standalone binary and as a Rust crate.
staxup update <tool>
staxup check <tool>
staxup rollback <tool>
use stax_up::Updater;
fn main() -> anyhow::Result<()> {
Updater::new("staxping")
.with_manifest_path("staxping.toml")
.with_remote_manifest("https://example.com/staxping.toml")
.check_and_apply()?;
Ok(())
}staxup installs tools into a predictable, isolated directory:
~/.local/share/stax/<tool>/
latest/ # active version
old/ # rollback version
<tool>.toml # installed manifest
This structure is shared across all Stax tools.
Each tool ships with a simple TOML manifest:
version = "2.0.0"
channel = "stable"
min_updater = "1.0.0"
[downloads]
linux_amd64 = "https://example.com/tool-linux-amd64"
windows_x64 = "https://example.com/tool-windows-x64.exe"
[checksums]
linux_amd64 = "sha256-..."
windows_x64 = "sha256-..."
[meta]
name = "StaxPing"
description = "Network diagnostics tool"
license = "Apache-2.0"staxup reads this file to determine how to update the tool.
staxup check <tool> # Show current version and info
staxup update <tool> # Update to latest version
staxup rollback <tool> # Rollback to previous version
cargo build --releaseThe binary will be in target/release/staxup.
Most updaters fall into one of these categories:
- language‑specific package managers
- GUI app updaters
- OS‑level package managers
- single‑tool self‑updaters
staxup fills a different niche:
A unified, cross‑tool updater for standalone CLI binaries.
It is:
- language‑agnostic
- ecosystem‑friendly
- manifest‑driven
- rollback‑capable
- cross‑platform
- simple to embed
This makes it ideal for multi‑tool suites like Stax — and equally useful for independent CLI tools that want a clean, reliable update story.
- Initial crate + CLI scaffolding
- Manifest parser
- Version comparison
- Download + checksum verification
- Install + rollback logic
- Self‑update support
- Global registry integration
- StaxDash GUI integration
Licensed under the Apache License, Version 2.0.
See the LICENSE file for details.