A macOS system updater CLI. Keeps tools installed via Homebrew, npm, pip, .NET, and others up to date.
npm install -g braeburnbraeburn # run all enabled steps interactively
braeburn -y # run all steps, auto-accept everything
braeburn homebrew npm # run specific steps only
braeburn config add --name "Oh My Zsh" --command "omz update"| Command | Description |
|---|---|
braeburn [steps...] [-y] |
Run update steps (default) |
braeburn log [step] |
View the latest output log for a step |
braeburn config |
Show config subcommand help |
braeburn config list |
Print current configuration |
braeburn config update |
Open interactive configuration editor |
braeburn config update --no-<step> |
Disable a step |
braeburn config update --<step> |
Re-enable a step |
braeburn config add --name <name> --command <command> |
Add a custom update command |
braeburn config remove <id> |
Remove a custom update command |
Steps are grouped by system capability. For new setups, braeburn uses a conservative default profile: only package-manager-driven CLI/tooling updates are enabled by default.
| Step | Category | Default (new setup) | Requires |
|---|---|---|---|
pyenv |
Runtimes | off | pyenv or Homebrew |
nvm |
Runtimes | off | ~/.nvm |
rustup |
Runtimes | off | rustup |
homebrew |
Apps & Packages | on | brew (required) |
mas |
Apps & Packages | off | mas |
macos |
Apps & Packages | off | — |
npm |
CLI Tools | on | npm |
braeburn |
CLI Tools | on | npm |
pip |
CLI Tools | on | pip3 |
uv |
CLI Tools | off | uv |
gh |
CLI Tools | off | gh |
dotnet |
CLI Tools | on | dotnet |
aspire |
Aspire | off | aspire |
ohmyzsh |
Shell | off | ~/.oh-my-zsh |
cleanup (homebrew cleanup) |
Maintenance | off | brew |
Add a named shell command to the default update run:
braeburn config add --name "Oh My Zsh" --command "omz update"Braeburn stores it in the config as a [[custom]] block:
[[custom]]
id = "oh-my-zsh"
name = "Oh My Zsh"
command = "omz update"User-managed commands run after enabled built-in steps when running braeburn or braeburn -y. They are not included when explicitly selecting built-in steps such as braeburn homebrew -y. Commands run through your shell, show a user-managed warning before interactive execution, and receive the normal confirmation prompt unless -y is supplied.
List configured commands with braeburn config list, remove one with braeburn config remove oh-my-zsh, and view its latest log with braeburn log custom-oh-my-zsh.
- macOS
- Node.js ≥ 24
- Homebrew (required)