The backbone of your package management ecosystem. Just as the spine supports the entire body, Spine supports all package managers by discovering them on your system and running their update workflows simultaneously with a clean TUI interface.
- Universal Detection: Auto-discovers 15+ package managers (Homebrew, APT, DNF, Pacman, Nix, Snap, Flatpak, etc.)
- Parallel Execution: Runs all workflows simultaneously for maximum efficiency
- Interactive TUI: Real-time progress monitoring with vim-style navigation
- Cross-Platform: Works across Linux, macOS, and BSD variants
- Smart Sudo Handling: Automatically handles privilege requirements per manager
- Configurable: Extensible via TOML configuration
# From source
git clone https://github.com/plyght/spine.git
cd spine
cargo build --release
sudo cp target/release/spn /usr/local/bin/
# Using Cargo
cargo install spine-pkgman# Open the TUI and upgrade all package managers
spn
# Run without the TUI
spn cli
spn --no-tui
# Preview detected managers and commands without running anything
spn --dry-run
# Check configuration, detection, sudo, and terminal readiness
spn doctor
# List detected package managers
spn list
# Backward-compatible explicit upgrade command
spn upgradeThe TUI interface shows real-time status: Pending → Refreshing → Self-updating → Upgrading → Cleaning → Complete
Managers that require administrator privileges are marked with a sudo badge. Spine asks for sudo once before opening the TUI when any detected manager needs it, then keeps that sudo session alive during long upgrade runs.
Navigate with ↑↓/j/k, press Enter for details, 'q' to quit. In selective mode, press Space to toggle managers and r to run the selected set.
Spine uses backbone.toml to define package manager commands:
[managers.brew]
name = "Homebrew"
check_command = "brew --version"
refresh = "brew update"
upgrade_all = "brew upgrade"
cleanup = "brew cleanup"
requires_sudo = falseConfiguration is searched in: platform config directory (~/.config/spine/backbone.toml on many Linux systems, ~/Library/Application Support/spine/backbone.toml on macOS) → current directory → home (~/.spine/backbone.toml) → binary directory → /etc/spine/backbone.toml → /usr/local/etc/spine/backbone.toml. Use spn list or spn doctor to see the active config path.
config.rs: Configuration loading and parsingdetect.rs: Package manager discoveryexecute.rs: Command execution with timeout/sudo handlingtui.rs: Terminal interface using Ratatuimain.rs: CLI orchestration
cargo build
cargo testRequires Rust 1.70+. Key dependencies: clap, ratatui, crossterm, tokio, serde/toml.
MIT License