<!-- markdownlint-disable MD025 -->
UPI
Universal Package Installer. One command to install anything, anywhere.
5 OS Families
8 Package Managers
Zero Setup
Offline First
UPI translates a generic package name into the correct native install command for your system. It is a translator and resolver over existing package managers, not a package manager itself.
upi install vim # macOS: brew install vim
upi --os debian install vim # Debian: apt install vim
upi --os arch install vim # Arch: pacman -S vim
upi --os windows install vim # Windows: choco install vim
Works offline. Works everywhere.
Features
One command for macOS, Debian, Fedora, Arch, and Windows. UPI knows the right package name and the right package manager for every OS.
Built-in compressed SQLite seed database with 10,089 mappings across 531 packages. Works immediately after install with no network required.
When the local database does not have a match, UPI queries Repology’s global package index for live resolution across 10,000+ projects.
Resolution follows a priority chain: database (confidence=1), then Repology, then package manager fallback, then identity. Each source is weighted and transparent.
OS behavior lives in YAML files under Build/platform/. Adding a new OS means dropping a YAML file with no Rust changes required.
Built entirely in Rust. No runtime dependencies, no Node.js, no Python. Single binary with embedded assets.
Quick Example
upi search vim
OS: Macos
Manager: homebrew
Query: vim
Results:
vim <- database (confidence=1)
neovim <- repology
macvim <- repology
Command: brew install vim
upi --dry-run install python
Shows the command that would run without executing it. Works across any OS:
upi --os debian --dry-run install python # -> sudo apt install -y python2.7
upi --os arch --dry-run install python # -> sudo pacman -S --noconfirm python2
upi --os windows --dry-run install python # -> sudo choco install -y python3
upi --offline --dry-run install vim
No network calls. Resolves entirely from the built-in seed database.
Installation
cargo install upi
Or download a pre-built binary from the releases page.