single command that updates every package manager and dev tool on your system.
what it does · install · usage · what's inside
sup detects every package manager and developer tool on your machine and updates them all. one command. no config files. no dependencies beyond bash 4.
built this because running brew update && brew upgrade && rustup update && npm update -g && pipx upgrade-all && ... every morning was getting old. 49 tools. one word.
curl -fsSL https://raw.githubusercontent.com/zaydiscold/sup/main/install.sh | bashor
brew install zaydiscold/tap/sup # homebrewor
npm install -g @zaydiscold/sup # npmor
curl -fsSL -o sup.sh https://github.com/zaydiscold/sup/releases/latest/download/sup.sh
chmod +x sup.sh
mv sup.sh ~/.local/bin/sup # direct downloador
git clone https://github.com/zaydiscold/supnote: requires bash 4+. macos ships 3.2 by default. run brew install bash first if you're on a mac.
sup # detect + confirm + update everything
sup --list # show all 49 supported tools
sup --dry-run # show what would run, change nothing
sup --interactive # tui picker (gum > fzf > builtin)
sup --only claude --only uv # just these two
sup --skip homebrew # everything except homebrew
sup --yes # skip confirmation (scripts/ci)
sup --self-update # update sup itself (checksum verified)
sup --verbose # show commands as they run
sup config # preferences menu (type 1-7, enter)
--skip and --only are repeatable. --skip wins if both target the same tool. --dry-run overrides --yes.
--interactive opens a selector where you pick which tools to update. uses gum choose --no-limit if installed, falls back to fzf --multi, then to a pure bash arrow-key selector with space-to-toggle.
sup config is a numbered menu. lets you toggle cleanup, homebrew greedy casks, auto-retry, and a skip list. preferences save to ~/.config/sup/preferences.
single file. ~1700 lines. no external dependencies. works on macos and linux.
49 tools across 8 tiers:
system //
- homebrew, homebrew casks, apt, snap, flatpak, mac app store, macos system updates
languages //
- rustup, uv, pipx, conda, mamba, pyenv, asdf, mise
node //
- npm globals, pnpm, bun, deno
ai tools //
- claude code, gemini cli, ollama, goose, amazon q, aider, open interpreter, huggingface cli, github copilot, codex cli
dev clis //
- github extensions, vercel, firebase, supabase, railway, fly.io, wrangler, gcloud, terraform
editors //
- vs code extensions, vs code insiders, vscodium
shell //
- oh-my-zsh, oh-my-bash, fisher, tmux plugins
other //
- rubygems, composer, cargo crates, go binaries
each tool gets auto-detected, run with a timeout, auto-retried on transient failures, and classified on error. failures don't block other tools. the summary tells you what to fix manually.
self-update downloads from github releases and verifies sha-256 checksums before replacing the binary. if sup was installed via homebrew it redirects you to brew upgrade sup.
exit codes
| code | meaning |
|---|---|
| 0 | everything updated successfully, or nothing needed updating |
| 1 | one or more tools failed to update. check the summary for details |
| 3 | bash version too old. requires 4.0+, macos ships 3.2 by default |
| 130 | interrupted by ctrl+c. cleanup runs automatically |
mit. license
zayd / cold
zayd.wtf · twitter · github
icarus only fell because he flew
to do
☑ 49 tools across 8 tiers
☑ --interactive tui (gum / fzf / builtin)
☐ --json output for scripting
☐ ollama model updates
☐ docker image updates