bru
A fast, Homebrew-compatible package manager
Faster than Homebrew with modern UX. Works with Homebrew's formulae and bottles.
# Install packages with command aliases
# Same commands, same formulae, just faster
Why bru?
| Feature | Homebrew | bru |
|---|---|---|
upgrade --dry-run (339 packages) |
3.56s | 0.65s (5.5x faster) |
| Startup time | ~100ms | 14ms (7x faster) |
| Parallel operations | Limited | Fully parallelized |
| Memory usage | Higher | Lower |
| Compatibility | ✅ | ✅ Bottle-based |
| Installation | Built-in macOS | Install once |
Bottom line: Same formulae, same ecosystem, faster performance.
Status: Beta (v0.1.4)
- ✅ Core Commands: Fully functional (install, upgrade, uninstall, etc.)
- ✅ Bottle-Based: Works with pre-built bottles (most common formulae)
- ✅ Well-Tested: 27 automated tests, integration tests in CI
- ✅ Mostly Implemented: Usable for common workflows
- ⏳ Source Builds: Not yet supported (less common formulae)
Installation
Via Homebrew (Easiest)
Via Cargo
From Source
Quick Start
# Use command aliases for speed
# Or use full commands (same as brew)
# Everything else works the same
What's Different?
Performance
Fully parallelized - All API operations happen concurrently:
- In-memory caching eliminates redundant API calls
- Dependency resolution uses breadth-first parallelization
- All fetches, validations, and checks run in parallel
Result: Faster than Homebrew across common operations (see benchmarks below).
Modern UX
Tree connectors show clear operation hierarchy:
Installing sccache...
├ ✓ Linked 1 files
└ ✓ Installed sccache 0.12.0
Command aliases for faster workflow:
bru i→ installbru up→ upgradebru re→ reinstallbru rm/bru remove→ uninstall
Clear messaging - No more confusing "Already installed" when nothing happened:
ℹ Already installed:
python@3.14 3.14.0
openssl@3 3.6.0
Use --force to reinstall
Optimizations
Every sequential operation has been parallelized:
- ✅ Upgrade checks
- ✅ Fetch metadata
- ✅ Install validation
- ✅ Dependency resolution
- ✅ Cask operations
- ✅ Downloads (with progress bars)
- ✅ In-memory caching (LRU, 1000 formulae + 500 casks)
What Works ✅
Core Package Management
install,uninstall,upgrade,reinstall- All bottle-based formulaeinstall --cask,upgrade --cask- macOS applications (DMG, ZIP, PKG)fetch,list,outdated,leaves,autoremove,cleanuppin,unpin- Version locking- Full dependency resolution and conflict detection
Discovery & Information
search,info,desc,deps,useslist,missing,formulae,casks,unbottledwhich-formula,cat,log
Repository Management
tap,untap,tap-info,update- Works with all Homebrew taps
System & Utilities
config,doctor,env,shellenvservices- launchd integrationbundle- Brewfile support- Shell completions (bash, zsh, fish)
What Doesn't Work ❌
Source Builds
- Formulae without bottles
--build-from-sourceflag--HEADinstallations- Custom build options
Workaround: Use brew for these cases.
Development Tools
create,audit,livecheck,test- Usebrewinstead
For most daily package management, bru works well.
Performance Benchmarks
Latest (v0.1.4) - M3 Max, macOS 15.1, 339 packages:
| Operation | brew | bru | Speedup |
|---|---|---|---|
upgrade --dry-run |
3.56s | 0.65s | 5.5x |
search rust |
1.03s | 0.05s | 20x |
info wget |
1.15s | 0.10s | 12x |
deps ffmpeg |
1.26s | 0.15s | 8x |
| Startup | ~100ms | 14ms | 7x |
Why so fast?
- Compiled binary (no interpreter startup)
- Parallel API calls (not sequential)
- In-memory caching (no redundant requests)
- Efficient data structures
See v0.1.4 release notes for optimization details.
Compatibility
Compatible with Homebrew for bottle-based workflows:
- ✅ Same formulae (Homebrew API)
- ✅ Same Cellar (
/opt/homebrew/Cellar) - ✅ Same taps (all third-party taps work)
- ✅ Same bottles (GHCR)
- ✅ Can use
brewandbruinterchangeably - ✅ No migration needed
You can mix and match:
For packages with pre-built bottles (most common packages), they work interchangeably.
Shell Completions
# Bash
# Zsh (add to ~/.zshrc)
# Fish
Documentation
User Docs:
- Installation Guide - Coming soon
- Migration from Homebrew - Coming soon
- Troubleshooting - Coming soon
Project Status:
- ai/STATUS.md - Current project state
- Release Notes - Version history
- AGENTS.md - For AI agents working on this project
Technical:
- Architecture - System design
- Performance Analysis - Optimization details
- Testing Strategy - How we test
Contributing
bru is in active development. Contributions welcome!
Found a bug? Open an issue
Want to help? Check ai/TODO.md for active work.
Testing
# Run all tests
# Integration tests (run in CI)
# Build release binary
FAQ
Is bru stable?
It's in beta. Tested with 339 packages, has 27 automated tests, and runs integration tests in CI on every commit. Works well for bottle-based workflows.
Will it break my Homebrew setup?
No. bru uses the same Cellar and infrastructure as Homebrew. You can use both interchangeably.
Why not just improve Homebrew?
Different tradeoffs. Homebrew prioritizes comprehensive features. bru prioritizes speed and simplicity. Both are valid approaches.
What's the catch?
Source builds aren't supported yet. For those less common cases, use brew.
Can I uninstall it?
Yes. Since bru is just a faster frontend to Homebrew's infrastructure:
# All your packages remain intact
License
MIT OR Apache-2.0
Made by nijaru