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: [36m[1m--pip[0m [36m[1m--brew[0m [36m[1m--npm[0m [36m[1m--dnf[0m
--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:
$ [97m[1mmpm[0m installed
Upgrade everything every manager reports as outdated:
$ [97m[1mmpm[0m upgrade --all
Refuse any release younger than a week while upgrading:
$ [97m[1mmpm[0m [36m[1m--cooldown[0m "7 days" upgrade --all
Snapshot the whole inventory to a TOML manifest:
$ [97m[1mmpm[0m dump packages.toml
Replay that manifest on another machine:
$ [97m[1mmpm[0m 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:
$ [97m[1mmpm cleanup[0m
Also remove the packages nothing requires:
$ [97m[1mmpm cleanup[0m [36m[1m--orphans[0m
Prune caches and nothing else:
$ [97m[1mmpm cleanup[0m [36m[1m--skip-repair[0m
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:
$ [97m[1mmpm config-template[0m [35m[1mbrew[0m
Print a block for every manager mpm implements:
$ [97m[1mmpm config-template[0m
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:
$ [97m[1mmpm doctor[0m
Diagnose one manager:
$ [97m[1mmpm[0m [36m[1m--brew[0m [97m[1mdoctor[0m
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:
$ [97m[1mmpm dump[0m
Write that manifest to a file:
$ [97m[1mmpm dump[0m packages.toml
Emit a Brewfile instead:
$ [97m[1mmpm dump[0m [36m[1m--brewfile[0m Brewfile
Refresh the versions an existing manifest records:
$ [97m[1mmpm dump[0m [36m[1m--update-version[0m 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:
$ [97m[1mmpm install[0m jq
Install with one manager only:
$ [97m[1mmpm[0m [36m[1m--brew[0m [97m[1minstall[0m jq
Pin the version to install:
$ [97m[1mmpm install[0m [email protected]
Name the manager in the specifier itself:
$ [97m[1mmpm install[0m 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:
$ [97m[1mmpm installed[0m
Keep the ones whose ID or name matches a query:
$ [97m[1mmpm installed[0m curl
Find the packages several managers each installed:
$ [97m[1mmpm installed[0m [36m[1m--duplicates[0m
Report one manager's inventory as JSON:
$ [97m[1mmpm[0m [36m[1m--brew[0m [36m[1m--table-format[0m [35m[1mjson[0m [97m[1minstalled[0m
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:
$ [97m[1mmpm managers[0m
Report every manager mpm implements, detected or not:
$ [97m[1mmpm[0m [36m[1m--all-managers[0m [97m[1mmanagers[0m
Answer about two managers only:
$ [97m[1mmpm[0m [36m[1m--brew[0m [36m[1m--npm[0m [97m[1mmanagers[0m
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:
$ [97m[1mmpm orphans[0m
Ask one manager for its orphans:
$ [97m[1mmpm[0m [36m[1m--pacman[0m [97m[1morphans[0m
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:
$ [97m[1mmpm outdated[0m
Restrict the listing to one package:
$ [97m[1mmpm outdated[0m curl
Feed a SwiftBar or Xbar plugin:
$ [97m[1mmpm outdated[0m [36m[1m--plugin-output[0m
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:
$ [97m[1mmpm remove[0m jq
Remove it and the dependencies it pulled in:
$ [97m[1mmpm remove[0m [36m[1m--orphans[0m 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:
$ [97m[1mmpm restore[0m packages.toml
Replay several manifests in one run:
$ [97m[1mmpm restore[0m 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:
$ [97m[1mmpm sbom[0m
Write CycloneDX, format guessed from the extension:
$ [97m[1mmpm sbom[0m [36m[1m--cyclonedx[0m sbom.json
Skip the per-package metadata for a fast run:
$ [97m[1mmpm sbom[0m [36m[1m--minimal[0m
Attach the vulnerabilities OSV.dev reports:
$ [97m[1mmpm[0m [36m[1m--network[0m [97m[1msbom[0m
mpm searchΒΆ
$ mpm search --help
Usage: mpm search [OPTIONS] QUERY
Search each manager for a package ID, name or description matching the query.
Options:
--extended / --id-name-only Extend search to description, instead of
restricting it to package ID and name. Implies
--description. [default: id-name-only]
--exact / --fuzzy Only keep packages whose ID or name matches the
query exactly, instead of the default case-
insensitive, tokenized (fuzzy) match. [default:
fuzzy]
--refilter / --no-refilter Let mpm refilters managers' search results.
[default: refilter]
--columns [package_id,package_name,manager_id,latest_version,description]
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:
Search every manager for a package:
$ [97m[1mmpm search[0m jq
Widen the search to package descriptions:
$ [97m[1mmpm search[0m [36m[1m--extended[0m jq
Require a verbatim match on the ID or name:
$ [97m[1mmpm search[0m [36m[1m--exact[0m jq
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:
$ [97m[1mmpm sync[0m
Refresh one manager only:
$ [97m[1mmpm[0m [36m[1m--apt[0m [97m[1msync[0m
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:
$ [97m[1mmpm upgrade[0m [36m[1m--all[0m
Upgrade two packages wherever they are installed:
$ [97m[1mmpm upgrade[0m curl jq
Sit out the first days of each new release:
$ [97m[1mmpm[0m [36m[1m--cooldown[0m "7 days" [97m[1mupgrade[0m [36m[1m--all[0m
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:
$ [97m[1mmpm which[0m python3
Look up several names in one run:
$ [97m[1mmpm which[0m python3 pip3
Command |
Description |
|---|---|
CLI options shared by all subcommands |
|
Cleanup local data |
|
Print per-manager overrides as a TOML config template |
|
Diagnose managers health |
|
Snapshot installed packages to a TOML manifest or a Brewfile |
|
Show help for a command |
|
Install a package |
|
List installed packages |
|
List the package managers detected on the system |
|
List orphaned packages |
|
List outdated packages |
|
Remove a package |
|
Install packages referenced in TOML files |
|
Export installed packages to a SBOM document |
|
Search packages |
|
Sync local package info |
|
Upgrade packages |
|
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.