One package manager used to be enough. Now a normal developer machine has Homebrew formulae, Homebrew casks, global npm packages, one-off npx tools, uv tools, uv Python installs, uvx environments, cargo-installed binaries, and rustup toolchains.
Package Manager Manager, or pkg⋅mgr², inventories that mess and gives it one window. It does not replace the package managers. It shows what they installed, highlights what is outdated, and uses the native commands when you update, uninstall, or install supported packages.
What it finds
local inventory
01 / mac packages
Homebrew formulae and casks.
See command line packages and app bundles together, with metadata and update state when it is available.
02 / language tools
npm, npx, uv, uvx, cargo, and rustup.
Track global tools, cached execution environments, Python installs, Rust binaries, and installed Rust toolchains.
03 / package context
Versions, links, summaries, and categories.
Metadata is best-effort. Missing metadata does not hide a package; it just means the app has less to say about it.
Native commands
pkg⋅mgr² manages packages by asking their manager.
Updates and removals go through commands like brew upgrade, npm install --global, uv tool upgrade, and cargo install --force.
The goal is visibility without forcing a new workflow. Keep using Homebrew, npm, uv, cargo, and rustup directly. pkg⋅mgr² gives you the map: what is installed, what changed, what is outdated, and which package manager owns each thing.
It also introduces Install Packs: curated package sets that open in the app from a pkgmgrmgr:// link. Packs are for bootstrapping real workstations without pretending every machine should be managed by one universal installer.