CLI tool to list all installed programs and their package manager
Project description
pkgview
A CLI tool that lists all programs installed on your system and shows whether each one is managed by a package manager (brew, npm, pip, cargo, apt, snap, flatpak) or was installed manually — and therefore needs to be maintained by you.
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━┓
┃ Name ┃ Manager ┃ Version ┃ Type ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━┩
│ git │ 🍺 brew │ 2.54.0 │ cli │
│ k9s │ 🍺 brew │ 0.50.18 │ cli │
│ firebase-tools │ 📦 npm │ 15.8.0 │ cli │
│ black │ 🐍 pip │ 24.3.0 │ cli │
│ docker │ ⚠ manual │ – │ cli │
│ code │ ⚠ manual │ – │ cli │
└───────────────────────────────┴────────────────┴────────────┴───────┘
Total: 75 programs │ 57 managed │ 18 manual
Features
- Detects programs from: brew, brew-cask, npm (global), pip, pipx, cargo, apt, snap, flatpak, conda / mamba, pacman, dnf / yum, apk, nix, gem, composer, winget, scoop, chocolatey, nvm, asdf, pyenv
- Scans
/Applicationsand~/Applicationson macOS for GUI apps - Marks everything not tracked by a package manager as
manual - Correctly ignores macOS/Linux system binaries (
/bin,/usr/bin, etc.) - Correctly ignores Homebrew sub-binaries (e.g.
dartfrom thefluttercask) - All detectors run in parallel — fast even with many package managers installed
- Outputs a color-coded table or raw JSON (
--json) - Check for available updates with
--outdated - Export snapshots to JSON or CSV with
--export
Requirements
- Python 3.9+ (already present on macOS and most Linux distros)
- No other runtime required
Installation
Recommended – install with pipx (no venv needed)
pipx installs CLI tools in an isolated environment automatically.
# Install pipx once (macOS)
brew install pipx
pipx ensurepath
# Install pkgview directly from GitHub
pipx install git+https://github.com/yourname/pkgview.git
The pkgview command is immediately available system-wide.
Update to the latest version:
pipx upgrade pkgview
Alternative – with pip (once published on PyPI)
pip install pkgview
# or
uv tool install pkgview
For development setup, project structure, and contribution guidelines, see DEVELOPMENT.md.
Usage
pkgview [OPTIONS]
| Flag | Short | Default | Description |
|---|---|---|---|
--filter TEXT |
-f |
– | Show only programs from one manager. Values: brew, brew-cask, npm, pip, pipx, cargo, apt, snap, flatpak, conda, mamba, pacman, yay, dnf, yum, zypper, apk, nix, gem, composer, winget, scoop, chocolatey, nvm, asdf, pyenv, manual |
--sort TEXT |
-s |
manager |
Sort column: name, manager, version |
--json |
-j |
off | Output raw JSON instead of a table |
--paths |
-p |
off | Add a Path column to the table |
--outdated |
-o |
off | Check for available updates; highlight outdated packages in red |
--export PATH |
-e |
– | Save snapshot to file (.csv → CSV, everything else → JSON) |
--no-apps |
– | off | Exclude GUI apps (/Applications) |
--no-manual |
– | off | Hide manually installed programs |
--version |
-V |
– | Show version and exit |
--help |
– | – | Show help and exit |
Examples
# List everything, sorted by manager (default)
pkgview
# Show only manually installed programs (needs attention)
pkgview --filter manual
# Show only Homebrew formulas, sorted by name
pkgview --filter brew --sort name
# Show with full paths
pkgview --paths
# Export as JSON (e.g. for backups or scripting)
pkgview --json > programs.json
# Hide noise: no system apps, no manual tools
pkgview --no-apps --no-manual
Supported Package Managers
| Icon | Manager | Platform | Detection method |
|---|---|---|---|
| 🍺 | brew |
macOS, Linux | brew list --versions |
| 🍺 | brew-cask |
macOS | brew list --cask |
| 📦 | npm |
macOS, Linux | npm list -g --depth=0 --json |
| 🐍 | pip |
macOS, Linux | pip list --format=json |
| 🐍 | pipx |
macOS, Linux | pipx list --json |
| 🦀 | cargo |
macOS, Linux | cargo install --list |
| 🐧 | apt |
Linux (Debian/Ubuntu) | apt-mark showmanual |
| 🐧 | snap |
Linux | snap list |
| 🐧 | flatpak |
Linux | flatpak list --app |
| 🐍 | conda / mamba |
macOS, Linux | conda list --json / mamba list --json |
| 🐧 | pacman |
Linux (Arch) | pacman -Qe |
| 🐧 | dnf / yum |
Linux (Fedora/RHEL) | dnf repoquery --userinstalled |
| 🐧 | apk |
Linux (Alpine) | apk list --installed |
| ❄ | nix |
macOS, Linux | nix-env -q |
| 💎 | gem |
macOS, Linux | gem list --no-verbose |
| 🎵 | composer |
macOS, Linux | composer global show --format=json |
| 🪟 | winget |
Windows | winget list --source winget |
| 🪟 | scoop |
Windows | scoop list |
| 🍫 | chocolatey |
Windows | choco list --local-only |
| 🟩 | nvm |
macOS, Linux | scans ~/.nvm/versions/node/ |
| 🔧 | asdf |
macOS, Linux | scans ~/.asdf/installs/ |
| 🐍 | pyenv |
macOS, Linux | scans ~/.pyenv/versions/ |
| ⚠ | manual |
macOS, Linux | PATH scan (cross-referenced) |
Missing package managers are silently skipped — no errors.
Roadmap
-
pkgview --outdated— highlight packages with available updates -
pkgview --export— save snapshot as JSON/CSV for system backups - nvm / asdf / pyenv detector
- Windows support (winget, scoop, chocolatey)
- conda / mamba detector
- pacman / dnf / apk / nix / gem / composer detectors
- TUI mode with Textual (
pkgview --tui) - Docker Desktop, VS Code extension detection
- Publish to PyPI —
pipx install pkgviewwithout GitHub URL (workflow ready, pending first release) - Homebrew Tap —
brew install yourname/tap/pkgview(formula template inpackaging/homebrew/)
License
GPL-3.0-or-later — see LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pkgview-0.3.1.tar.gz.
File metadata
- Download URL: pkgview-0.3.1.tar.gz
- Upload date:
- Size: 32.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2add7cdd6a740249fb9b00ea111d6eac91d2a6af1e144b151d637bdc02f6bf5
|
|
| MD5 |
9ede0291cbaa88af7b1458bb9486c4e8
|
|
| BLAKE2b-256 |
73fce172ef8899087301ee97be323ee1c45902e8b3dca769589287da3fc49f09
|
Provenance
The following attestation bundles were made for pkgview-0.3.1.tar.gz:
Publisher:
publish.yml on bini93/pkgview
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pkgview-0.3.1.tar.gz -
Subject digest:
f2add7cdd6a740249fb9b00ea111d6eac91d2a6af1e144b151d637bdc02f6bf5 - Sigstore transparency entry: 1615264529
- Sigstore integration time:
-
Permalink:
bini93/pkgview@89879b688af07e94b06675c1f70429675cba4ef9 -
Branch / Tag:
refs/tags/pkgview-v0.3.1 - Owner: https://github.com/bini93
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@89879b688af07e94b06675c1f70429675cba4ef9 -
Trigger Event:
release
-
Statement type:
File details
Details for the file pkgview-0.3.1-py3-none-any.whl.
File metadata
- Download URL: pkgview-0.3.1-py3-none-any.whl
- Upload date:
- Size: 36.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b471245222771d36a67e42d4f970ac2eeeedd809b387459014049d14b67d8de
|
|
| MD5 |
38c6c66fe64261bb0a5f7b71cc1b6b2d
|
|
| BLAKE2b-256 |
fe9201cd4337b5b9e4dcc96a35a280626945f7fe3d17870e10da586619dfc759
|
Provenance
The following attestation bundles were made for pkgview-0.3.1-py3-none-any.whl:
Publisher:
publish.yml on bini93/pkgview
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pkgview-0.3.1-py3-none-any.whl -
Subject digest:
4b471245222771d36a67e42d4f970ac2eeeedd809b387459014049d14b67d8de - Sigstore transparency entry: 1615264560
- Sigstore integration time:
-
Permalink:
bini93/pkgview@89879b688af07e94b06675c1f70429675cba4ef9 -
Branch / Tag:
refs/tags/pkgview-v0.3.1 - Owner: https://github.com/bini93
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@89879b688af07e94b06675c1f70429675cba4ef9 -
Trigger Event:
release
-
Statement type: