A lightweight macOS desktop app that checks whether coding CLIs are up to date, lets you approve updates, and pushes them through in the background.
- Download the latest DMG from GitHub Releases.
- Move UpCLI into your
Applicationsfolder and open it. - In the app, use the built-in action to install the companion
upcliTerminal command.
The built-in installer copies a standalone upcli binary into your PATH.
After that, upcli can be run from Terminal even when the desktop app is closed.
UpCLI is designed as a quiet menu bar utility rather than a heavy dashboard. It scans your installed coding CLIs, compares local and latest versions, shows what needs attention, and gives you a clean way to update tools without bouncing between package managers and install paths.
The desktop app can also install a companion upcli Terminal command. Once installed, upcli
can run scans and interactive update prompts without the app needing to stay open.
After installing the companion command from the app, run:
upcliThe command will:
- scan supported CLIs
- show installed and latest versions
- prompt once per outdated CLI
- run the updates you approve
- print a final summary of updated, skipped, failed, and already-current tools
Built-in providers are source-aware, so UpCLI can distinguish between Homebrew formulas, Homebrew casks, npm installs, Python installs, and standalone binaries when deciding how to check and update a tool.
Current product direction:
- light, modern macOS feel
- low resource usage at idle
- background-safe update flow with completion notifications
- built-in providers for common coder CLIs
- advanced BYO-CLI support for custom tools
UpCLI currently includes first-pass support for:
codexclaudegeminiopencodeaiderqwenmistral-vibe
The provider model is source-aware, so it can distinguish between installs coming from places like npm, brew, pip, uv, or standalone paths and choose the right update path when supported.
If a tool is not built in, UpCLI can still track it through a custom adapter definition. A custom adapter can define:
- binary names to detect
- a version command
- a version parsing pattern
- a latest-version source
- an optional update command
Custom adapters can be tested, saved, exported, and imported as JSON. Update execution for custom CLIs is gated behind explicit approval.
- Tauri 2
- Rust backend
- React + TypeScript frontend
- Vite for the web build
Implemented today:
- tray-based desktop shell
- built-in
upcliTerminal companion installer - scan-all and scan-one flows
- background update jobs with event streaming
- persisted settings
- custom adapter CRUD plus import/export
- notification integration
- clean light UI with the app logo integrated into the product chrome
Still to tighten:
- real macOS launch-at-login wiring
- broader provider coverage beyond the current built-in CLI set
- richer validation and safety affordances around custom adapters
Requirements:
- Node.js
- npm
- Rust toolchain
- Xcode Command Line Tools
Install dependencies:
npm installRun the app in development:
npm run tauri devRun the Terminal workflow directly:
cd src-tauri
cargo run --bin upcliBuild the frontend bundle:
npm run buildCompile-check the Tauri backend:
cd src-tauri
cargo check