Homebrew Formulae

The formula half of Homebrew: command-line tools built from recipes.

Homebrew is the umbrella project behind the brew CLI. mpm splits it into two managers over the same binary, this one for formulae and Cask for macOS applications; a forced --formula selector keeps every call on the formula side. Homebrew core runs on macOS and on Linux and WSL.

mpm drives brew non-interactively and pins its environment: analytics and setup hints are silenced, and HOMEBREW_NO_AUTO_UPDATE keeps brew from folding a metadata refresh into every command, since mpm runs that as a separate sync (asked for since mpm’s early days). Outdated packages come from --json=v2; the installed and search listings are parsed from their plain-text columns.

Note

The >=6.0.0 requirement is the release where ask mode became the default for brew install and brew upgrade, and where the --yes opt-out mpm relies on for unattended runs first shipped. It is also where Homebrew began rejecting third-party taps until trusted, so installing a fully-qualified user/tap/name package taps and trusts it first (see Homebrew.trust_tap()).

Caution

A pinned formula still appears in mpm outdated output, yet brew upgrade silently skips it: mpm discards Homebrew’s pinned fields today.

Platforms

  • 🐧 Linux

  • 🍎 macOS

Operations

Operation

Supported

installed

outdated

search

install

upgrade

upgrade_all

remove

sync

cleanup

Ecosystem

Usage

$ mpm --brew installed
$ mpm --brew search "query"
$ mpm --brew upgrade --all
$ mpm install pkg:brew/hello
$ mpm --dry-run --brew 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-brew, disable it from your configuration, or tune its invocation attributes with per-manager overrides.

Command line

  • CLI names, in lookup order: brew

  • Arguments forced after each call: --formula

  • Environment forced on each call:

    • HOMEBREW_NO_ANALYTICS=1

    • HOMEBREW_NO_AUTO_UPDATE=1

    • HOMEBREW_NO_ENV_HINTS=1

The version is extracted from the output of brew --version with:

r"Homebrew\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.

See privilege escalation for the full policy.

Cooldown

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

  • Status: 🚧 Proposed (closed as not planned for users; merged for internal bottle resource resolution)

  • Mechanism: (internal) --min-release-age=1, --uploaded-prior-to

  • Reference: Homebrew/brew#21129

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.