Topgrade

A meta-meta-package-manager: topgrade (https://github.com/topgrade-rs/topgrade) wrapped by mpm.

topgrade is a Rust utility that auto-detects every package manager, runtime version manager, plugin manager and OS updater installed on the host, then runs each one in sequence. From mpm’s vantage point it looks like a black-box upgrader: there is no notion of installed packages, no concept of outdated entries, no search index, no install or remove primitives. Only upgrade --all makes sense, and it is the only operation declared here.

Adding topgrade to mpm’s pool is a knowing nod to XKCD #927 (https://xkcd.com/927/): mpm already wraps every package manager topgrade wraps, so routing through it is structurally redundant. The benefit is access to topgrade’s broader catalog of runtime/plugin managers in the same mpm upgrade --all invocation (mise, rustup, oh-my-zsh, JetBrains plugins, vim/tmux plugin managers, and so on) without having to teach mpm each one.

Caution: mpm upgrade --topgrade runs topgrade --yes to skip the interactive prompts. If you also select other managers that topgrade itself drives (brew, apt, pacman, …), those will be upgraded twice in the same run.

Platforms

  • 🅱️ BSD

  • 🐧 Linux

  • 🍎 macOS

  • 🪟 Windows

Operations

Operation

Supported

installed

outdated

search

install

upgrade

upgrade_all

remove

sync

cleanup

Ecosystem

  • Accepted purl types: pkg:topgrade

Usage

$ mpm --topgrade installed
$ mpm --topgrade upgrade --all
$ mpm --dry-run --topgrade upgrade --all

Every example above accepts --dry-run, which simulates the underlying manager calls without touching the system: the safe way to watch what mpm would do before trusting it.

Deselect the manager for a single run with --no-topgrade, disable it from your configuration, or tune its invocation attributes with per-manager overrides.

Command line

  • CLI names, in lookup order: topgrade

The version is probed by running:

$ topgrade --version
topgrade 17.4.0

and extracted with:

r"topgrade\s+(?P<version>\S+)"

Privilege escalation

mpm runs this manager as the current user and never prepends sudo by default. Flip the policy for its privileged operations with --sudo or the per-manager sudo override.

None of its operations needs root.

See privilege escalation for the full policy.

Cooldown

State of Topgrade’s release-age gating, from the cooldown support table:

  • Status: ➖ N/A (meta-upgrader; delegates to each underlying manager)

With --cooldown set, mpm skips this manager’s install and upgrade operations rather than run them unguarded (fail-closed); --allow-unsupported-managers opts back in.