Name

pacer - terminal autocomplete for macOS

Synopsis
pacer setup | uninstall
pacer launch | quit | restart
pacer update [--force]
pacer stats [--days N]
pacer doctor
pacer settings key [value] [--delete]
Description

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

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
zsh · ~/code/web
~/code/web docs/landing-page
❯ git switch

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, and cat, put the files from git status at the top. A red letter shows how each one changed: M modified, A added, ? new, R renamed.
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/ or bin/ 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 --help output 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

# Switch branches by what you did on them, not by name.
zsh · ~/code/web
~/code/web docs/landing-page
❯ git switch
# Open the file you are working on. Changed files come first.
zsh · ~/code/web
~/code/web docs/landing-page
❯ vim
# Risky options are marked before you insert them.
zsh · ~/code/web
~/code/web docs/landing-page
❯ git push --f
# A tool with no spec still completes, from its own --help.
zsh · ~/code/web
~/code/web docs/landing-page
❯ deploy --

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 stats and pacer doctor. pacer update says 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, and pacer 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 uninstall removes 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

fig(1)Pacer and Fig comparedamazon-q(1)Pacer and Amazon Q autocomplete comparedkiro(1)Moving from Kiro CLI or Amazon Q to Pacerzsh-autosuggestions(7)Inline history suggestions compared with a popoverfzf-tab(7)Fuzzy tab completion compared with Pacerwarp(1)A terminal with built-in completions compared with Pacerghostty(1)A terminal Pacer runs initerm2(1)A terminal Pacer runs in

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