@charles_lindecker/gup
v0.5.3
Published
gup (Global Updater) — one CLI to scan and update everything installed on your machine across 153 sources: winget, scoop, chocolatey, MSYS2, Cygwin, Homebrew (formulae + casks), MacPorts, Mac App Store, Nix, pkgx, npm-g, pnpm-g, yarn-g, bun, pip, pipx, uv
Maintainers
Readme
gup — Global Updater
One command to scan and update everything installed on your machine.
Homepage · Documentation · Providers (153) · npm
winget · scoop · choco · MSYS2 · brew · casks · Mac App Store · MacPorts · Sparkle · Nix · apt · dnf · npm · pnpm · yarn · bun · pip · pipx · uv · cargo · gem · composer · dotnet SDK & tools · vcpkg · helm · kubectl · terraform · VS Code · JetBrains · Visual Studio · WSL distros — 153 providers
On a dev machine, binaries come from dozens of sources and no native tool covers them all:
winget upgrade --all silently skips pinned packages, brew upgrade never sees your npm globals
or your VS Code extensions, ncu -g only sees npm, and every cloud CLI ships its own
self-update. gup unifies the whole thing behind one CLI and one interactive app.
Why, and what's deliberately out of scope →
Highlights
- 153 providers, scanned in parallel — OS package managers, language toolchains, cloud and Kubernetes CLIs, editor extensions — each greyed out on the systems it does not exist on.
- Pick exactly what to update: check packages, press Enter — only what is checked is updated.
- Updates run inside the app, each install live in an embedded terminal — progress bars,
prompts you can answer — with one UAC or
sudoprompt for all the admin packages. - Scheduled updates, per package — never a whole provider — run by a short-lived gup the OS starts; nothing stays resident.
- An activity journal in the terminal, and a self-contained HTML report in your browser.
- 27 themes, contrast guaranteed (Nord, Gruvbox, Solarized, Dracula, Catppuccin…): every text reaches WCAG AA, your custom colours included.
- Scriptable:
--json, documented exit codes,-yfor CI, a debug log you can export. - English or French: the app, every command and its help, the HTML report —
gup language frswitches.
Every screen, generated from the real app: the gallery →
Install
npm install -g @charles_lindecker/gup --allow-scripts=node-ptyThe interface is in English. To have it in French, chain the language to the install:
npm install -g @charles_lindecker/gup --allow-scripts=node-pty && gup language frWindows PowerShell 5.1 has no &&: run the two commands one after the other. gup language
switches at any time. Details →
Node ≥ 26.9 · Windows, macOS, Linux, WSL. Other install methods →
Why
--allow-scripts=node-pty? gup's one optional native dependency, node-pty, runs installers inside the app's terminal pane. It has install scripts, which npm 11 asks you to review: the flag approves that one package (without it npm warns, and refuses understrict-allow-scripts). Without node-pty, gup works the same — updates started from the app just run in your terminal. Details →
Use
gup # the interactive app
gup list --fast # what's outdated, fast scan
gup update --all # update everything| Command | Effect |
|---|---|
| gup | Interactive app: scan, pick, update, schedule, journal, providers, options |
| gup list | Lists outdated packages as a table (--fast, --provider, --json) |
| gup update | Pick packages, then update them |
| gup update --all | Everything, after confirmation (-y to skip it) |
| gup update winget:Spotify.Spotify npm-g:typescript | Specific targets, no scan |
| gup doctor | Detected, missing and incompatible providers, and gup's own state |
| gup schedule add winget:Git.Git --every weekly --on mon | Update chosen packages automatically |
| gup report | The activity report, in your browser (--format text\|json\|csv) |
| gup log | The debug log; gup log export for a bug report |
| gup language fr | The interface in French; gup language en brings English back |
Every flag, the retry strategies, the stuck-install timeout, environment variables, exit codes and the JSON schema: CLI reference →
Scripting
The commands never prompt with -y, write JSON with --json and say how it went in their
exit code. Warnings go to stderr, so a pipe stays clean.
Documentation
| Document | What's in it |
|---|---|
| Installation | Install methods, choosing the language, npm 11 and install scripts, requirements, per-platform support |
| Interactive app | Every view and key: scanning, picking, updating in the app, the run view |
| CLI reference | Every command, flag, environment variable, exit code |
| Scheduled updates | Schedules, recurrences, the OS trigger, what an unattended run never does |
| Journal and reports | The activity history, the Journal view, the HTML report, the debug log |
| Configuration · Themes and accessibility | Settings, the interface language, the settings file, themes, the contrast guarantee |
| Troubleshooting | Messages, causes, fixes; where gup keeps its files; collecting a diagnostic |
| Scope · Providers catalog | What gup covers, and the 153 providers |
| Architecture · How gup works | Layers, pipelines, process seams, local state — with diagrams |
| Changelog · Release notes | Every change since the first commit; what each version shipped |
| All documentation → | The full index, contributors' pages included |
Community
| Document | What's in it | |---|---| | Contributing | Ways to contribute, adding a provider, branches and commits, the pull request flow | | Code of conduct | The Contributor Covenant 2.1, and where to report a breach privately | | Support | Where to ask, what to include, what to expect | | Security | Supported versions, private vulnerability reporting, threat model | | Governance | Who decides, roles, dependency and release policies |
Credits
Built and maintained by Charles Lindecker, under the MIT license.
If gup saves you time: ☕ Ko-fi ·
GitHub Sponsors ·
or a star.
