CLI is intended to be easy to fork and customize.
git clone https://github.com/<your-username>/cli-ticker.git && cd cli-ticker && ./cli runRequirements:
- macOS
- Xcode Command Line Tools
- Python 3 with Pillow, only for
./cli icons
Every project command goes through ./cli (./cli help lists them). Before opening a pull request, run:
./cli test && ./cli buildSee docs/customizing.md for the project layout.
- The working app is the Objective-C/AppKit target in
Sources/CLITickerObjC/main.m. InventoryServiceowns local package-manager scanning.MenuControllerowns the menu bar UI and launch/report actions.- Logos live in
Assets/Logos. - App/menu icons are generated by
scripts/generate_icon_assets.py.
The version lives only in the VERSION file. The Makefile, the app bundle, and the Release workflow all read it. To release, bump VERSION on main, then push the matching tag (git tag v$(./cli version) && git push origin v$(./cli version)). The Release workflow fails if the tag and VERSION disagree, and CI fails if VERSION is behind the latest release.
Good first improvements:
- Add support for more package managers.
- Add more agent-tool aliases and icons.
- Improve report formatting.
- Add signed/notarized release automation.
- Add opt-in remote release feeds.
Please keep scanning behavior privacy-preserving and local-first by default.