mrkeyoor.com_
Sat 17 Oct 00:18 UTC
Dev Toolsevaluationupdated 13 Oct 2026

brew review

Homebrew is a package manager for installing and updating command-line software on macOS and Linux, plus desktop applications on macOS. It lets you manage those tools through terminal commands and record a workstation's software selection in a Brewfile.

+48stars / 7d
Verdict

Our Homebrew formula-analytics run installed 41 packages in 22 seconds and built in 5 seconds, but tests were skipped, so these results don't validate the Ruby package manager. Choose Homebrew for current workstation tools on supported platforms when rolling updates are acceptable. Choose another environment manager when exact versions, Intel Mac support, or independently shared writable installations decide the job.

We ran it

Lab card: what happened when we ran brewScreenshot of brew (brew.sh)
Install✓ · 22s41 packages · 192 MB
Build✓ · 5s
Testsn/ano test script
Known vulns0(pip-audit)
Repo2831 files~325,989 lines of source · 17.2 MB · 24 CI workflows

Answers from our run

Does brew build from source?

Dependencies installed in 22 seconds (41 packages), and the build succeeded in 5 seconds. We cloned commit 1b0b73c into a clean Debian container with 3 CPUs and no project-specific setup.

Does brew have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does brew have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use brew?

Teams requiring exact environment recreation from a Brewfile: Bundle explicitly provides no version lock file.

What are the alternatives to brew?

Nix, MacPorts, Scoop. Our Homebrew formula-analytics run installed 41 packages in 22 seconds and built in 5 seconds, but tests were skipped, so these results don't validate the Ruby package manager.

Setup4/5Documented workstation route; our analytics path used 192 MB
Docs5/5Clear platform tiers, version policy, ownership, and analytics guidance
Community5/5October 13 push and recent issue fixes alongside release 7.0.9
Maturity4/5Established package workflow; our lab covered only analytics

Discussed on

  1. hnHomebrew now sends usage information to Google Analytics359 points
  2. hnHomebrew no longer allows bypassing Gatekeeper for unsigned/unnotarized software345 points
  3. hnmacOS 11 Big Sur compatibility on Apple Silicon189 points
  4. hnHomebrew Kickstarter for automated testing hardware54 points
  5. hnHomeBrew: Don't Link OpenSSL15 points

Who it’s for

Developers maintaining current command-line tools on supported Apple Silicon Macs.
Linux and WSL users who need packages beyond their distribution's selection.
Teams recording workstation software in Brewfiles and accepting rolling package versions.
Administrators willing to assign one installation owner and review platform support tiers.

Who it’s NOT for

Teams requiring exact environment recreation from a Brewfile: Bundle explicitly provides no version lock file.
Intel Mac owners expecting current binary packages and full support: Intel macOS is now Tier 3, and Homebrew has stopped producing new Intel bottles.
Administrators letting multiple accounts independently modify one installation: the support policy classifies that arrangement as unsupported.
Developers expecting a pinned formula to freeze its dependency graph: the FAQ says required dependency upgrades can override that expectation.
Native Windows users seeking a Windows package manager: Homebrew's documented Windows path uses WSL.

Setup reality

Our sandbox installed Homebrew's formula-analytics component at commit 1b0b73c in 22 seconds, adding 41 packages and using 192 MB. Its build passed in 5 seconds. Tests were skipped because this path had no script or target, and pip-audit reported 0 known vulnerabilities. These findings cover the Python analytics component, not the Ruby brew package manager.

Public package use needs network access, an appropriately provisioned installation prefix, and shell configuration. Running the internal analytics query script needs InfluxDB access and HOMEBREW_INFLUXDB_TOKEN, which ordinary users don't need. The analytics project declares Python 3.13 or newer, despite our sandbox base image being named for Python 3.12.

Homebrew's supported paths differ by platform. Source formula work on macOS needs developer tools, and Linux needs a working system compiler and standard development utilities. Intel macOS is Tier 3. Routine operations use the installation owner, while some casks and services still require elevated privileges.

A Brewfile records your tools, not a frozen environment

Run brew bundle with an outdated package already installed and Homebrew can upgrade it. Its Bundle documentation says Brewfiles describe the software you want, while lock files for pinning versions aren't supported. That makes a Brewfile useful for preparing a laptop. It also gives you a clear reason to choose something else when a development environment must reproduce yesterday's exact package versions on a new machine.

Our 17.2 MB checkout covered the Homebrew repository, but the measured project was its Python Library/Homebrew/formula-analytics/ component. The main package manager is written in Ruby. Keep that distinction in mind when judging the numbers below: successful analytics setup does not establish how quickly Homebrew installs tools, how cask upgrades behave, or whether your operating system is supported.

What happened when we ran it

Our Homebrew formula-analytics run installed 41 packages in 22 seconds, used 192 MB on disk, and built successfully in 5 seconds. We cloned commit 1b0b73c on October 7, 2026. The unprivileged Debian container had 3 CPUs and 8 GB RAM, used the ghcr.io/astral-sh/uv:python3.12-bookworm image, and contained no secrets.

Tests were skipped because our measured path had no test script or target. Pip-audit reported 0 known vulnerabilities for that environment. Neither result establishes the correctness or security of everything the brew command can install. The repository scan found 2,831 files, roughly 325,989 source lines, and 24 CI workflow files, with no Dockerfile or dedicated tests directory. These are scan findings, separate from a complete validation of the Ruby package manager.

Formulae and casks cover different software

Homebrew calls its package recipes formulae and its macOS application definitions casks. The project homepage shows both command-line software and applications, while the README points to searchable package metadata. This suits workstations mixing command-line tools and desktop apps. You can record the desired selection in a Brewfile rather than remembering which tools you added while fixing individual projects.

The 192 MB we measured belongs to analytics setup, so don't use it as a workstation storage estimate. Installed software, downloaded archives, and package-specific data add their own costs. For day-to-day use, the README recommends brew update and reading brew doctor before requesting help. I'd follow that advice before changing a troublesome installation. The diagnostics give you concrete configuration warnings to investigate.

Platform support matters more than the installer shortcut

The installation guide specifies /opt/homebrew for Apple Silicon and /home/linuxbrew/.linuxbrew for Linux. Routine formula operations run as the owning account after initial provisioning, though some casks and services need elevated privileges. On Linux, the platform guide also requires a working system compiler and standard development tools. Public package use doesn't need the private analytics database credentials used by repository reporting scripts.

Our 3-CPU Debian sandbox cannot settle support for your Mac or Linux workstation. The support tiers now classify Intel macOS as Tier 3, with reduced support and no new Intel bottles. They also classify multiple accounts independently modifying one installation as unsupported. That's enough for me to steer an Intel Mac owner toward checking MacPorts first, and to reject a casually shared writable Homebrew prefix on a multiuser server.

Pinning doesn't isolate a package from dependency upgrades

The FAQ's version policy says Homebrew doesn't support arbitrary combinations of formula versions. An install or upgrade can therefore update dependencies and apparently unrelated packages. brew pin prevents ordinary upgrades of a chosen package, but a pinned dependency may still need an upgrade when another formula requires it. This is a reasonable policy for current workstation software. It's awkward when your application depends on holding an entire toolchain unchanged.

The 5-second analytics build tells us nothing about recovering a workstation after an unwanted upgrade. Bundle's --no-upgrade setting skips upgrades but doesn't add version locking. Choose Nix when reproducible package environments justify learning its configuration model. MacPorts is another macOS package ecosystem worth comparing, especially on hardware Homebrew no longer prioritizes. For native Windows command-line tools, Scoop is a closer fit than adopting WSL just to get the brew command.

Analytics has an explicit off switch

Homebrew's analytics policy says it displays a notice before enabling anonymous aggregate reporting to InfluxDB. Package events can include package names, selected options, CPU architecture, and operating-system information. Disable reporting with brew analytics off, or set HOMEBREW_NO_ANALYTICS=1 for environments that prohibit it. I'd make that choice during workstation provisioning, then inspect the setting with brew analytics state rather than relying on a remembered installer response.

Our 41-package environment belonged to the reporting component, whose Python project file declares Python 3.13 or newer. Its database query script reads HOMEBREW_INFLUXDB_TOKEN from the environment. Building that component without secrets didn't establish that private queries work. Ordinary users can read the public aggregate reports linked in the README without operating this reporting code. The distinction keeps an internal maintenance utility from becoming an imagined requirement for package installation.

October activity shows the package manager is maintained

The last push was October 13, 2026, and release 7.0.9 shipped on October 8. GitHub listed 49,999 stars and 6 open issues and PRs. Recent activity included package-information and cask-permission work, with a brew info issue closed alongside its fix. These dates and the issue feed support an active-maintenance judgment. A small combined queue doesn't prove that every package in separate formula and cask repositories works.

I'd use Homebrew for current tools on a supported workstation, while treating our 22-second analytics install as a narrow repository finding. Before adopting a shared Brewfile, decide whether you want the named software or exact historical versions. If exact versions are required, choose an environment manager that records them. If current packages are acceptable, inspect your platform tier, assign one installation owner, and review upgrade behavior before making the Brewfile your onboarding instructions.

Alternatives

ProjectWhat it isPick it when
NixA package manager for declarative, reproducible software environments.pick this instead when recording exact package environments matters more than Homebrew's workstation convenience.
MacPortsA separate macOS package ecosystem with its own command-line client.pick this instead when your Mac falls outside Homebrew's preferred platforms, after checking support for your OS and packages.
ScoopA command-line installer for native Windows software.pick this instead when you want Windows tools directly rather than Linux packages inside WSL.

What people are saying

  1. [github-trending] Homebrew/BrewUI

Sources

  1. Homebrew README and repository
  2. Installation and ownership requirements
  3. Linux platform requirements
  4. Support tiers and Intel macOS policy
  5. Brewfile behavior and version-lock limits
  6. Version and dependency upgrade policy
  7. Anonymous analytics and opt-out
  8. Homebrew 7.0.9 release

More dev tools reviews

pi-agent-desktop · skills · compose-samples · librepods · sqlmap · coucou · the whole board →