Skip to main content

pkg-upgrade

A beautiful keyboard-only terminal UI that upgrades every macOS package manager you have installed — Homebrew formulas & casks, pip, npm, gem, and macOS system updates — with smart parallel execution, per-manager confirmations, and a detailed dashboard.

Features

  • 🍺 Homebrew formulas + 🍻 casks
  • 🐍 pip3
  • 📦 npm (global)
  • 💎 gem
  • 🍎 softwareupdate
  • Smart parallel execution (brew → cask → pip sequential; npm/gem/system parallel)
  • Per-manager confirmation with preview, or --yes to skip prompts
  • Timestamped log file + native macOS notification on completion
  • --skip / --only / --dry-run / --list

Keybindings

Key Action
j / k or ↑ / ↓ Move up/down
g / G Jump to top/bottom
Enter / → Expand/confirm
y Confirm upgrade
s Skip package
/ Filter/search
q Quit
? Show help

Installation

One-line (recommended)

curl -fsSL https://raw.githubusercontent.com/liskeee/pkg-upgrade/main/install.sh | bash

Pin a specific version:

curl -fsSL https://raw.githubusercontent.com/liskeee/pkg-upgrade/main/install.sh \
    | MAC_UPGRADE_REF=v0.1.0 bash

The installer uses pipx when available and falls back to a self-managed venv at ~/.local/share/pkg-upgrade/. Requires Python 3.12+ and macOS.

Homebrew

brew tap liskeee/pkg-upgrade https://github.com/liskeee/pkg-upgrade
brew install pkg-upgrade

pipx

pipx install git+https://github.com/liskeee/pkg-upgrade

From source

git clone https://github.com/liskeee/pkg-upgrade
cd pkg-upgrade
pipx install .

Windows

iwr -useb https://raw.githubusercontent.com/liskeee/pkg-upgrade/main/install.ps1 | iex

Or via Scoop:

scoop bucket add liskeee https://github.com/liskeee/scoop-bucket
scoop install pkg-upgrade

Uninstall

# installed via pipx (the default path):
pipx uninstall pkg-upgrade

# installed via the venv fallback:
rm -rf ~/.local/share/pkg-upgrade ~/.local/bin/pkg-upgrade

Usage

pkg-upgrade                      # interactive dashboard
pkg-upgrade --yes                # upgrade everything without prompts
pkg-upgrade --only brew,npm      # only specific managers
pkg-upgrade --skip system        # skip macOS system updates
pkg-upgrade --dry-run            # preview only
pkg-upgrade --list               # detect installed managers and exit

Shell Completion

Tab completion is installed automatically by every first-party installer (Homebrew, Scoop, install.sh, install.ps1). If you installed via pipx or pip, set it up manually:

# bash
pkg-upgrade completion bash  | sudo tee /etc/bash_completion.d/pkg-upgrade

# zsh (ensure ~/.zsh/completions is on your fpath)
pkg-upgrade completion zsh   > "$HOME/.zsh/completions/_pkg-upgrade"

# fish
pkg-upgrade completion fish  > ~/.config/fish/completions/pkg-upgrade.fish

# PowerShell (add to $PROFILE)
pkg-upgrade completion powershell | Out-String | Invoke-Expression

Third-party plugin managers appear in Tab completion after the next pkg-upgrade --list call, which refreshes the cached manager list.

License

MIT

Metadata

Release files for pkg-upgrade 1.5.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pkg-upgrade 1.5.2
File Size Uploaded
pkg_upgrade-1.5.2.tar.gz 159.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pkg-upgrade 1.5.2
File Interpreter ABI Platform
pkg_upgrade-1.5.2-py3-none-any.whl Python 3 none any Details

Total release size: 205.3 kB

Release files / pkg_upgrade-1.5.2.tar.gz

Download URL pkg_upgrade-1.5.2.tar.gz
Size 159.2 kB
Tags Source
SHA-256 checksum
How to use checksums
b6ee9090a292de78d8af24e370c203c25cf736b22baf570e34d84966b1f65ef9
BLAKE2b-256 checksum
How to use checksums
e75653f9a2aefa9e92459498e6ff4a520fcb0634d4fe39d6bb07518bb597ecd1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.

Transparency log

Release files / pkg_upgrade-1.5.2-py3-none-any.whl

Download URL pkg_upgrade-1.5.2-py3-none-any.whl
Size 46.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8b3b90570d4f9771b656819cb064ffd56495e3696da144620cc2f5bfbcba07ae
BLAKE2b-256 checksum
How to use checksums
5d36b4b7111e83728caeffe4825ef3b36f972116ef83bfd017e42bc0f0675807
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.5.2 This release

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page