A lightweight macOS menu bar app that monitors Homebrew package updates.
- π Live update count in menu bar
- π¨ Visual indicators (β up-to-date, β updates available, ! many updates)
- π¦ Click individual packages to upgrade them
- β‘ Upgrade all packages at once
- π Shows version changes (current β new)
- β° Auto-refresh every hour
- π Last checked timestamp
- π Manual refresh option
- macOS 13.0 or later
- Apple Silicon (M1/M2/M3/M4) or Intel Mac
- Homebrew installed at
/opt/homebrew/bin/brew(Apple Silicon) or/usr/local/bin/brew(Intel)
- Xcode Command Line Tools installed (
xcode-select --install)
-
Clone or download this repository
-
Navigate to the project directory:
cd BrewWidget -
Compile the app:
swiftc -parse-as-library -o BrewMenuBar BrewMenuBar.swift
-
Create the app bundle:
mkdir -p /Applications/BrewMenuBar.app/Contents/{MacOS,Resources} cp BrewMenuBar /Applications/BrewMenuBar.app/Contents/MacOS/ chmod +x /Applications/BrewMenuBar.app/Contents/MacOS/BrewMenuBar -
Create Info.plist:
cat > /Applications/BrewMenuBar.app/Contents/Info.plist << 'EOF' <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleExecutable</key> <string>BrewMenuBar</string> <key>CFBundleIdentifier</key> <string>com.brewmenubar.app</string> <key>CFBundleName</key> <string>BrewMenuBar</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> <string>1.0</string> <key>LSUIElement</key> <true/> </dict> </plist> EOF
-
Launch the app:
open /Applications/BrewMenuBar.app
To create a universal binary that works on both architectures:
# Build for both architectures
swiftc -parse-as-library -target arm64-apple-macos13.0 -o BrewMenuBar-arm64 BrewMenuBar.swift
swiftc -parse-as-library -target x86_64-apple-macos13.0 -o BrewMenuBar-x86_64 BrewMenuBar.swift
# Create universal binary
lipo -create BrewMenuBar-arm64 BrewMenuBar-x86_64 -output BrewMenuBar
# Copy to app bundle
cp BrewMenuBar /Applications/BrewMenuBar.app/Contents/MacOS/- Download
BrewMenuBar.app.zip - Unzip the file
- Move
BrewMenuBar.appto yourApplicationsfolder - Right-click the app and select "Open" (first time only, to bypass Gatekeeper)
- The app icon will appear in your menu bar
Follow the "Building from Source" instructions above.
- Open System Settings
- Go to General β Login Items
- Click the + button under "Open at Login"
- Navigate to
Applicationsfolder - Select
BrewMenuBar.app - Click Add
-
Create a LaunchAgent plist file:
cat > ~/Library/LaunchAgents/com.brewmenubar.app.plist << 'EOF' <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.brewmenubar.app</string> <key>ProgramArguments</key> <array> <string>/Applications/BrewMenuBar.app/Contents/MacOS/BrewMenuBar</string> </array> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <false/> </dict> </plist> EOF
-
Load the LaunchAgent:
launchctl load ~/Library/LaunchAgents/com.brewmenubar.app.plist
- β (Checkmark) - All packages up to date
- β (Arrow) - 1-5 packages need updates
- ! (Exclamation) - 6+ packages need updates
- β» ... (Spinner) - Currently checking for updates
- Package list - Click any package to upgrade just that one
- Refresh (βR) - Manually check for updates
- Upgrade All (βU) - Upgrade all outdated packages
- Quit (βQ) - Close the app
The app automatically checks for updates every hour. You can also manually refresh at any time.
- Right-click the app and select "Open" to bypass Gatekeeper
- Or run:
xattr -cr /Applications/BrewMenuBar.app
- Make sure the app is running:
ps aux | grep BrewMenuBar - Try quitting and reopening the app
- Verify Homebrew is installed:
which brew - If installed in a non-standard location, you'll need to modify the source code
The app includes single-instance protection, but if you see multiple icons:
killall BrewMenuBar
open /Applications/BrewMenuBar.app- Quit the app (click icon β Quit)
- Remove from Login Items (System Settings β General β Login Items)
- Delete the app:
rm -rf /Applications/BrewMenuBar.app - (Optional) Remove LaunchAgent:
rm ~/Library/LaunchAgents/com.brewmenubar.app.plist
This project is provided as-is for personal use.
Built with SwiftUI and AppKit for macOS.

