What Homebrew actually is
Homebrew is a package manager — a tool whose entire job is to fetch software, put it in a predictable place, and keep track of what depends on what so it can update or remove things cleanly later. On Linux that role is usually filled by apt, dnf, or pacman. Apple never shipped an equivalent for macOS, so the community built one. The project started in 2009 and has grown into the default way developers install command-line software on a Mac.
The name is a running joke: formulae, casks, taps, bottles, kegs and a cellar. Underneath the brewing metaphor is a fairly simple idea — every installable thing is described by a small Ruby file called a formula, and Homebrew reads that file to know where to download the software, how to build it, and what else it needs.
Where Homebrew puts things, and why that matters
Most package managers install into system directories that require administrator rights. Homebrew deliberately does not. On Apple Silicon Macs it installs everything under /opt/homebrew, and on older Intel Macs under /usr/local. Each package lives in its own isolated folder (a keg) inside the Cellar, and Homebrew creates symlinks from a shared bin directory back to those folders.
This design has two practical consequences. First, you almost never need sudo to install a package, which means a single bad formula cannot quietly modify the rest of your system. Second, because every version is isolated, removing or rolling back a package is clean — Homebrew just unlinks the folder rather than hunting scattered files across your disk.
Formulae vs. casks: the one distinction worth knowing
Homebrew installs two broad kinds of software, and the difference trips up almost every newcomer.
| Type | What it installs | Examples |
|---|---|---|
| Formula | Command-line tools and libraries, compiled from source or installed from a pre-built "bottle" | git, wget, node, ffmpeg, python |
| Cask | Full graphical macOS applications, drag-to-Applications style, distributed as .app bundles or installers |
visual-studio-code, firefox, raycast, warp |
The rule of thumb: if you would normally run it in a terminal, it is probably a formula. If it has a window and a dock icon, it is probably a cask. In a Brewfile these are written as brew "git" and cask "warp" respectively — which is exactly why the docks you see on this site can mix tiny CLI utilities and big desktop apps in one file.
Installing Homebrew
Installation is a single command pasted into your terminal, taken from the official site:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
On Apple Silicon you may then be prompted to add Homebrew to your shell's PATH. The installer prints the exact two lines to run; following them ensures your shell can find the brew command in new terminal sessions.
The commands you will actually use
You can be productive with Homebrew using a surprisingly small set of commands.
| Command | What it does |
|---|---|
brew install <name> |
Install a formula (add --cask for an app) |
brew uninstall <name> |
Remove a package and unlink it |
brew search <term> |
Find formulae and casks matching a term |
brew info <name> |
Show version, dependencies and caveats for a package |
brew update |
Refresh Homebrew itself and the catalog of available packages |
brew upgrade |
Upgrade everything you have installed to the latest versions |
brew list |
List everything currently installed |
brew cleanup |
Delete old versions and free up disk space |
brew doctor |
Diagnose common problems with your setup |
A healthy weekly habit is simply brew update && brew upgrade && brew cleanup, which refreshes the catalog, brings your tools up to date, and reclaims disk space in one pass.
Taps: extending the catalog
By default Homebrew installs from its core repository, but anyone can publish their own collection of formulae in a tap — essentially a Git repository of recipes. You add one with brew tap owner/repo, after which its packages become installable like any other. Taps are how niche, company-internal, or pre-release tools get distributed without waiting to be accepted into Homebrew core. In a Brewfile they appear as tap "owner/repo" lines at the top.
How this connects to Brewfiles
Everything above describes installing software one package at a time. The natural next question is: what happens when you get a new laptop, or when a teammate needs the same toolset you have? Reinstalling forty packages by hand is tedious and error-prone. That is the exact problem a Brewfile solves — a single text file that lists every formula, cask, and tap you use, so the whole set can be reinstalled with one command. The Brewfiles shared on this site are real, working examples of that file.
Create your own Brewfile →
Generate a Brewfile from your current machine in one command and keep it version-controlled.
Essential packages →
A curated tour of the CLI tools and apps that show up on the best developer setups.