A beautiful macOS menu bar app for Homebrew
Brewdeck brings the power of Homebrew to your macOS menu bar.
Browse, install, manage, and update your formulae and casks — all without touching a terminal.
| Feature | Description | |
|---|---|---|
| 📦 | Package Inventory | Browse all your installed formulae and casks with search, filter, and sort |
| 🔄 | Smart Upgrades | Upgrade single packages, batch-select multiple, or use the smart upgrade planner that groups updates by criticality |
| 🔔 | Update Channels | Updates classified as critical, security, or normal — see at a glance what needs attention |
| 🔍 | Catalog Browser | Search the full Homebrew catalog with local cache fallback for offline use |
| ⚡ | Tray Popover | Quick glance at pending updates, check intervals, and one-click check from the menu bar |
| 📋 | Action Templates | Save and replay common multi-package operations — install your dev toolkit with one click |
| 📜 | Job History | Track every install, upgrade, and uninstall with timestamps, stats, and recovery |
| 🛠️ | Services Manager | Start, stop, and restart Homebrew services from a clean UI |
| 🔧 | Taps Manager | Add, remove, and browse taps without terminal commands |
| 🩺 | Doctor & Cleanup | Run brew doctor and brew cleanup with previews and confirmation |
| ⌨️ | Command Palette | Quick actions and navigation with keyboard shortcuts |
| 📦 | Batch Operations | Multi-select packages for batch install, upgrade, uninstall, and pin |
Coming soon — screenshots of the tray popover, installed packages view, catalog browser, and more.
Grab the latest DMG or ZIP from the Releases page.
Note: Builds are unsigned. macOS Gatekeeper may block first launch.
Workaround: Right-click → Open from Finder, or allow in System Settings → Privacy & Security.
git clone https://github.com/itzptk/brewdeck.git
cd brewdeck
npm install
npm run dev # Development mode with hot reload
npm run build # Production build
npm run package:mac # Package as .dmg / .zip| Layer | Technology |
|---|---|
| Desktop Shell | Electron 42 |
| UI Framework | Angular 21.1 (standalone, control flow) |
| State Management | @ngrx/signals signal stores |
| Styling | Tailwind CSS 4 + CVA + tailwind-merge |
| Component Library | Custom shadcn/ui-style library (50+ components) |
| Icons | Lucide |
| Carousel | Embla |
| IPC | Typed, validated contracts with Zod |
| Packaging | electron-builder + electron-updater |
| CI/CD | GitHub Actions — automated beta/stable releases |
npm install
npm run devThis concurrently starts:
- Angular dev server on
http://127.0.0.1:4200 - Electron TypeScript watcher (tsup)
- Electron app window pointing at the dev server
| Command | Description |
|---|---|
npm run dev |
Start dev server + Electron with hot reload |
npm run build |
Production build (Angular + Electron) |
npm test |
Run Angular unit tests |
npm run test:node |
Run Node/Electron unit tests (vitest) |
npm run test:all |
Run all tests |
npm run package:mac |
Package signed/unsigned macOS app |
Brewdeck uses an automated CI release pipeline. See CONTRIBUTING.md for full details.
| Trigger | Release Type |
|---|---|
Schedule (every 6h) or workflow_dispatch beta |
Pre-release vX.Y.Z-beta.N |
Push tag vX.Y.Z or workflow_dispatch stable |
Latest release (unsigned) |
workflow_dispatch build-only |
CI build without GitHub Release |
In-app auto-updates are enabled by default on packaged builds (ENABLE_AUTO_UPDATES=1).
The app checks GitHub Releases for new tags and notifies you when an update is ready.
Contributions are welcome! Check out CONTRIBUTING.md for:
- Local development setup
- Coding conventions
- PR guidelines
- Release process
Brewdeck uses a fully typed, Zod-validated IPC boundary between the renderer and main process.
All channels and contracts are documented in:
src/shared/contracts.ts— request/response typeselectron/ipc-channels.ts— channel name constants
MIT © itzptk