CLI parametersΒΆ

The reference below walks the live command tree at build time, so every help screen matches the documented release. Each command section is anchored by its command path (like #mpm-install), the same scheme the readme and benchmark pages link to.

Help screenΒΆ

$ mpm --help
Usage: mpm [OPTIONS] COMMAND [ARGS]...

  CLI options shared by all subcommands.

Package manager selection:
  Use these options to restrict the subcommand to a subset of managers.

  - By default, mpm will evaluate all managers supported on the current platform.
  - Use the --<manager-id> selectors to restrict target to a subset of managers.
  - To remove a manager from the selection, use --no-<manager-id> selectors.
  - Order of the selectors is preserved for priority-sensitive subcommands.
  - Exclusion of a manager always takes precedence over its inclusion.
  --am / --no-am                  Select or deselect AppImage Manager.
  --antidote / --no-antidote      Select or deselect Antidote.
  --antigen / --no-antigen        Select or deselect Zsh Antigen.
  --apk / --no-apk                Select or deselect Alpine apk.
  --apm / --no-apm                Select or deselect Atom apm. (unmaintained)
  --apt / --no-apt                Select or deselect Debian apt.
  --apt-mint / --no-apt-mint      Select or deselect Linux Mint apt.
  --aptitude / --no-aptitude      Select or deselect aptitude.
  --asdf / --no-asdf              Select or deselect asdf.
  --aura / --no-aura              Select or deselect Arch Linux aura.
  --bin / --no-bin                Select or deselect bin.
  --brew / --no-brew              Select or deselect Homebrew Formulae.
  --cask / --no-cask              Select or deselect Homebrew Cask.
  --composer / --no-composer      Select or deselect PHP Composer.
  --conda / --no-conda            Select or deselect Conda.
  --deb-get / --no-deb-get        Select or deselect deb-get.
  --dkp-pacman / --no-dkp-pacman  Select or deselect devkitPro pacman.
  --dnf / --no-dnf                Select or deselect Fedora DNF.
  --dnf5 / --no-dnf5              Select or deselect Fedora DNF5.
  --dotnet / --no-dotnet          Select or deselect dotnet tool.
  --emerge / --no-emerge          Select or deselect Gentoo emerge.
  --eopkg / --no-eopkg            Select or deselect Solus eopkg.
  --fisher / --no-fisher          Select or deselect Fish fisher.
  --flatpak / --no-flatpak        Select or deselect Flatpak.
  --fwupd / --no-fwupd            Select or deselect Linux fwupd.
  --gem / --no-gem                Select or deselect RubyGems.
  --gext / --no-gext              Select or deselect GNOME Shell extensions.
  --ghcup / --no-ghcup            Select or deselect Haskell ghcup.
  --go / --no-go                  Select or deselect Go.
  --guix / --no-guix              Select or deselect GNU Guix.
  --ips / --no-ips                Select or deselect Image Packaging System.
  --lazy / --no-lazy              Select or deselect Neovim lazy-nvim.
  --luarocks / --no-luarocks      Select or deselect LuaRocks.
  --lure / --no-lure              Select or deselect LURE.
  --mamba / --no-mamba            Select or deselect Mamba.
  --mas / --no-mas                Select or deselect Mac App Store.
  --mason / --no-mason            Select or deselect Neovim mason-nvim.
  --micromamba / --no-micromamba  Select or deselect Micromamba.
  --miktex / --no-miktex          Select or deselect MiKTeX.
  --mise / --no-mise              Select or deselect mise.
  --nala / --no-nala              Select or deselect Nala.
  --nimble / --no-nimble          Select or deselect Nimble.
  --nix / --no-nix                Select or deselect Nix.
  --npm / --no-npm                Select or deselect Node npm.
  --oh-my-fish / --no-oh-my-fish  Select or deselect Fish Oh My Fish.
  --pacaur / --no-pacaur          Select or deselect Arch Linux pacaur.
                                  (unmaintained)
  --pacman / --no-pacman          Select or deselect Arch Linux pacman.
  --pacstall / --no-pacstall      Select or deselect Pacstall.
  --paru / --no-paru              Select or deselect Arch Linux paru.
  --pear / --no-pear              Select or deselect PEAR.
  --pikaur / --no-pikaur          Select or deselect Arch Linux pikaur.
  --pip / --no-pip                Select or deselect Python pip.
  --pipx / --no-pipx              Select or deselect Python pipx.
  --pixi / --no-pixi              Select or deselect pixi.
  --pkcon / --no-pkcon            Select or deselect PackageKit.
  --pkg / --no-pkg                Select or deselect FreeBSD pkg.
  --pkgit / --no-pkgit            Select or deselect pkgit.
  --pnpm / --no-pnpm              Select or deselect Node pnpm.
  --ports / --no-ports            Select or deselect FreeBSD Ports Collection.
  --prt-get / --no-prt-get        Select or deselect CRUX prt-get.
  --pwsh-gallery / --no-pwsh-gallery
                                  Select or deselect PowerShell Gallery.
  --roswell / --no-roswell        Select or deselect Roswell.
  --scoop / --no-scoop            Select or deselect Scoop.
  --sdkman / --no-sdkman          Select or deselect SDKMAN.
  --sfsu / --no-sfsu              Select or deselect Scoop sfsu.
  --sheldon / --no-sheldon        Select or deselect Sheldon.
  --snap / --no-snap              Select or deselect Snap.
  --spack / --no-spack            Select or deselect Spack.
  --sun-tools / --no-sun-tools    Select or deselect Solaris SVR4 package tools.
  --tazpkg / --no-tazpkg          Select or deselect TazPkg.
  --trizen / --no-trizen          Select or deselect Arch Linux trizen.
  --uv / --no-uv                  Select or deselect Python uv.
  --uvx / --no-uvx                Select or deselect Python uvx.
  --vagrant / --no-vagrant        Select or deselect Vagrant.
  --vcpkg / --no-vcpkg            Select or deselect vcpkg.
  --vim-pack / --no-vim-pack      Select or deselect Neovim vim-pack.
  --volta / --no-volta            Select or deselect Volta. (unmaintained)
  --winget / --no-winget          Select or deselect WinGet.
  --xbps / --no-xbps              Select or deselect Void XBPS.
  --yarn-berry / --no-yarn-berry  Select or deselect Yarn Berry.
  --yarn / --no-yarn              Select or deselect Yarn Classic.
  --yay / --no-yay                Select or deselect Arch Linux yay.
  --yum / --no-yum                Select or deselect Fedora YUM.
  --zef / --no-zef                Select or deselect Zef.
  --zeroinstall / --no-zeroinstall
                                  Select or deselect Zero Install.
  --zim / --no-zim                Select or deselect Zsh Zim.
  --zinit / --no-zinit            Select or deselect Zinit.
  --zplug / --no-zplug            Select or deselect Zsh zplug.
  --zypper / --no-zypper          Select or deselect openSUSE Zypper.
  --apt-cyg / --no-apt-cyg        Select or deselect apt-cyg. (unmaintained)
  --basalt / --no-basalt          Select or deselect Basalt.
  --bob / --no-bob                Select or deselect bob.
  --bpkg / --no-bpkg              Select or deselect bpkg.
  --bun / --no-bun                Select or deselect Bun.
  --cargo / --no-cargo            Select or deselect Rust cargo.
  --cave / --no-cave              Select or deselect cave.
  --choco / --no-choco            Select or deselect Chocolatey.
  --choosenim / --no-choosenim    Select or deselect Nim choosenim.
  --chromebrew / --no-chromebrew  Select or deselect Chromebrew.
  --claude-code-plugins / --no-claude-code-plugins
                                  Select or deselect Claude Code plugins.
  --clib / --no-clib              Select or deselect clib.
  --cpan / --no-cpan              Select or deselect Perl CPAN.
  --elan / --no-elan              Select or deselect Lean elan.
  --emacs / --no-emacs            Select or deselect GNU Emacs packages.
  --fink / --no-fink              Select or deselect Fink.
  --gcloud / --no-gcloud          Select or deselect Google Cloud CLI.
  --getnf / --no-getnf            Select or deselect getnf.
  --gh-ext / --no-gh-ext          Select or deselect GitHub CLI extensions.
  --gup / --no-gup                Select or deselect gup.
  --haxelib / --no-haxelib        Select or deselect Haxe haxelib.
  --hyprpm / --no-hyprpm          Select or deselect Hyprland hyprpm.
  --jpm / --no-jpm                Select or deselect jpm.
  --julia / --no-julia            Select or deselect Julia Pkg.
  --juliaup / --no-juliaup        Select or deselect Julia juliaup.
  --krew / --no-krew              Select or deselect kubectl krew.
  --macports / --no-macports      Select or deselect MacPorts.
  --micro / --no-micro            Select or deselect micro editor.
  --ollama / --no-ollama          Select or deselect Ollama.
  --opam / --no-opam              Select or deselect OCaml opam.
  --opkg / --no-opkg              Select or deselect opkg.
  --pamac / --no-pamac            Select or deselect Manjaro pamac.
  --pearl / --no-pearl            Select or deselect Pearl.
  --pi / --no-pi                  Select or deselect Pi extensions.
  --pipxu / --no-pipxu            Select or deselect pipxu.
  --pkg-tools / --no-pkg-tools    Select or deselect OpenBSD pkg tools.
  --pkgin / --no-pkgin            Select or deselect Pkgin.
  --pkgm / --no-pkgm              Select or deselect pkgm.
  --platformio-core / --no-platformio-core
                                  Select or deselect PlatformIO Core.
  --pyenv / --no-pyenv            Select or deselect Python pyenv.
  --raco / --no-raco              Select or deselect raco.
  --rustup / --no-rustup          Select or deselect Rust rustup.
  --shelly / --no-shelly          Select or deselect Shelly.
  --skills / --no-skills          Select or deselect Agent Skills.
  --slapt-get / --no-slapt-get    Select or deselect slapt-get.
  --soar / --no-soar              Select or deselect Soar.
  --sorcery / --no-sorcery        Select or deselect Sorcery.
  --steamcmd / --no-steamcmd      Select or deselect Valve SteamCMD.
  --stew / --no-stew              Select or deselect stew.
  --swupd / --no-swupd            Select or deselect Clear Linux Software
                                  Updater. (unmaintained)
  --tlmgr / --no-tlmgr            Select or deselect TeX Live Manager.
  --topgrade / --no-topgrade      Select or deselect Topgrade.
  --urpmi / --no-urpmi            Select or deselect urpmi.
  --vscode / --no-vscode          Select or deselect Visual Studio Code.
  --vscodium / --no-vscodium      Select or deselect VSCodium.
  --xcodes / --no-xcodes          Select or deselect Xcode xcodes.
  --yazi / --no-yazi              Select or deselect Yazi ya.
  --zerobrew / --no-zerobrew      Select or deselect zerobrew.
  --zvm / --no-zvm                Select or deselect zvm.
  -a, --all-managers              Force evaluation of all managers implemented
                                  by mpm, including those not supported by the
                                  current platform or unmaintained. Still
                                  applies filtering by --<manager-id> /
                                  --no-<manager-id> options before calling the
                                  subcommand.
  -x, --xkcd                      Preset manager selection as defined by XKCD
                                  #1654. Equivalent to: --pip --brew --npm --dnf
                                  --apt --steamcmd.

Manager options:
  --ignore-auto-updates / --include-auto-updates
                                  Report all outdated packages, including those
                                  tagged as auto-updating. Only applies to
                                  outdated and upgrade subcommands.  [default:
                                  ignore-auto-updates]
  --stop-on-error / --continue-on-error
                                  Stop right away or continue operations on
                                  manager CLI error.  [default: continue-on-
                                  error]
  --sudo / --no-sudo              Force running privileged manager operations
                                  with (or without) sudo. Unset by default,
                                  letting each manager decide: system managers
                                  (apt, dnf, pacman, ...) escalate, user-level
                                  managers do not. When escalation is needed on
                                  a terminal, mpm authenticates once up front
                                  instead of prompting mid-run; off a terminal,
                                  managers needing root fail fast rather than
                                  stalling.
  --sudo-command [sudo|doas|run0|pkexec|gsudo|win-sudo]
                                  Escalator to run privileged manager operations
                                  with. Auto-detected by default, preferring
                                  sudo on a host carrying both. Selects the
                                  binary only: whether a manager escalates at
                                  all stays up to --sudo/--no-sudo and each
                                  manager's own policy.
  -d, --dry-run                   Do not actually perform any action, just
                                  simulate CLI calls.
  -p, --plan                      Print the exact package-manager commands each
                                  state-changing operation would run, without
                                  running them. Read-only queries (installed,
                                  outdated, search) still run, so install,
                                  remove and upgrade --all resolve to the
                                  commands they would actually execute against
                                  real system state. The plan prints to stdout,
                                  one copy-pasteable command per line.
  -t, --timeout INTEGER RANGE     Maximum duration in seconds for each CLI call.
                                  Applies to every manager and operation. When
                                  unset, a per-operation default is used
                                  instead: a short cap for read-only queries
                                  (installed, outdated, search) and a longer one
                                  for state-changing operations (install,
                                  upgrade, remove, sync, cleanup).  [x>=0]
  --cooldown [DURATION | enforce | best-effort | off]
                                  Refuse to install or upgrade any package
                                  version published more recently than the given
                                  duration, as a mitigation against supply-chain
                                  attacks. Accepts a friendly duration ('7
                                  days', '1 week', '12h'), an ISO 8601 duration
                                  ('P7D', 'PT12H'), an RFC 3339 absolute
                                  timestamp ('2024-05-01T00:00:00Z'), or an
                                  enforcement keyword: 'enforce' and 'best-
                                  effort' pick the posture for managers without
                                  native release-age support (skip them, or run
                                  them without the safeguard) while the window
                                  comes from the configuration, and 'off'
                                  disables the gate for this run. The window is
                                  only honored by managers with native release-
                                  age support (flatpak, mas, npm, paru, pip,
                                  pipx, pnpm, uv, uvx, yay); the others are
                                  skipped unless the best-effort posture is
                                  selected.  [default: (disabled)]
  -j, --jobs [auto|max|INTEGER]   Maximum number of managers to run
                                  concurrently. Defaults to one less than the
                                  CPU count; set 1 to run sequentially. Applies
                                  to read-only queries (installed, outdated,
                                  search), maintenance commands (sync, cleanup,
                                  upgrade --all), and the state changers
                                  (install, remove, upgrade, restore), which fan
                                  out across managers while running each
                                  manager's own packages one at a time.
                                  Installing a package left untied to a manager
                                  stays sequential.  [default: auto]

Reporting options:
  --description                   Show package description in results. Shorthand
                                  for adding the 'description' column to 'mpm
                                  search'; an explicit --columns selection wins.
  --summary / --no-summary        Print an end-of-run summary on stderr: a count
                                  line of per-manager totals plus any
                                  subcommand-specific follow-up notes (like SBOM
                                  enrichment and merge counts). Defaults on; use
                                  --no-summary to silence.  [default: summary]
  --network / --no-network        Opt into network calls during the run. Today
                                  this only affects 'mpm sbom', which uses the
                                  flag to query OSV.dev for vulnerability data
                                  and attach it to the rendered document.
                                  Responses are cached on disk so repeat runs
                                  are fast. Defaults off; the offline path
                                  remains the default. Note: when enabled, this
                                  transmits the package inventory to the queried
                                  services.  [default: no-network]
  --suggest-contribs / --no-suggest-contribs
                                  Print a contribution invitation when a user
                                  override targets a field that likely indicates
                                  an upstream detection bug (cli_names,
                                  cli_search_path, requirement,
                                  version_cli_options, version_regexes).
                                  [default: suggest-contribs]
  -s, --sort-by [manager_id|manager_name|package_id|package_name|version]
                                  Sort results by this field. Repeat to add tie-
                                  breakers in priority order, like '-s
                                  manager_id -s package_id'.  [default:
                                  manager_id]

SwiftBar/Xbar options:
  --bar-plugin-path               Print location of the SwiftBar/Xbar plugin.

Other options:
  --config LOCATION               Location of the configuration file. Supports
                                  local path with glob patterns or remote URL.
                                  [default: ~/.config/mpm/]
  --params                        Show all CLI parameters, their provenance,
                                  defaults and value, then exit.
  --version                       Show the version and exit.
  -0, --zero-exit                 Always exit with a status code of 0, even when
                                  problems are found.
  -h, --help                      Show this message and exit.

Configuration options:
  --no-config                     Ignore all configuration files and only use
                                  command line parameters and environment
                                  variables.
  --validate-config LOCATION      Validate the configuration file and exit.
  --export-config FORMAT          Export the configuration in the selected
                                  format to <stdout>, then exit.

Output options:
  --accessible                    Accessibility mode: disable colors and render
                                  tables in a borderless, screen-reader-friendly
                                  format.
  --color [auto|always|never]     Colorize the output. A bare --color is the
                                  same as --color=always.  [default: auto]
  --no-color                      Disable colorization (alias of --color=never).
  --progress / --no-progress      Show progress indicators during long
                                  operations. Disabled for non-interactive
                                  output (pipes, dumb terminals, CI) and by
                                  --accessible.  [default: progress]
  --theme [auto|dark|dracula|light|manpage|monokai|nord|solarized-dark]
                                  Color theme used for help screens.  [default:
                                  dark]
  --table-format FORMAT           Rendering style of tables.  [default: rounded-
                                  outline]

Logging options:
  --verbosity LEVEL               Either CRITICAL, ERROR, WARNING, INFO, DEBUG.
                                  [default: WARNING]
  -v, --verbose                   Increase the default WARNING verbosity by one
                                  level for each additional repetition of the
                                  option.  [default: 0]
  -q, --quiet                     Decrease the default WARNING verbosity by one
                                  level for each additional repetition of the
                                  option.  [default: 0]
  --debug                         Shorthand for --verbosity DEBUG.

Introspection options:
  --time / --no-time              Measure and print elapsed execution time.
                                  [default: no-time]
  --tree                          Show the tree of nested subcommands and exit.
  --man                           Read the command's manual page and exit.
  --help-format [carapace|json|json-full|man|markdown|markdown-full]
                                  Render the command in the given format and
                                  exit.

Explore subcommands:
  managers                  List the package managers detected on the system.
  installed (list)          List installed packages.
  outdated                  List outdated packages.
  orphans                   List orphaned packages.
  search                    Search packages.
  which (locate)            Locate CLIs on system.
  config-template           Print per-manager overrides as a TOML config
                            template.

Maintenance subcommands:
  install                   Install a package.
  upgrade (update)          Upgrade packages.
  remove (uninstall)        Remove a package.
  sync                      Sync local package info.
  cleanup                   Cleanup local data.
  doctor (check, diagnose)  Diagnose managers health.

Package snapshots subcommands:
  dump (backup, lock, freeze, snapshot)
                            Snapshot installed packages to a TOML manifest or a
                            Brewfile.
  restore                   Install packages referenced in TOML files.

SBOM subcommands:
  sbom                      Export installed packages to a SBOM document.

Other commands:
  help                      Show help for a command.

Examples:
  List every package installed on the machine:
    $ mpm installed
  Upgrade everything every manager reports as outdated:
    $ mpm upgrade --all
  Refuse any release younger than a week while upgrading:
    $ mpm --cooldown "7 days" upgrade --all
  Snapshot the whole inventory to a TOML manifest:
    $ mpm dump packages.toml
  Replay that manifest on another machine:
    $ mpm restore packages.toml

mpm cleanupΒΆ

$ mpm cleanup --help
Usage: mpm cleanup [OPTIONS]

  Cleanup local data and temporary artifacts.

  The work decomposes into cumulative categories, each with a two-sided flag
  pair: `--orphans/--skip-orphans` (system-wide orphan sweep), `--cache/--skip-
  cache` (caches, downloads and left-overs) and `--repair/--skip-repair` (local
  state verification). Positive flags narrow the run to exactly the listed
  categories; skip flags subtract from the default selection.

  A plain `cleanup` runs the cache and repair categories and never removes a
  package: the orphan sweep is the one destructive category, so it only runs on
  an explicit `--orphans`, uniformly across managers, just as `remove` keeps its
  dependency cascade behind the same flag. A manager with no native sweep verb
  but a native orphan listing gets the sweep synthesized: list the orphans,
  remove them one by one, and repeat until none are left. Managers supporting
  none of the selected categories are skipped.

Options:
  --orphans / --skip-orphans  Remove orphaned packages (those nothing depends on
                              anymore) using each manager's system-wide sweep,
                              native or synthesized from its orphan listing. The
                              only category removing packages, so it never runs
                              unless requested.  [default: skip-orphans]
  --cache / --skip-cache      Prune caches, downloads and other left-over
                              artifacts. The broadest category: for most
                              managers the whole cleanup amounts to it.
                              [default: cache]
  --repair / --skip-repair    Verify and repair the manager's local installation
                              state (like `flatpak repair`).  [default: repair]
  -h, --help                  Show this message and exit.

Examples:
  Prune caches and repair local state:
    $ mpm cleanup
  Also remove the packages nothing requires:
    $ mpm cleanup --orphans
  Prune caches and nothing else:
    $ mpm cleanup --skip-repair

mpm config-templateΒΆ

$ mpm config-template --help
Usage: mpm config-template [OPTIONS] [MANAGER_ID]...

  Print the overridable attributes of one or more managers as a TOML config
  template.

  Each block is a valid `[mpm.overrides.<id>]` section ready to paste into a
  standalone config file or a `[tool.mpm]` `pyproject.toml` block. The output
  lists every overridable field with its current value so it doubles as the
  canonical reference for what each manager exposes: prune the rows that don't
  apply and customize the rest.

  With no positional arguments, every maintained manager (those not flagged
  unmaintained) is dumped. Pass one or more manager IDs to restrict the output;
  `mpm managers --view all` lists every ID this accepts, and shell completion
  proposes them.

Options:
  -h, --help  Show this message and exit.

Examples:
  Print the overridable block of one manager:
    $ mpm config-template brew
  Print a block for every manager mpm implements:
    $ mpm config-template

mpm doctorΒΆ

$ mpm doctor --help
Usage: mpm doctor [OPTIONS]
Aliases: check, diagnose

  Run each manager's native self-diagnosis and relay its report.

  Read-only: nothing is modified. Each manager runs its own diagnostic verb
  (`brew doctor`, `pip check`, `pacman --database --check`, `npm doctor`, ...),
  its health is read from that command's exit code, and its report β€” the
  diagnosis being the product, not something `mpm` can parse β€” is relayed
  verbatim to `<stdout>`, one section per manager with findings.

  The trail marks each manager `βœ“` (healthy) or `βœ—` (problems found), and the
  run exits non-zero when any manager reports problems, so the command can gate
  a CI job. `-0`/`--zero-exit` keeps the exit code at `0`. Managers with no
  diagnostic verb are skipped.

Options:
  -h, --help  Show this message and exit.

Examples:
  Relay the self-diagnosis of every manager:
    $ mpm doctor
  Diagnose one manager:
    $ mpm --brew doctor

mpm dumpΒΆ

$ mpm dump --help
Usage: mpm dump [OPTIONS] [OUTPUT_PATH]
Aliases: backup, lock, freeze, snapshot

  Dump installed packages to a TOML manifest or a Brewfile.

  By default emits TOML, one section per manager (one entry per package, keyed
  by package ID, with the installed version as the value). Pass `--brewfile` to
  emit a Brewfile compatible with `brew bundle install`.

  With no [OUTPUT_PATH] argument, writes to stdout. TOML files are readable by
  `mpm restore`.

  With `--query`, restrict the snapshot to installed packages whose ID or name
  matches it (fuzzy by default, verbatim with `--exact`).

  `--merge` and `--update-version` operate on an existing TOML file; both
  require the [OUTPUT_PATH] argument and neither is valid with `--brewfile`.

Options:
  --toml                  Emit a TOML manifest with one section per manager.
                          Default.  [default: toml]
  --brewfile              Emit a Brewfile that `brew bundle install` can
                          consume. Only managers natively supported by brew
                          bundle are included. Other managers are tallied in the
                          header and excluded from the output.
  --overwrite, --force, --replace
                          Allow the target file to be silently wiped out if it
                          already exists.
  --header / --no-header  Include a metadata + warning comment block at the top
                          of the output.  [default: header]
  --merge                 TOML only. Read the provided file and add each new
                          entry to it. Requires the [OUTPUT_PATH] argument.
  --update-version        TOML only. Read the provided file and update each
                          existing entry with the version currently installed on
                          the system. Requires the [OUTPUT_PATH] argument.
  --query QUERY           Only keep installed packages whose ID or name matches
                          QUERY. Fuzzy by default (case-insensitive, tokenized);
                          see --exact.
  --exact / --fuzzy       With --query, require a verbatim match on the package
                          ID or name instead of the default fuzzy match. No
                          effect without --query.  [default: fuzzy]
  -h, --help              Show this message and exit.

Examples:
  Print a TOML manifest of everything installed:
    $ mpm dump
  Write that manifest to a file:
    $ mpm dump packages.toml
  Emit a Brewfile instead:
    $ mpm dump --brewfile Brewfile
  Refresh the versions an existing manifest records:
    $ mpm dump --update-version packages.toml

mpm helpΒΆ

$ mpm help --help
Usage: mpm help [OPTIONS] [COMMAND_PATH]...

  Show help for a command.

Options:
  --search TEXT  Search all subcommands for matching options or descriptions.
  -h, --help     Show this message and exit.

mpm installΒΆ

$ mpm install --help
Usage: mpm install [OPTIONS] PACKAGES_SPECS...

  Install one or more packages.

  This subcommand is sensible to the order of the package managers selected by
  the user.

  Installation will first proceed for all the packages found to be tied to a
  specific manager. Which is the case for packages provided with precise package
  specifiers (like purl). This will also happens in situations in which a
  tighter selection of managers is provided by the user.

  For packages whose manager is not known, or if multiple managers are
  candidates for the installation, mpm will try to find the best manager to
  install it with.

  Installation will be attempted with each manager, in the order they were
  selected. If a search for the package ID returns no result from the highest-
  priority manager, we will skip the installation and try the next available
  managers in the order of their priority.

Positional arguments:
  PACKAGES_SPECS...  A mix of plain <package_id>, simple <package_id@version>
                     specifiers or full <pkg:npm/left-pad> purls.

Options:
  -h, --help         Show this message and exit.

Examples:
  Install with the first manager carrying the package:
    $ mpm install jq
  Install with one manager only:
    $ mpm --brew install jq
  Pin the version to install:
    $ mpm install [email protected]
  Name the manager in the specifier itself:
    $ mpm install pkg:npm/left-pad

mpm installedΒΆ

$ mpm installed --help
Usage: mpm installed [OPTIONS] [QUERY]
Aliases: list

  List all packages installed on the system by each manager.

  With an optional `QUERY`, restrict the listing to installed packages whose ID
  or name matches it. The match is fuzzy by default (case-insensitive,
  tokenized); `--exact` requires a verbatim match on the package ID or name.

Options:
  --exact / --fuzzy  With a QUERY, only keep packages whose ID or name matches
                     it exactly, instead of the default case-insensitive,
                     tokenized (fuzzy) match. No effect without a QUERY.
                     [default: fuzzy]
  -d, --duplicates   Only list installed packages sharing the same ID. Implies
                     `--sort-by package_id` to make duplicates easier to compare
                     between themselves.
  --columns [package_id,package_name,manager_id,installed_version]
                     Restrict and reorder table columns, SQL SELECT-style.
                     Comma-separated list of column IDs. Default: all columns in
                     canonical order.
  -h, --help         Show this message and exit.

Examples:
  List every installed package:
    $ mpm installed
  Keep the ones whose ID or name matches a query:
    $ mpm installed curl
  Find the packages several managers each installed:
    $ mpm installed --duplicates
  Report one manager's inventory as JSON:
    $ mpm --brew --table-format json installed

mpm managersΒΆ

$ mpm managers --help
Usage: mpm managers [OPTIONS]

  List every package manager detected on the system.

  Reports by default the managers `mpm` found and can drive right now. The pool
  has grown past a hundred entries, most of them absent from any given machine,
  which is what makes the detected ones the useful default.

  The wider views are for troubleshooting a manager `mpm` does not pick up, each
  row spelling out what is missing. `--view supported` adds the managers this
  platform could run but whose CLI is absent; `--view all` adds those supported
  on other platforms and the unmaintained ones, and is what the global `--all-
  managers` flag selects here.

  User's own selection configuration are intentionally ignored, so a manager
  dropped from regular operations is still visible here for troubleshooting. To
  narrow down the report to a subset of managers, pass the same selectors as for
  other subcommands (like `--pip` or `--no-apt`).

Options:
  --view [detected|supported|all]
              How much of the manager pool to report. Defaults to 'detected',
              unless --<manager-id> selectors name managers to answer about
              (then 'supported') or --all-managers was passed (then 'all').
  --columns [manager_id,manager_name,supported,cli,executable,version]
              Restrict and reorder table columns, SQL SELECT-style. Comma-
              separated list of column IDs. Default: all columns in canonical
              order.
  -h, --help  Show this message and exit.

Examples:
  List the managers detected on this machine:
    $ mpm managers
  Report every manager mpm implements, detected or not:
    $ mpm --all-managers managers
  Answer about two managers only:
    $ mpm --brew --npm managers

mpm orphansΒΆ

$ mpm orphans --help
Usage: mpm orphans [OPTIONS] [QUERY]

  List packages installed as dependencies that no package requires anymore.

  Each manager reports its orphans through its own native read-only query
  (`pacman --query --deps --unrequired`, `brew autoremove --dry-run`, `dnf
  repoquery --unneeded`, ...): `mpm` builds no dependency graph of its own.
  Review the list here, then act on it with `mpm cleanup --orphans`.

  With an optional `QUERY`, restrict the listing to orphaned packages whose ID
  or name matches it. The match is fuzzy by default (case-insensitive,
  tokenized); `--exact` requires a verbatim match on the package ID or name.

Options:
  --exact / --fuzzy  With a QUERY, only keep packages whose ID or name matches
                     it exactly, instead of the default case-insensitive,
                     tokenized (fuzzy) match. No effect without a QUERY.
                     [default: fuzzy]
  --columns [package_id,package_name,manager_id,installed_version]
                     Restrict and reorder table columns, SQL SELECT-style.
                     Comma-separated list of column IDs. Default: all columns in
                     canonical order.
  -h, --help         Show this message and exit.

Examples:
  List the packages nothing requires anymore:
    $ mpm orphans
  Ask one manager for its orphans:
    $ mpm --pacman orphans

mpm outdatedΒΆ

$ mpm outdated --help
Usage: mpm outdated [OPTIONS] [QUERY]

  List available package upgrades and their versions for each manager.

  With an optional `QUERY`, restrict the listing to outdated packages whose ID
  or name matches it. The match is fuzzy by default (case-insensitive,
  tokenized); `--exact` requires a verbatim match on the package ID or name.

Options:
  --exact / --fuzzy  With a QUERY, only keep packages whose ID or name matches
                     it exactly, instead of the default case-insensitive,
                     tokenized (fuzzy) match. No effect without a QUERY.
                     [default: fuzzy]
  --plugin-output    Output results for direct consumption by a SwiftBar/Xbar-
                     compatible plugin. The layout is dynamic and depends on
                     environment variables set by either Xbar or SwiftBar.
  --columns [package_id,package_name,manager_id,installed_version,latest_version]
                     Restrict and reorder table columns, SQL SELECT-style.
                     Comma-separated list of column IDs. Default: all columns in
                     canonical order.
  -h, --help         Show this message and exit.

Examples:
  List every upgradable package:
    $ mpm outdated
  Restrict the listing to one package:
    $ mpm outdated curl
  Feed a SwiftBar or Xbar plugin:
    $ mpm outdated --plugin-output

mpm removeΒΆ

$ mpm remove --help
Usage: mpm remove [OPTIONS] PACKAGES_SPECS...
Aliases: uninstall

  Remove one or more packages.

  Packages recognized by multiple managers will be remove with each of them. You
  can fine-tune this behavior with more precise package specifiers (like purl)
  and/or tighter selection of managers.

  Packages unrecognized by any selected manager will be skipped.

  With `--orphans`, each package is removed together with the dependencies it
  alone pulled in, mapped to the manager's native cascade verb (``apt remove
  --auto-remove`, `pacman --remove --recursive`, `dnf autoremove``, ...).
  Managers with no such verb remove the package only.

Positional arguments:
  PACKAGES_SPECS...  A mix of plain <package_id>, simple <package_id@version>
                     specifiers or full <pkg:npm/left-pad> purls.

Options:
  --orphans          Also remove the dependencies the package pulled in that no
                     other package needs, using each manager's native cascade
                     verb. Managers without one remove the package only.
  -h, --help         Show this message and exit.

Examples:
  Remove a package from every manager carrying it:
    $ mpm remove jq
  Remove it and the dependencies it pulled in:
    $ mpm remove --orphans jq

mpm restoreΒΆ

$ mpm restore --help
Usage: mpm restore [OPTIONS] TOML_FILES...

  Read TOML files then install or upgrade each package referenced in them.

Options:
  -h, --help  Show this message and exit.

Examples:
  Install every package a manifest lists:
    $ mpm restore packages.toml
  Replay several manifests in one run:
    $ mpm restore base.toml laptop.toml

mpm sbomΒΆ

$ mpm sbom --help
Usage: mpm sbom [OPTIONS] [EXPORT_PATH]

  Export list of installed packages to a SPDX or CycloneDX file.

  With `--query`, restrict the export to installed packages whose ID or name
  matches it (fuzzy by default, verbatim with `--exact`).

Options:
  --spdx / --cyclonedx   SBOM standard to export to.  [default: spdx]
  --format [json|xml|yaml|tag|rdf]
                         File format of the export. Defaults to JSON for
                         <stdout>. If not provided, will be autodetected from
                         file extension.
  --overwrite, --force, --replace
                         Allow the target file to be silently wiped out if it
                         already exists.
  --bundled / --minimal  Bundled mode (the default) queries each manager for
                         richer metadata (license, supplier, homepage,
                         checksums, declared dependencies) and merges per-
                         package upstream SBOM documents into the aggregate when
                         the manager publishes them (like Homebrew's
                         HOMEBREW_SBOM=1 per-formula files). Minimal mode lists
                         installed packages with the bare inventory data (name,
                         version, purl) and skips the metadata extractors
                         entirely. Bundled mode is slower because it may shell
                         out or read on-disk SBOM files per package; pick
                         --minimal for fast inventory snapshots.  [default:
                         bundled]
  --query QUERY          Only keep installed packages whose ID or name matches
                         QUERY. Fuzzy by default (case-insensitive, tokenized);
                         see --exact.
  --exact / --fuzzy      With --query, require a verbatim match on the package
                         ID or name instead of the default fuzzy match. No
                         effect without --query.  [default: fuzzy]
  -h, --help             Show this message and exit.

Examples:
  Print an SPDX document of everything installed:
    $ mpm sbom
  Write CycloneDX, format guessed from the extension:
    $ mpm sbom --cyclonedx sbom.json
  Skip the per-package metadata for a fast run:
    $ mpm sbom --minimal
  Attach the vulnerabilities OSV.dev reports:
    $ mpm --network sbom

mpm syncΒΆ

$ mpm sync --help
Usage: mpm sync [OPTIONS]

  Sync local package metadata and info from external sources.

Options:
  -h, --help  Show this message and exit.

Examples:
  Refresh the package metadata of every manager:
    $ mpm sync
  Refresh one manager only:
    $ mpm --apt sync

mpm upgradeΒΆ

$ mpm upgrade --help
Usage: mpm upgrade [OPTIONS] [PACKAGES_SPECS]...
Aliases: update

  Upgrade one or more outdated packages.

  All outdated package will be upgraded by default if no specifiers are provided
  as arguments. I.e. assumes -A/--all option if no [PACKAGES_SPECS]....

  Packages recognized by multiple managers will be upgraded with each of them.
  You can fine-tune this behavior with more precise package specifiers (like
  purl) and/or tighter selection of managers.

  Packages unrecognized by any selected manager will be skipped.

Positional arguments:
  [PACKAGES_SPECS]...  A mix of plain <package_id>, simple <package_id@version>
                       specifiers or full <pkg:npm/left-pad> purls.

Options:
  -A, --all            Upgrade all outdated packages. Will make the command
                       ignore package IDs provided as parameters.
  -h, --help           Show this message and exit.

Examples:
  Upgrade every outdated package of every manager:
    $ mpm upgrade --all
  Upgrade two packages wherever they are installed:
    $ mpm upgrade curl jq
  Sit out the first days of each new release:
    $ mpm --cooldown "7 days" upgrade --all

mpm whichΒΆ

$ mpm which --help
Usage: mpm which [OPTIONS] CLI_NAMES...
Aliases: locate

  Search from the user's environment all CLIs matching the query.

  This is mpm's own version of the `which -a` UNIX command, used internally to
  locate binaries for each manager. It is exposed as a subcommand for
  convenience and to help troubleshoot CLI resolution logic.

  Compared to the venerable `which` command, this will respect the additional
  path configured for each package manager. It will ignore files that are empty
  (0 size). On Windows, it additionally suppress the default lookup in the
  current directory, which takes precedence on other paths.

Options:
  --columns [manager_id,priority,cli_path,symlink]
              Restrict and reorder table columns, SQL SELECT-style. Comma-
              separated list of column IDs. Default: all columns in canonical
              order.
  -h, --help  Show this message and exit.

Examples:
  Locate every binary answering to a name:
    $ mpm which python3
  Look up several names in one run:
    $ mpm which python3 pip3

Command

Description

mpm

CLI options shared by all subcommands

mpm cleanup

Cleanup local data

mpm config-template

Print per-manager overrides as a TOML config template

mpm doctor

Diagnose managers health

mpm dump

Snapshot installed packages to a TOML manifest or a Brewfile

mpm help

Show help for a command

mpm install

Install a package

mpm installed

List installed packages

mpm managers

List the package managers detected on the system

mpm orphans

List orphaned packages

mpm outdated

List outdated packages

mpm remove

Remove a package

mpm restore

Install packages referenced in TOML files

mpm sbom

Export installed packages to a SBOM document

mpm search

Search packages

mpm sync

Sync local package info

mpm upgrade

Upgrade packages

mpm which

Locate CLIs on system

Man pagesΒΆ

Every command documented above also ships as a Unix manual page, generated from the same live command tree. The Man pages page indexes them and links each to its browser-viewable rendering.