Universal Package Installer.
One command to install anything, anywhere:
Documentation: nisoku.org/UPI
upi install [...]UPI is a cross-OS macro installer. It translates a generic package name into the correct native install command for your system. It is not a package manager, rather a translator over existing package managers.
Unix (Linux / macOS):
curl -sfL https://raw.githubusercontent.com/Nisoku/UPI/main/install.sh | shWindows (PowerShell):
iwr https://raw.githubusercontent.com/Nisoku/UPI/main/install.ps1 | iexVia Cargo (any platform with Rust):
cargo install upi| OS | Manager |
|---|---|
| macOS | Homebrew, MacPorts |
| Debian | apt |
| Fedora | dnf |
| Arch | pacman |
| Windows | winget, chocolatey, scoop |
- Alias - shorthand maps (
rg->ripgrep,py->python,nvim->neovim). - Repology - global project-to-package-name resolution.
- Database lookup - compressed SQLite seed DB with common packages across all platforms. Supports aliases (
python3->python) and provenance tracking. - Fallback search - native package manager regex search (skipped for short queries <= 3 chars).
If no confident match is found, UPI shows "Did you mean: ..." suggestions and exits with an error. Use --allow-identity to install the raw query as-is.
The DB is cached at ~/.upi/db/seed.db and only rehydrated when the seed version changes.
UPI/
Cargo.toml # workspace root
Build/
crates/
upi-core/ # resolver, DB, OS detection, exec, YAML loader
data/ # SQL schema, seed data, version
platform/ # YAML OS definitions (SSOT)
upi-cli/ # thin CLI wrapper (clap)
upi-net/ # network logic (ureq, isolated for WASM)
tests/ # all tests
tools/
db-update/ # seed DB auto-generator from Repology
debug/
GUIDE.md # architecture and conventionscargo run -p db-updateApache 2.0. See LICENSE.
