A fast package manager for macOS and Linux. Less waiting. More building.
Then restart your terminal or run the export command it prints.
tree install / cold package downloads
nanobrew 0.507s / brew 2.629s
nanobrew 0.536s / brew 1.049s
Nanobrew 0.1.212 vs Homebrew 7.0.2. Median of three runs, matching package versions. Intel on macOS 15; Apple Silicon on macOS 26. Results vary by package and machine. See the benchmark runs ↗
Earlier benchmarks / different workloads
39ms warm install · with full security checks230x faster than Homebrew · 0.1ms for no-ops
Apple Silicon, macOS 15, same network. Cold = fresh download. Warm = cached in store.
Recent fixes across install state, self-update, release automation, and the open-issue batch are now reflected in the current patch line.
What each nanobrew release actually shipped. Tree install numbers are warm, Apple Silicon, median of 3 runs.
nb remove --deb, native xz, postinst io, patchelf race, locale relocation) · process-wide threadsafe Io accessor · nb cleanup --prune-kegs · HTTP User-Agent override · honest known-issue disclosure · full notesCopy-on-write materialization via macOS syscall. Zero disk overhead per install.
Downloads, extraction, relocation, and dependency resolution all run concurrently.
Zig std.http.Client replaces curl subprocess spawns. One fewer process per bottle.
Reads load commands from binary headers directly. No otool. Batched codesign.
SHA256-keyed dedup means reinstalls skip download and extraction entirely.
No Ruby runtime. No interpreter startup. No config sprawl. Just one ~2MB binary.