pacer - terminal autocomplete for macOS
Stop guessing flags, branch names, and file paths. Pacer shows what you can type next, right at your cursor.
Pacer shows an autocomplete popover next to your cursor while you type in zsh, in Ghostty, iTerm2, or Terminal. It lists subcommands, options, branches, files, and scripts. Use ↑ ↓ to move, ⏎ or ⇥ to insert, and esc to close.
- No AI
- No account
- No telemetry
- Runs on your Mac
Install with Homebrew, then run pacer setup:
$ brew install --cask alexitaylor/tap/pacer
Or with the install script, which also runs pacer setup:
$ curl -fsSL https://pacer.sh/install | bash
Features
- Works in your terminal
- Ghostty, iTerm2, and Terminal. The popover opens at the cursor in each one.
- Subcommands and options
- Completion specs for more than 700 CLIs, from the open Fig spec library. Each row shows what the item does on a second line.
- Branches you can tell apart
- Each branch row shows the age and subject of its last commit. The current branch comes first, then up to five branches you checked out recently, marked
Recent. - Changed files first
- Commands that take a file, such as
vim,code, andcat, put the files fromgit statusat the top. A red letter shows how each one changed:Mmodified,Aadded,?new,Rrenamed. - Ranked by what you run in this repo
- Suggestions you use often in the current repo rise to the top. Only commands that succeeded count, and older uses count less.
- A guard for risky commands
git push --force,git reset --hard,rm -rf, and similar commands show a red RISK badge and a red name. The shell asks for a second ⏎ before it runs them, whether you typed, pasted, or recalled the line.- Scripts that explain themselves
- In a
scripts/orbin/folder, each file shows the first sentence of its top comment, so you can pick the right script without opening it. Executable files come first. pacer stats- A local report of how often you use Pacer and how fast the popover responds: completions accepted, keystrokes saved, your top commands, and speed at p50 and p95 against a 100 ms target, with where the time goes.
- Any command, even without a spec
- When a command has no spec, Pacer reads its
--helpoutput and builds completions from it. The result is cached until the program changes, so an update brings its new subcommands at once. pacer doctor- Checks that Pacer is installed and working, like
brew doctor: the app and its signature, the version, the Accessibility permission, the shell hooks, and leftovers from Kiro CLI, Amazon Q, or Fig. Each problem comes with a one-line fix. - Your own specs
- Put compiled specs in
~/.config/pacer/specs. A spec there wins over the bundled spec with the same name.
Examples
Speed and health
Pacer measures itself on your Mac. pacer stats shows how often it helps and how fast the popover responds; the target is 100 ms, and on the maker's Mac a typical keystroke takes about 45 ms. Example output:
$ pacer stats Pacer stats · last 7 days COMPLETIONS Accepted 212 Keystrokes saved 4180 SPEED 1904 samples · target 100 ms p50 43 ms █████████░░░░░░░░░░░ ✓ under target p95 63 ms █████████████░░░░░░░ ✓ under target
pacer doctor checks the installation and says how to fix anything that is wrong:
$ pacer doctor Pacer doctor ✓ Installed /Applications/Pacer.app ✓ App running yes ✓ Accessibility allowed ✗ Other tools Kiro CLI blocks in ~/.zshrc → Delete the Kiro CLI pre and post block lines from that file 1 problem found.
Future directions
These features are planned. They are not in the current release.
- PLANNEDQuiet for commands you dismiss
- Press esc on the same command three times and the popover stops opening for it.
- PLANNEDThe fix that worked last time
- When a command failed in this folder and a similar one then worked, Pacer suggests the one that worked.
- PLANNEDSnippets with blanks
- Save long commands with
pacer snip add. Fill in the blanks with ⇥.
What's new
- Release v0.1.0-202610300542
- Terminal.app and iTerm2 support. Changed files first, with their status letter. Branch rows with commit age and subject, and recent checkouts. Ranking by what you run in each repo. A guard for risky commands. Scripts with descriptions.
pacer statsandpacer doctor.pacer updatesays when changes are waiting for the next release. - Release v0.1.0-202610300038
- First build: the popover in Ghostty, the Fig spec library, completions from
--help, andpacer update.
Files
- ~/.config/pacer/specs/
- Your own completion specs.
- ~/Library/Application Support/pacer/settings.json
- Settings. Read and change them with
pacer settings. - ~/Library/Application Support/pacer/data.sqlite3
- Your command history, used for ranking, and the usage and speed events behind
pacer stats. Events older than 90 days are deleted. It all stays on your Mac. - ~/.zshrc, ~/.zprofile
- Pacer adds its shell hooks here.
pacer uninstallremoves them.
Privacy
Pacer makes no network calls while you type. Completions come from spec files on disk and from commands it runs in your own shell, like git branch.
There is no AI, no account, and no telemetry. pacer stats reads its numbers from a local file and sends them nowhere. Only two commands use the network, and only when you run them: pacer update downloads a newer release, and pacer doctor asks GitHub for the latest version number.
Requirements
- macOS on Apple silicon
- Intel Macs are not supported.
- zsh
- The shell: the program inside the terminal window that reads and runs your commands. It has been the default on macOS since 2019. Pacer does not work with bash or fish.
- Ghostty, iTerm2, or Terminal
- Pacer reads where the cursor is to place the popover. Kitty, WezTerm, Alacritty, and the VS Code terminal are not supported yet.
- Accessibility permission
- macOS asks for it once, so that Pacer can read where the cursor is.
First run
The first time Pacer starts, macOS asks you to allow it in System Settings > Privacy & Security > Accessibility. Pacer needs this permission for one thing: to read where the cursor is, so the popover opens next to it. It does not read what is on your screen.
Then open a new terminal tab and type a command, such as git with a space. If the popover does not appear, run pacer doctor. It names the step that is missing and how to fix it.
Questions
- Is Pacer a replacement for Fig?
- Yes, for one setup. Pacer started from the Fig code that Amazon released as open source. It keeps the popover and the spec library, and removes the account, the AI, and the cloud.
- Which terminals does it work in?
- Ghostty, iTerm2, and Terminal on macOS. It does not work in Warp, Kitty, WezTerm, Alacritty, or the VS Code terminal yet.
- Does Pacer send my commands anywhere?
- No. Your history stays in a local file. See the privacy page.
- What if something is not working?
- Run
pacer doctor. It checks the app, the Accessibility permission, the shell hooks, and conflicts with Kiro CLI, Amazon Q, or Fig, and gives a one-line fix for each problem. If that does not help, see the contact page. - Can I add completions for my own tools?
- Yes. Add a spec to
~/.config/pacer/specs, or let Pacer read the tool's--help.
See also
History
Pacer started in 2026 from aws/amazon-q-developer-cli-autocomplete at commit b654a1b, the open-source Fig code, which is licensed under MIT and Apache 2.0.
Author
Off Leash Labs. Write to offleashlabs@gmail.com.