Inventory macOS applications from Homebrew, the Mac App Store, and local Applications folders. Print a sorted inventory or export it to CSV, Markdown, and JSON.
- Lists Homebrew casks.
- Lists Mac App Store applications when
masis available. - Lists manually installed
.appbundles from/Applicationsand~/Applications. - Optionally includes Homebrew formulae.
- Exports the same canonical inventory to CSV, Markdown, and JSON.
The inventory combines package-manager entries with .app bundles found in Applications folders. It removes manual-app duplicates for names reported by Homebrew casks and the Mac App Store.
- macOS
- Bash
brewfor Homebrew sectionsmasfor Mac App Store sectionsjqto match cask-installed.appbundles and avoid duplicate manual-app entries
The script does not install dependencies automatically. If a command is not available, the related section is skipped with a warning.
git clone https://github.com/alsd4git/list-macOS-apps.git
cd list-macOS-apps
./list-installed-apps.shTo export all sections in all three formats, create an output directory and run:
mkdir -p ./inventory
./list-installed-apps.sh --with-formulae \
--export-csv --export-md --export-json \
--output-dir ./inventoryThe command prints each section to the terminal and writes installed_apps.csv, installed_apps.md, and installed_apps.json into ./inventory. Review these files before sharing them. They contain names from your installed-app inventory.
This preview comes from the real script with synthetic .app directories and mocked brew and mas commands. It does not contain a scan of a real Mac. Regenerate it with ./scripts/generate-readme-demo.sh.
Regeneration requires Python 3 for the SVG renderer; it uses only the standard library.
The matching synthetic JSON export is available at docs/demo-inventory.json.
--with-formulae: Include Homebrew formulae in the output.--export-csv: Export the inventory toinstalled_apps.csv.--export-md: Export the inventory toinstalled_apps.md.--export-json: Export the inventory toinstalled_apps.json.--output-dir DIR: Write export files intoDIR.--help: Print usage information.
For a reproducible inventory of a mounted volume or a test fixture, set APPLICATIONS_DIRS to a colon-separated list of folders. When it is unset, the script scans /Applications and ~/Applications on the machine where it runs. Use a dedicated output directory, and check the destination before exporting.
All output formats are generated from a single internal inventory model so app names with spaces, Mac App Store entries, and manual-app deduplication stay consistent across console output and exports.
Validation commands from the repository root:
bash -n list-installed-apps.sh
shellcheck list-installed-apps.sh
./tests/test-list-installed-apps.sh
./scripts/generate-readme-demo.shThis project is licensed under the MIT License. See LICENSE.