TL;DR: Figxit is a free, open source autocomplete popup for the macOS terminal. It lists subcommands, options, package.json scripts, and Makefile targets as you type, in zsh, bash, and fish, and orders them by what you run most in the current folder. It runs locally with no account and no telemetry. Source: github.com/en3sis/figxit.
en3sis
/
figxit
Native autocomplete popup for the macOS terminal. The completion part of Fig, rebuilt as a small local app. No account, no AI, no telemetry.
Figxit
IDE-style autocomplete for the macOS terminal, for zsh, bash, and fish. Figxit completes commands, subcommands, options, package.json scripts, and Makefile targets as you type, ordered by what you use most in the current project.
It is a free, open source replacement for Fig's autocomplete. It runs locally, with no account, no AI chat, and no telemetry.
Why it exists
Fig added autocomplete to the terminal: you typed git and got the subcommands, each with a short description. Fig joined AWS in 2023 and the app was shut down in September 2024. Its autocomplete now ships inside Kiro CLI, a closed-source AI agent tool.
The open alternatives each lack a part of what Fig did:
- Shell completion menus open only when you press Tab, and they do not know which command you use most.
- Tools that draw the list inside the terminal wrap the shell session to do it.
- History…
Table of contents
What terminal autocomplete is
Terminal autocomplete suggests the next word of a command while you type it: a subcommand, a flag, a file, a branch, a script name. There are three common forms:
| Form | Example | When it shows |
|---|---|---|
| Tab completion | zsh compinit, bash-completion |
Only after you press Tab |
| Inline suggestion | zsh-autosuggestions, fish | As you type, one full past command in grey |
| Popup list | Fig (discontinued), Figxit | As you type, a list of options with a description on each row |
Tab completion knows what a command accepts, but you have to ask for it. Inline suggestions are fast, but they only show one line from your history. A popup list shows every valid next word with a short description, like autocomplete in a code editor.
Options on macOS today
- Fig added popup autocomplete to the terminal. It joined AWS in 2023 and the app was shut down in September 2024. Its autocomplete now ships inside Kiro CLI, a closed-source AI agent tool that needs an account.
- Shell completion menus (zsh, bash-completion, fzf-tab) open only on Tab and do not rank by your usage.
- inshellisense (Microsoft) uses the same Fig specs and draws the list inside the terminal session. It is cross-platform.
- History tools such as Atuin and fzf find a full past command, but they do not list what a command can do.
Figxit combines the three missing parts: a list that opens while you type, completion data for 700+ tools, and ranking from your own history.
What Figxit does
Subcommands and options for 700+ tools
Figxit loads the open source Fig completion specs (git, docker, npm, kubectl, and more). Type a command and a space for its subcommands, or a dash for its options. Options already on the line are hidden.
Specs also supply live values: git branches after git checkout, hosts after ssh, files and folders where a command takes a path.
npm, pnpm, yarn, and bun scripts
npm run, pnpm, yarn, and bun run list the scripts in package.json, with the command each one runs.
Makefile targets
make lists the targets of the Makefile in the current folder. The right column shows help comments that many projects already write:
##@ Development
dev: ## Start the stack with hot reload
dev-down: ## Stop the stack
##@ Tests
test: ## Run the unit tests
##@ starts a section, and ## after a target is its help text. Both are optional.
Ranking from your history
Figxit reads your Atuin history database, read-only. A word scores higher when you used it in the same folder, in the same repository, or recently. Without Atuin, the popup still works in the order the sources give.
Red icon for production
A row that touches production gets a red icon, so you notice it before you press Enter. A row gets it when the name is in capitals (DEPLOY), contains prod or production (deploy:prod, api-prod), or is a Makefile target tagged ## [prod]. Enter inserts a red row without running it.
Keys
| Key | Action |
|---|---|
| Up, Down | Move the highlight |
| Tab | Insert the highlighted row |
| Enter | Insert the row and run the line (a red row is inserted, not run) |
| Esc | Close the popup |
When the popup is closed, keys keep their normal behaviour: Tab opens your usual completion, and Up searches history.
How it works
Figxit has three parts that talk over unix sockets:
shell adapter ── buffer, cursor, folder ──▶ engine ── rows, position ──▶ helper
(zsh, bash, fish) (Bun) (Swift, AppKit)
▲ │
└───────── text to insert on Tab ───────────┘
- Shell adapter: a line editor hook sends the buffer to the engine after each key, without waiting for a reply. The shell only waits (300 ms at most) when you press Tab or Enter with the list open.
- Engine: a Bun process that keeps your history and the specs in memory. It parses the line, collects candidates from project files, specs, and history, then ranks them. Values that need a command, like git branches, arrive in a second pass so the first rows are never delayed.
- Helper: a small macOS app that draws a floating panel at the cursor. It does not take keyboard focus and needs no Accessibility or Screen Recording permission. In tmux, tmux reports the cursor cell; outside tmux, the terminal does.
Install
Requirements: Apple Silicon Mac, macOS 13 or later, and zsh, bash 5+, or fish 4. Tested in Ghostty, iTerm2, Terminal, and any terminal running tmux.
- Download Figxit.dmg and drag Figxit to Applications.
- Open Figxit. A setup window shows the line for your shell. Click Add, or add it yourself:
# zsh, in ~/.zshrc
eval "$('/Applications/Figxit.app/Contents/MacOS/figxit-engine' init zsh)"
# bash, in ~/.bashrc
eval "$('/Applications/Figxit.app/Contents/MacOS/figxit-engine' init bash)"
# fish, in ~/.config/fish/conf.d/figxit.fish
status is-interactive; and '/Applications/Figxit.app/Contents/MacOS/figxit-engine' init fish | source
Open a new terminal and start typing 🥳
Run figxit doctor to check each part of the installation.
FAQ
Is Figxit a replacement for Fig autocomplete?
Yes, for the autocomplete popup. It uses the same open source completion specs. It does not include Fig's other features, such as dotfile sync, and it has no AI chat.
Can I use it in place of Amazon Q or Kiro CLI autocomplete?
Yes, if you only want autocomplete. Figxit needs no account. It is not affiliated with Fig, Amazon, or Kiro.
How is it different from inshellisense?
Both use the Fig specs. inshellisense draws inside the terminal session and runs on Windows and Linux. Figxit shows a native macOS window and ranks rows by your history. It is macOS only.
Does it work in the VS Code terminal?
No. Terminals embedded in an editor window do not report where the panel is. Use a terminal app, with or without tmux.
Does it send what I type anywhere?
No. There is no telemetry and no account. The only network request is a daily update check, which you can turn off in Settings.
Is it free?
Yes. MIT licence.
Links
- Website and demo video: figxit.com
- Source, docs, and issues: github.com/en3sis/figxit
- Download: Figxit.dmg
If you try it, issues and feature requests are welcome on GitHub.







Top comments (0)