BenchmarkΒΆ

Attempting to unify all package managers is a Sisyphean task.

This did not prevent me or others to try to solve that problem. It is not easy to explain why but there might be a greater need for such tools out there. Here is a list of some related projects I stumbled into and how they compares to mpm.

FeaturesΒΆ

Feature

mpm

topgrade[1]

upt[2]

pacaptr[3]

metapac[4]

brew[5]

Package manager autodetection

βœ…

βœ…

βœ…

βœ…

❌

Unified CLI and options

βœ…

βœ…

βœ…

βœ…

βœ…

βœ…

Multi-PM execution

βœ…

βœ…

❌

❌

βœ…

βœ…

Concurrent multi-PM execution

βœ…

❌

❌

❌

❌

βœ…

Package manager priority

βœ…

βœ…

βœ…

❌

❌

Consolidated output

βœ…

❌

❌

❌

βœ…

Configurable output

βœ…

Sortable output

βœ…

Colored output

βœ…

βœ…

βœ…

βœ…

Accessible output

βœ…

Version parsing and diff

βœ…

❌

❌

βœ…

Skip auto-updating packages

βœ…

βœ…

purl support

βœ…

βœ…

Exact and fuzzy search

βœ…

βœ…

JSON export

βœ…

❌

βœ…

CSV export

βœ…

Markup export

βœ…

SBOM export

βœ…

Vulnerability scan

βœ…

Configuration file

βœ…

βœ…

βœ…

βœ…

βœ…

Per-manager overrides

βœ…

βœ…

βœ…

Non-interactive

βœ…

βœ…

βœ…

βœ…

βœ…

βœ…

Dry-run

βœ…

βœ…

βœ…

βœ…

❌

βœ…

Command plan

βœ…

βœ…

βœ…

Per-call timeout

βœ…

Offline by default

βœ…

Sudo elevation

βœ…

βœ…

❌

βœ…

βœ…

❌

Supply-chain cooldown

βœ…

❌

❌

Desktop notifications

βœ…

Bash auto-completion

βœ…

βœ…

❌

βœ…

βœ…

Zsh auto-completion

βœ…

βœ…

❌

βœ…

βœ…

Fish auto-completion

βœ…

βœ…

❌

βœ…

βœ…

Man pages

βœ…

βœ…

XKCD #1654

βœ…

❌

βœ…

GNOME Shell extension

βœ…

Xbar/SwiftBar plugin

βœ…

Apply manifest (declarative install)

βœ…

βœ…

βœ…

Backend-prefixed package IDs

βœ…

OperationsΒΆ

Every cell links to its evidence: a βœ… to the documentation, CLI declaration or source line implementing the operation, a 🟑 to the proof the capability only exists bundled inside another one, and a ❌ to the upstream statement of scope ruling it out. A blank cell means no citable source was found either way.

Operation

mpm

topgrade[1]

upt[2]

pacaptr[3]

metapac[4]

brew[5]

List available managers

βœ…

❌

❌

❌

βœ…

List installed packages

βœ…

❌

βœ…

βœ…

❌

βœ…

List duplicate packages

βœ…

❌

❌

❌

❌

List outdated packages

βœ…

❌

❌

βœ…

❌

βœ…

List orphaned dependencies

βœ…

❌

❌

❌

❌

βœ…

Search packages

βœ…

❌

βœ…

βœ…

❌

βœ…

Locate binaries (which command)

βœ…

❌

❌

βœ…

❌

βœ…

Install a package

βœ…

❌

βœ…

βœ…

❌

βœ…

Remove / Uninstall a package

βœ…

❌

βœ…

βœ…

❌

βœ…

Remove a package with its orphans

βœ…

❌

βœ…

βœ…

❌

Upgrade single package

βœ…

❌

βœ…

βœ…

βœ…

βœ…

Upgrade all packages

βœ…

βœ…

βœ…

βœ…

βœ…

βœ…

Sync

βœ…

🟑

βœ…

βœ…

βœ…

βœ…

Cleanup: caches

βœ…

🟑

❌

βœ…

βœ…

βœ…

Cleanup: orphans

βœ…

🟑

❌

🟑

🟑

βœ…

Backup / Lock / Freeze

βœ…

❌

❌

❌

❌

βœ…

Restore

βœ…

❌

❌

❌

βœ…

βœ…

List explicitly installed packages (leaves)

❌

❌

βœ…

βœ…

βœ…

Pin / Unpin version

❌

❌

❌

❌

βœ…

Doctor / diagnostics

βœ…

❌

❌

❌

❌

βœ…

Services management

❌

❌

❌

❌

βœ…

mpm’s SBOM export sits in a different category from the package-manager front-ends benchmarked here. It is compared against dedicated SBOM and software-composition-analysis tools (Syft, Trivy, cdxgen, component-detection) in the SBOM documentation.

Package manager supportΒΆ

Every glyph used below:

Glyph

Meaning

βœ…

Supported. In the mpm column, links to the class implementing the manager; in a competitor’s, to whatever documents its support.

⚠️

Wrapped by mpm and usable, but its upstream is gone.

πŸ›Ÿ

Not wrapped, yet still reachable through mpm upgrade --topgrade, which upgrades whatever it detects on the host.

☠️

Never wrapped, and its upstream is retired.

❌

Never wrapped: a live tool declined on its own merits.

🟑

Coarse support a competitor cannot invoke for this manager alone, only as part of a wider sweep.

Blank

Nobody has assessed that tool yet, and it is very likely available for the writing.

Manager

mpm

topgrade[1]

upt[2]

pacaptr[3]

metapac[4]

0install

am

βœ…

βœ…

android-studio

πŸ›Ÿ

βœ…

antibody

πŸ›Ÿ

🟑

antidote

βœ…

🟑

antigen

βœ…

🟑

antigravity

πŸ›Ÿ

βœ…

apk

βœ…

βœ…

βœ…

βœ…

apm

⚠️

βœ…

app-man

πŸ›Ÿ

βœ…

apt

βœ…

βœ…

βœ…

βœ…

βœ…

apt-cyg

⚠️

apt-mint

βœ…

aqua

βœ…

asdf

βœ…

βœ…

atuin

πŸ›Ÿ

βœ…

aura

βœ…

auto-cpufreq

πŸ›Ÿ

βœ…

basalt

βœ…

bash-it

πŸ›Ÿ

🟑

basher

❌

bin

βœ…

βœ…

bob

βœ…

bpkg

βœ…

bpm

☠️

brew

βœ…

βœ…

βœ…

βœ…

βœ…

bun

βœ…

βœ…

βœ…

cabal

❌

cards

βœ…

cargo

βœ…

βœ…

βœ…

cask

βœ…

βœ…

βœ…

cave

βœ…

certbot

πŸ›Ÿ

βœ…

chezmoi

πŸ›Ÿ

βœ…

choco

βœ…

βœ…

βœ…

βœ…

choosenim

βœ…

chromebrew

βœ…

cinnamon-spices

βœ…

clam-av-db

πŸ›Ÿ

βœ…

claude-code

πŸ›Ÿ

βœ…

claude-code-plugins

βœ…

clib

βœ…

codex

πŸ›Ÿ

βœ…

colima

πŸ›Ÿ

βœ…

composer

βœ…

βœ…

conda

βœ…

βœ…

βœ…

containers

πŸ›Ÿ

βœ…

cpan

βœ…

cursor

πŸ›Ÿ

βœ…

cursor-agent

πŸ›Ÿ

βœ…

deb-get

βœ…

βœ…

declaro

❌

decman

❌

dein

πŸ›Ÿ

🟑

deno

πŸ›Ÿ

βœ…

distrobox

πŸ›Ÿ

βœ…

dkp-pacman

βœ…

βœ…

dnf

βœ…

βœ…

βœ…

βœ…

βœ…

dnf5

βœ…

dotnet

βœ…

βœ…

dpp

❌

elan

βœ…

emacs

βœ…

emerge

βœ…

βœ…

βœ…

βœ…

eopkg

βœ…

βœ…

βœ…

etc-update

πŸ›Ÿ

βœ…

falconf

πŸ›Ÿ

βœ…

fink

βœ…

fish-plug

🟑

fisher

βœ…

🟑

flatpak

βœ…

βœ…

βœ…

βœ…

flutter

πŸ›Ÿ

βœ…

fossil

πŸ›Ÿ

βœ…

fresh

❌

fundle

πŸ›Ÿ

🟑

fwupd

βœ…

βœ…

gcloud

βœ…

βœ…

gearlever

βœ…

gem

βœ…

βœ…

getnf

βœ…

gext

βœ…

βœ…

gh-ext

βœ…

βœ…

ghcup

βœ…

βœ…

git

πŸ›Ÿ

βœ…

go

βœ…

gofish

☠️

guix

βœ…

βœ…

βœ…

haxelib

βœ…

βœ…

helix

βœ…

helix-db

βœ…

helm

πŸ›Ÿ

βœ…

home-manager

πŸ›Ÿ

βœ…

hyprpm

βœ…

install-release

βœ…

jetbrains-aqua

πŸ›Ÿ

βœ…

jetbrains-clion

πŸ›Ÿ

βœ…

jetbrains-datagrip

πŸ›Ÿ

βœ…

jetbrains-dataspell

πŸ›Ÿ

βœ…

jetbrains-gateway

πŸ›Ÿ

βœ…

jetbrains-goland

πŸ›Ÿ

βœ…

jetbrains-idea

πŸ›Ÿ

βœ…

jetbrains-mps

πŸ›Ÿ

βœ…

jetbrains-phpstorm

πŸ›Ÿ

βœ…

jetbrains-pycharm

πŸ›Ÿ

βœ…

jetbrains-rider

πŸ›Ÿ

βœ…

jetbrains-rubymine

πŸ›Ÿ

βœ…

jetbrains-rustrover

πŸ›Ÿ

βœ…

jetbrains-toolbox

πŸ›Ÿ

βœ…

jetbrains-webstorm

πŸ›Ÿ

βœ…

jetpack

πŸ›Ÿ

βœ…

jpm

βœ…

julia

βœ…

juliaup

βœ…

βœ…

kakoune

βœ…

krew

βœ…

βœ…

lazy

βœ…

🟑

lensfun

πŸ›Ÿ

βœ…

luarocks

βœ…

lure

βœ…

macos

πŸ›Ÿ

βœ…

macports

βœ…

βœ…

βœ…

mamba

βœ…

βœ…

mandb

πŸ›Ÿ

βœ…

mas

βœ…

βœ…

βœ…

mason

βœ…

🟑

maza

πŸ›Ÿ

βœ…

metapac

❌

micro

βœ…

βœ…

micromamba

βœ…

microsoft-office

πŸ›Ÿ

βœ…

microsoft-store

πŸ›Ÿ

βœ…

miktex

βœ…

βœ…

mise

βœ…

βœ…

βœ…

myrepos

πŸ›Ÿ

βœ…

nala

βœ…

βœ…

βœ…

neobundle

πŸ›Ÿ

🟑

nimble

βœ…

ninite

❌

nix

βœ…

βœ…

βœ…

βœ…

npm

βœ…

βœ…

βœ…

oh-my-bash

πŸ›Ÿ

🟑

oh-my-fish

βœ…

🟑

oh-my-zsh

πŸ›Ÿ

🟑

ollama

βœ…

βœ…

oneget

❌

opam

βœ…

βœ…

opencode

πŸ›Ÿ

βœ…

opkg

βœ…

βœ…

pacapt

☠️

pacaur

⚠️

pacdef

πŸ›Ÿ

βœ…

package-control

❌

packer-aur

☠️

packer-nvim

πŸ›Ÿ

🟑

pacman

βœ…

βœ…

βœ…

βœ…

pacstall

βœ…

βœ…

pakku

☠️

pamac

βœ…

βœ…

βœ…

paq

πŸ›Ÿ

🟑

paru

βœ…

βœ…

βœ…

pathogen

☠️

pckr-nvim

❌

pearl

βœ…

pi

βœ…

pihole

πŸ›Ÿ

βœ…

pikaur

βœ…

βœ…

βœ…

pip

βœ…

βœ…

βœ…

pip-review

πŸ›Ÿ

βœ…

pipupgrade

πŸ›Ÿ

βœ…

pipx

βœ…

βœ…

βœ…

pipxu

βœ…

pixi

βœ…

βœ…

pkcon

βœ…

βœ…

pkg

βœ…

βœ…

βœ…

pkg-termux

βœ…

pkg-tools

βœ…

pkgfile

πŸ›Ÿ

βœ…

pkgin

βœ…

βœ…

pkgit

βœ…

pkgman

βœ…

platformio-core

βœ…

plug

πŸ›Ÿ

🟑

pnpm

βœ…

βœ…

βœ…

podman

πŸ›Ÿ

βœ…

poetry

βœ…

ports

βœ…

protonplus

βœ…

protonup

βœ…

prt-get

βœ…

pwsh-gallery

βœ…

βœ…

pyenv

βœ…

βœ…

raco

βœ…

rcm

πŸ›Ÿ

βœ…

remotes

πŸ›Ÿ

βœ…

restarts

πŸ›Ÿ

βœ…

rtcl

πŸ›Ÿ

βœ…

rustup

βœ…

βœ…

rye

βœ…

sage

☠️

scoop

βœ…

βœ…

βœ…

βœ…

βœ…

sdkman

βœ…

βœ…

sera

βœ…

sfsu

βœ…

sheldon

βœ…

βœ…

skills

βœ…

slackpkg

βœ…

slapt-get

βœ…

smart

☠️

snap

βœ…

βœ…

βœ…

βœ…

soar

βœ…

βœ…

sorcery

βœ…

spack

sparkle

πŸ›Ÿ

βœ…

spicetify

πŸ›Ÿ

βœ…

stack

βœ…

steamcmd

βœ…

stew

βœ…

βœ…

sun-tools

βœ…

swupd

⚠️

sysget

☠️

system

πŸ›Ÿ

βœ…

tazpkg

βœ…

tldr

πŸ›Ÿ

βœ…

tlmgr

βœ…

βœ…

βœ…

tmux

πŸ›Ÿ

βœ…

toolbx

πŸ›Ÿ

βœ…

topgrade

βœ…

βœ…

tpack

βœ…

trizen

βœ…

βœ…

typst

πŸ›Ÿ

βœ…

upm

❌

upt

❌

urpmi

βœ…

βœ…

uv

βœ…

βœ…

βœ…

uvx

βœ…

vagrant

βœ…

βœ…

vcpkg

βœ…

βœ…

vim

βœ…

vim-pack

βœ…

🟑

vite-plus

βœ…

volta

⚠️

βœ…

voom

🟑

vscode

βœ…

βœ…

βœ…

vscodium

βœ…

βœ…

βœ…

vundle

🟑

waydroid

πŸ›Ÿ

βœ…

whohas

☠️

windsurf

πŸ›Ÿ

βœ…

winget

βœ…

βœ…

βœ…

βœ…

βœ…

wpkg

☠️

wsl

πŸ›Ÿ

βœ…

wsl-update

πŸ›Ÿ

βœ…

xbps

βœ…

βœ…

βœ…

βœ…

βœ…

xcodes

βœ…

βœ…

yadm

πŸ›Ÿ

βœ…

yaourt

☠️

yarn

βœ…

βœ…

βœ…

yarn-berry

βœ…

βœ…

yay

βœ…

βœ…

βœ…

βœ…

yazi

βœ…

βœ…

yt-dlp

❌

❌

yum

βœ…

βœ…

βœ…

zef

βœ…

zerobrew

βœ…

βœ…

zgenom

πŸ›Ÿ

🟑

zigup

βœ…

zim

βœ…

🟑

zinit

βœ…

🟑

zplug

βœ…

🟑

zr

πŸ›Ÿ

🟑

zvm

βœ…

zypper

βœ…

βœ…

βœ…

βœ…

βœ…

Note

brew is itself a meta-manager: brew bundle dispatches to other package managers (cask, mas, VSCode extensions, taps, and more) via the Brewfile DSL, which is why it earns a column alongside the dedicated wrappers in the tables above.

The table marks which managers each competing tool reaches natively, so the overlap with mpm is visible at a glance. It deliberately lists managers no tool here wraps yet: a row a competitor reaches and mpm does not is the point of the table, not an omission.

Operating system supportΒΆ

OS

mpm

topgrade[1]

upt[2]

pacaptr[3]

metapac[4]

brew[5]

BSD

πŸ…±οΈ[6]

πŸ…±οΈ

Linux

🐧[7]

🐧

🐧

🐧

🐧

🐧

macOS

🍎

🍎

🍎

🍎

🍎

🍎

Unix

⨂[8]

Windows

πŸͺŸ

πŸͺŸ

πŸͺŸ

πŸͺŸ

πŸͺŸ

DistributionΒΆ

Package manager

mpm

topgrade[1]

upt[2]

pacaptr[3]

metapac[4]

brew[5]

Versions

Packaging status

Packaging status

Packaging status

Packaging status

Packaging status

GitHub

GitHub release (latest by SemVer)

GitHub release (latest by SemVer)

GitHub release (latest by SemVer)

GitHub release (latest by SemVer)

-

macOS binary

βœ… (x86_64, aarch64)

βœ… (x86_64)

βœ… (x86_64, aarch64)

βœ…(x86_64, aarch64, universal)

Linux binary

βœ… (x86_64, aarch64)

βœ… (x86_64, aarch64, armv7)

βœ… (x86_64, aarch64, i686)

βœ… (x86_64)

Windows binary

βœ… (x86_64, aarch64)

βœ… (x86_64)

βœ… (x86_64, aarch64, i686)

βœ… (x86_64)

Homebrew

homebrew downloads

homebrew downloads

βœ…

-

Chocolatey

Chocolatey

Crates.io

Crates.io

Crates.io

Crates.io

Crates.io

PyPI

PyPI - Downloads

AUR votes

AUR

AUR

AUR

AUR

ActivityΒΆ

Metrics

mpm

topgrade[1]

upt[2]

pacaptr[3]

metapac[4]

brew[5]

Watchers

GitHub

GitHub

GitHub

GitHub

GitHub

GitHub

Contributors

GitHub

GitHub

GitHub

GitHub

GitHub

GitHub

Commit activity

GitHub

GitHub

GitHub

GitHub

GitHub

GitHub

Commits since latest release

GitHub

GitHub

GitHub

GitHub

GitHub

GitHub

Last release date

GitHub

GitHub

GitHub

GitHub

GitHub

GitHub

Last commit

GitHub

GitHub

GitHub

GitHub

GitHub

GitHub

Open issues

GitHub

GitHub

GitHub

GitHub

GitHub

GitHub

Open PRs

GitHub

GitHub

GitHub

GitHub

GitHub

GitHub

Forks

GitHub

GitHub

GitHub

GitHub

GitHub

GitHub

Dependencies freshness

Libraries.io dependency status for latest release

Libraries.io dependency status for latest release

Libraries.io dependency status for latest release

Libraries.io dependency status for latest release

Libraries.io dependency status for latest release

-

PopularityΒΆ

Star history of mpm and its benchmarked peers

The same five projects plotted against their own age instead of the calendar, which puts a ten-year-old project and a two-year-old one on equal footing:

Stars of mpm and its benchmarked peers by project age

Both are sampled weekly by docs/stars_update.py into star-history.json, after GitHub restricted its stargazer endpoints to a repository’s own admins in June 2026 and left every third-party chart rendering an error card. Each point records where it came from, since the curves are not all measured the same way: mpm’s is reconstructed from the timestamp of every star it still holds, so it dips where followers were lost, while the peers are sampled forward and backfilled from archived copies of their GitHub pages. brew is tracked in the table below but stays off both charts: Homebrew outweighs the rest by an order of magnitude and would flatten all five curves onto the axis.

Metrics

mpm

topgrade[1]

upt[2]

pacaptr[3]

metapac[4]

brew[5]

Stars

GitHub

GitHub

GitHub

GitHub

GitHub

GitHub

SourceRank

Libraries.io SourceRank

Libraries.io SourceRank

Libraries.io SourceRank

Libraries.io SourceRank

Libraries.io SourceRank

-

Dependent repos

Dependent repos (via libraries.io)

Dependent repos (via libraries.io)

Dependent repos (via libraries.io)

Dependent repos (via libraries.io)

Dependent repos (via libraries.io)

-

MetadataΒΆ

Metadata

mpm

topgrade[1]

upt[2]

pacaptr[3]

metapac[4]

brew[5]

License

GitHub

GitHub

GitHub

GitHub

GitHub

GitHub

Main language

GitHub

GitHub

GitHub

GitHub

GitHub

GitHub

Latest version

GitHub release (latest SemVer)

GitHub release (latest SemVer)

GitHub release (latest SemVer)

GitHub release (latest SemVer)

GitHub release (latest SemVer)

GitHub release (latest SemVer)

Version benchmarked

7.4.1

17.8.0

0.9.0

0.23.1

0.10.1

6.0.12

Benchmark date

2026-07

2026-07

2026-08

2026-07

2026-08

2026-07

Coming from pacapt, sysget or whohas?

mpm’s three closest peers are all retired. See unsupported managers for what happened to each and how their backend coverage maps onto mpm.

Project’s URLΒΆ