Package sources
Homebrew, APT, apk, DNF, Zypper, mise, Skills, npm, npx, pnpm, Bun, uv, uvx, pipx, pkgx, Cargo, rustup, and Go, searched together.
Missing one? Just open a ticket and we’ll add it.
Package Manager Manager
Package Manager Manager for macOS
Package Manager Manager inventories the tools scattered across your package managers, on this Mac or remote Macs and Linux hosts over SSH. See what you have, what needs an update, and where everything came from.
brew install --cask mxcl/made/package-manager-manager
HomebrewAPT + apk + DNF + ZyppermiseSkillsnpm + npx + pnpm + Bunuv + uvx + pipxpkgxCargo + rustupGo
Now supporting pnpm, Bun, pipx, Go, and pkgx.
One honest inventory
Homebrew, APT, apk, DNF, Zypper, mise, Skills, npm, npx, pnpm, Bun, uv, uvx, pipx, pkgx, Cargo, rustup, and Go, searched together.
Missing one? Just open a ticket and we’ll add it.
Search packages, compare versions, and open their project links without returning to the terminal.
pkg⋅mgr² uses each manager’s own commands. Your setup stays yours.
From install to source
Open a package to see its installed version, install location, binary path, project config files, homepage, repository, and docs. When pkg⋅mgr² knows the native command, update or uninstall it from the same view.
~/.config/direnv/direnv.toml
~/.config/starship.toml
~/.npmrc
Click a path to edit it in your default text editor.
Config files, connected
pkg⋅mgr² surfaces the known configuration and credentials files for each package. Click a path and it opens in your default text editor, ready to change.
Choose which app opens those files, too. Select a supported installed editor or terminal and set it as your Mac’s default from its dossier. Use the second button to apply your choice to additional text or script formats. See how to set your defaults.
One app, more hosts
Add a Mac or Linux host. Its Installed and Outdated lists appear in the sidebar, ready for updates and uninstalls.
Update with context
Open the project’s release notes beside the installed package. Check breaking changes, then run the update when you’re ready.
Cached npx commands and uvx environments count too. If it is taking up space, it belongs in the inventory.
Update and remove supported packages with the manager that installed them.
Missing metadata stays missing. rustup remains inventory-only until its actions are safe and obvious.
FAQ
No. PMM is a manager for package managers; it doesn’t manage packages itself.
Yes. Select a supported installed app on your local Mac, then find Default App in its dossier (detail pane). Choose Set as Default Text Editor for text and plain-text files, or Set as Default Terminal for Unix executables and terminal command files. Supported Homebrew-installed apps work too.
Use for All Other Text Formats also assigns common source-code, markup, configuration, and script formats, including Swift, Markdown, JSON, and YAML. For terminals, Use for All Other Script Formats adds shell and interpreter scripts such as Bash, Zsh, Python, and Ruby. Both buttons set the basic default too and replace existing associations for those formats.
These settings change macOS file associations on your local Mac. They don’t change shell variables such as EDITOR or VISUAL.
Apart from the obvious difference—PMM is a GUI, not a CLI—PMM is a dashboard and monitoring app for your other package managers, not a package manager itself. For example, you can use PMM to manage packages installed by mise across all of mise’s own backends.
Free and open source