# I launched CLI Tools

> CLI Tools is a free, open source macOS app that catalogs every command-line tool you installed with Homebrew, npm, and Cargo, with examples, shell history, and a JSON CLI for coding agents.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2026-09-09 | Topics: [News](https://flaviocopes.com/tags/news/) | Canonical: https://flaviocopes.com/cli-tools/

I launched [CLI Tools](https://github.com/flaviocopes/cli-tools), a small macOS app that gives you one catalog for every command-line tool on your Mac.

I install a lot of tools. Some with Homebrew, some with npm, some with Cargo, and some are scripts I dropped into `~/.local/bin` months ago.

After a while I forget what I have. I forget the name of the tool I installed for that one job. I forget how to call it.

CLI Tools fixes that.

![The CLI Tools app showing every tool found on my Mac](https://flaviocopes.com/images/cli-tools/list.png)

## What it finds

The app scans the packages you explicitly installed with Homebrew, npm, and Cargo. It also looks in trusted user directories like `~/.local/bin`, `~/.bun/bin`, and `~/.deno/bin`.

Package commands stay grouped. One npm package that ships five helper executables shows up as one entry, not five.

Each tool gets a row with its source, its path, and when you installed it. The sidebar lets you see what you installed today, in the last 7 days, or this month. You can mark favorites and archive the tools you no longer care about.

## Examples and your own history

Select a tool and the detail pane shows its version, its help output, and a description and homepage for Homebrew packages.

It also shows ready-made examples. The app downloads the tool's [tldr page](https://github.com/tldr-pages/tldr) when one exists, and it extracts the examples section from the tool's own `--help` output. Every example has a copy button.

![The stripe tool detail, with ready-made examples and the help output](https://flaviocopes.com/images/cli-tools/examples.png)

Below that you get your own history. The app reads your shell history (zsh, bash, and fish) and groups the commands that ran that tool, with how many times you ran each one and when you ran it last.

![The gh tool detail, with version, homepage, path, and my own shell history](https://flaviocopes.com/images/cli-tools/detail.png)

This is the feature I wanted most. The best example of how to use a tool is the command I already typed once.

Nothing from your history is written to the catalog. The app reads the history files and keeps the result in memory.

## The CLI

The app comes with a companion CLI that reads the same catalog:

```bash
clitools scan
clitools list --json
clitools inspect gh
clitools history gh
```

![The clitools help output listing every command](https://flaviocopes.com/images/cli-tools/cli.png)

The JSON output is the reason the CLI exists. A coding agent working on my machine can ask which tools are installed and how to call them, instead of guessing or trying to install something I already have.

The app and the CLI share one file:

```text
~/Library/Application Support/CliTools/catalog.json
```

## Build it

CLI Tools is free and open source, released under the MIT license.

It is a Swift package, so you build it from source. You need macOS 14 or later and Xcode 26 or a Swift 6.2 toolchain:

```bash
git clone https://github.com/flaviocopes/cli-tools.git
cd cli-tools
./Scripts/build-app.sh
open "dist/CLI Tools.app"
```

Or run the development build with `swift run CliToolsApp`.

The repository has an [AGENTS.md](https://github.com/flaviocopes/cli-tools/blob/main/AGENTS.md) file with the build commands, the project layout, and the rules to follow. If you want to change something, you can hand that file to your coding agent and let it do the work.

CLI Tools is available now on [GitHub](https://github.com/flaviocopes/cli-tools).
