Fig makes the command line easier
for individuals and more collaborative for teams.
Our most popular product is Autocomplete. As you type, Fig pops up subcommands,
options, and contextually relevant arguments in your existing terminal.
⚡️ Installation
- macOS:
- DMG: Download from our website: fig.io
- Homebrew:
brew install fig
- Windows/Linux:
- Remote machines
NOTE: Once it's downloaded, launch the app to set up Fig!
👋 What are "completion specs"?
A completion spec is a declarative schema that specifies the subcommands
,
options
and args
for a CLI tool. Fig uses these schemas to generate
suggestions.
😎 Contribute your first spec in < 3 minutes
Use the steps below or follow our getting started guide:
fig.io/docs
Prerequisites:
- Download Fig for macOS
- Node and Pnpm
Steps
-
Make sure you have pnpm
installed, as
that's the package manager used in this repo.
-
Click here to fork this
repo.
-
Clone your forked repo and create an example spec
git clone https://github.com/YOUR_GITHUB_USERNAME/autocomplete.git fig-autocomplete
cd fig-autocomplete
git remote add upstream https://github.com/withfig/autocomplete.git
pnpm install
pnpm create-spec abc
pnpm dev
-
Now go to your terminal and type abc[space]
. Your example spec will appear.
😊
Other things to know
- Edit your spec in TypeScript in the
src/
folder - On save, specs are compiled to the
build/
folder - In dev mode, specs are read from the
build
folder, and generators run
every keystroke.
🪄 Add AI to completions
You can use Fig's autocomplete for your own tools too. Here's how to create
private completions:
import { ai } from "@fig/autocomplete-generators"
...
generators: [
ai({
prompt: "Generate a git commit message",
message: async ({ executeShellCommand }) => {
return executeShellCommand("git diff")
},
splitOn: "\n",
})
]
📦 Other available package.json commands
pnpm test
pnpm build
pnpm lint:fix
🔥 Contributions
We would love contributions for:
- new completion specs
- errors with existing completion specs (e.g. missing subcommands, options, or
arguments)
- generators
for argument suggestions
- better descriptions, icons etc
- themes!
If you aren't able to contribute, please feel free to open an
issue.
😊 Need Help?
Join our community
🧑💻 Teams / Enterprise
Want to use Fig to add autocomplete internal CLI tools? Or want to use Fig at
work but have security / compliance concerns?
We would love to help get you set up. Please email
enterprise@fig.io
🙋♀️ FAQ
What terminals does Fig work with?
Fig works with the native macOS Terminal app, iTerm, Tabby, Hyper,
Kitty, WezTerm, and Alacritty. It also works in the integrated terminals
of VSCode, JetBrains IDEs, Android Studio, and Nova.
Want to see another terminal included? Check our
issue tracker and add your support for it!
How does Fig work?
Fig uses the Accessibility API on Mac to position the window, and integrates
with your shell to read what you've typed.
Does Fig work on Windows or Linux?
Not yet, Fig is only available on macOS for now.
Windows and
Linux support is in progress!
How can I download Fig?
Run brew install fig
or, downloading the app at
fig.io/download. Then, launch the Fig app!
Can I use Fig to build autocomplete for my team's internal scripts and CLI tools?
Yes! Check out our guide on how to
get started building autocomplete specs.
How do I submit a PR?
Check out our
How to Contribute guide.
Many of Fig's 200+ contributors made their first open source contribution to
Fig!
Fig doesn't work for me!
Join the Discord server and we'll debug it. Fixing
Fig in your setup will fix it for other people too! 🙂
Did we miss something?
Get in touch at hello@fig.io or chat with us on
Discord.
✨ Contributors