A fast, terminal-based update checker for macOS applications.
freshly scans your /Applications folder and checks for available updates across multiple sources — App Store, Homebrew Cask, and Sparkle feeds — all from your terminal.
![]() |
![]() |
| Outdated apps | All apps |
- Three update sources — checks App Store, Homebrew Cask catalog, and Sparkle appcast feeds concurrently
- No package manager required — detects updates for apps installed via DMG, drag-and-drop, or direct download
- Interactive TUI — browse apps, view changelogs, filter by update status, search by name
- JSON output — pipe results to other tools with
--json - Fast — parallel scanning with async I/O, typically completes in a few seconds
brew install skydiver/freshly/freshlyRequires Rust 1.75 or later.
git clone https://github.com/skydiver/freshly.git
cd freshly
cargo install --path .cargo build --release
# Binary at target/release/freshly# Launch the interactive TUI
freshly
# Output as JSON (non-interactive)
freshly --json
# Filter by update source
freshly --source homebrew
# JSON with error details
freshly --json --verbose| Key | Action |
|---|---|
↑ / ↓ or j / k |
Navigate list or scroll changelog |
Tab |
Switch between app list and detail pane |
f |
Cycle filter: Outdated → All → Up to date |
s |
Cycle sort: Name → Source → Status |
/ |
Search by app name |
Esc |
Cancel search |
r |
Refresh scan |
PageUp / PageDown |
Scroll by page |
q |
Quit |
| Tag | Source | How it works |
|---|---|---|
[A] |
App Store | Queries the iTunes lookup API for apps with a MAS receipt |
[H] |
Homebrew | Matches .app filenames against the full Homebrew Cask catalog |
[S] |
Sparkle | Fetches appcast XML feeds defined in the app's Info.plist |
Contributions are welcome. Please open an issue to discuss larger changes before submitting a PR.
# Run tests
cargo test
# Run clippy
cargo clippy -- -D warnings
