// the find
msitarzewski/brew-browser
Homebrew is the standard package manager on macOS. brew-browser gives it a real native GUI.
brew-browser is a native GUI for Homebrew, giving you a real dashboard for what you have installed, package search, one-click installs, CVE scanning, and Brewfile snapshots. It ships two separate implementations — a Tauri/Rust/SvelteKit build for macOS 13+ and Linux, and a pure Swift/SwiftUI build for macOS 26 (Tahoe) — that share a data contract and stay in feature parity. The target is any macOS developer who finds `brew list` and `brew info` too low-signal for everyday package management.
The security posture is unusually serious for a one-person desktop utility: zero `unsafe` Rust, no `tauri-plugin-shell` (every brew invocation is built from typed enums, not shell strings), an SSRF filter on the cask icon cascade that re-checks on every redirect hop, and a full audit document with reproducible scan artifacts. The dual-build architecture is a real engineering commitment — maintaining Swift 6 + SwiftUI parity with a Tauri app is hard, and the `memory-bank/decisions.md` ADR trail shows the tradeoffs were actually thought through rather than ad-hoc. The opt-in network model is done right: twelve outbound call sites, all documented, all user-gated, with a single Offline Mode toggle that hard-locks everything — no dark-pattern defaults hiding behind ambiguous language. The `velocity index` on Trending (recent-month vs prior-11-month average) is the right metric for surfacing genuinely emerging packages instead of stably-popular ones that dominate raw install counts.
Maintaining two full implementations is a permanent maintenance tax. The ADR says 'keep both' but the Swift build requires macOS 26 (Tahoe, not yet widely deployed), so the native build currently has a tiny actual audience — you're paying the parity cost now for an audience that mostly doesn't exist yet. The bundled catalog (~6 MiB gzipped) is a sensible offline-first choice, but it means new formula metadata is stale until the user hits Refresh; there's no background staleness indicator beyond the 'stale catalog banner' in Discover, so a user who never visits that tab could be searching against weeks-old data without knowing it. The enrichment endpoint (`brew-browser.zerologic.com`) is a first-party trust boundary baked into the app — if that server goes away or the operator changes their mind, the AI-categorized metadata disappears for everyone, and there's no fallback beyond the bundled snapshot. Linux support is real but second-class: artifacts are unsigned, GitHub sign-in silently fails on headless boxes or minimal window managers, and the documentation buries these caveats several paragraphs deep rather than surfacing them at the top of the Linux install section.