Skip to content
Autocomplete

Intelligent autocomplete

IDE-level completions for your shell — subcommands, flags, arguments and paths, computed on your machine as you type.

All three platformsRuns locally
FigyTerm — Autocomplete
FigyTerm suggesting git subcommands — add, commit, push, pull, checkout — each with its own description
  • Suggestions as you type

    The popup opens on the first keystroke of an argument and narrows with every letter after it. Tab accepts, arrows navigate, Esc dismisses.

  • Fig's spec format

    A spec is a plain TypeScript description of a command. FigyTerm reads the format Fig used, so completions written for it work here unchanged.

  • Nothing leaves the machine

    Matching happens in the Rust backend against specs on disk. The command you are halfway through typing is never sent anywhere.

It knows what the command means

A completion engine that only knows filenames is a filename completer. FigyTerm reads a description of each command — its subcommands, the options each of those takes, and what kind of argument sits in each position — so the list you get after `git ` is git's subcommands with their own descriptions, and the list after `git checkout ` is your branches.

Subcommands
With the one-line description the tool's own help gives them.
Options and flags
Long and short forms, filtered to the subcommand you are actually in.
Dynamic arguments
Branches for git, services for docker compose, scripts read out of package.json or pyproject.toml.
FigyTerm — Autocomplete
FigyTerm suggesting git subcommands — add, commit, push, pull, checkout — each with its own description

Paths, ordered the way you work

Path completion reads the filesystem natively rather than shelling out, and orders what it finds by how recently you were there. The folder you visited four minutes ago is at the top of the list, not sorted alphabetically underneath a directory you have never opened.

FigyTerm — Path completion
FigyTerm suggesting directory paths with recently visited folders listed first

Eight commands covered out of the box

Built-in specs ship for the tools most sessions are spent in, and adding your own CLI is a single TypeScript file in the repository. Anything without a spec still gets path, directory and shell built-in completion.

git              subcommands, branches, options
docker           commands, containers, images, options
docker compose   services, commands, options
npm / pnpm       scripts from package.json, packages, options
yarn             scripts, packages, options
uv               scripts from pyproject.toml, options
cd               directories, recent-first ordering
The built-in catalogue

FAQ

Autocomplete, in short

Does autocomplete work with my shell?

Yes. Completions are computed by FigyTerm itself rather than by the shell, so zsh, bash, fish, PowerShell 7 and cmd.exe all behave the same. Nothing is installed into your dotfiles and no shell plugin is required.

Can I add autocomplete for my own CLI?

Yes. Specs are plain TypeScript definitions in the repository, and the spec authoring guide walks through adding a new command. Pull requests for new specs are welcome.

Is it slower than my shell's own completion?

No. Matching runs in Rust against specs already in memory, with no subprocess to spawn and no network round-trip, so the popup keeps up with typing.

Give your terminal its whole workbench

Free, MIT licensed, and entirely local. On macOS one command does it; Linux and Windows are one download away.

curl -fsSL https://raw.githubusercontent.com/code4mk/figyterm/main/install.sh | sh