Skip to content
ย 
ย 

Latest commit

ย 

History

1,081 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿง‘โ€๐Ÿ’ป BrewUI

BrewUI user interface

Homebrew's official macOS GUI: making package management approachable for users who prefer graphical interfaces over Terminal, while maintaining complete transparency about underlying Homebrew operations.

๐Ÿ’ก Motivation

Enable CLI-averse users to safely discover, install, update, and manage Homebrew packages through a native SwiftUI interface that never hides what Homebrew is doing.

๐Ÿ“ฒ Tech

  • Swift 6.0 with strict concurrency ยท SwiftUI ยท Swift Package Manager
  • macOS Tahoe 26+
  • Data from the brew CLI and the Homebrew JSON API

๐Ÿ“ฆ Installation

brew install --cask homebrew-app

Homebrew configuration

BrewUI always launches Homebrew through /bin/zsh, including app self-upgrades. It disables optional user and system shell startup files with --no-rcs --no-global-rcs and supplies a clean environment. PATH contains only the directory of the located brew executable followed by /usr/bin:/bin. Your login shell, shell aliases, exported variables and custom PATH do not configure Homebrew in BrewUI.

Put your Homebrew configuration variables in brew.env files. Homebrew reads these itself:

Scope File
User ~/.homebrew/brew.env
Installation <Homebrew prefix>/etc/homebrew/brew.env
System /etc/homebrew/brew.env

For example, add this line to ~/.homebrew/brew.env:

HOMEBREW_NO_ENV_HINTS=1

Use literal NAME=value lines without export, shell expansion or command substitution. User settings normally override installation settings, which override system settings. HOMEBREW_SYSTEM_ENV_TAKES_PRIORITY=1 in the system file makes that file take precedence. See Homebrew's environment documentation. An XDG_CONFIG_HOME exported by your shell is also ignored; use the user file above.

Relaunch BrewUI after changing configuration, then check the Configuration tab. Its report and Doctor describe Homebrew's environment in the app and may differ from Terminal. BrewUI still sets output controls for its console and self-upgrade log.

System zsh always reads /etc/zshenv, if present; its execution cannot be disabled. BrewUI clears the environment again afterwards and discards startup output so banners do not reach Homebrew's reports or the console. If startup fails before Homebrew runs, its diagnostics are retained. See zsh's startup-file documentation.

๐Ÿ› ๏ธ Development

After cloning:

./scripts/bootstrap

This installs Mint from Brewfile, runs mint bootstrap to build the SwiftFormat and SwiftLint versions pinned in Mintfile, enables repository git hooks, and resolves Swift package dependencies for Homebrew.xcodeproj.

After bootstrap, commits automatically run checks on staged Swift files:

  1. mint run swiftformat
  2. mint run swiftlint (with --fix, then strict validation)

If unresolved lint violations remain, the commit is blocked and the hook prints specific SwiftLint failures so you can fix and re-commit.

๐Ÿšง Status

Stable and under active development.

๐Ÿ“„ Licence

AGPL-3.0. If you reuse or adapt the source the AGPL terms apply, including the network-use clause.

About

๐Ÿ“บ Homebrew's official macOS GUI

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages