A modern, intelligent terminal for macOS with autocomplete superpowers.
Features • Installation • Development • Shortcuts • Contributing
FigyTerm is a fully local desktop terminal built with Tauri 2, React, and Rust. It brings IDE-level autocomplete to your command line — context-aware suggestions for git, docker, pnpm, npm, uv, and more — all running natively with zero network dependency.
Inspired by Fig (now part of AWS), FigyTerm is an open-source alternative that keeps your terminal experience fast, private, and extensible.
- Intelligent Autocomplete — Context-aware suggestions for commands, subcommands, options, and file paths
- Spec-based Engine — Compatible with Fig's spec format for community-driven command completions
- Split Panes — Up to 4 resizable terminal panes per tab (Cmd+D / Cmd+Shift+D)
- Multiple Tabs — Browser-style tab bar with drag-to-reorder and rename support
- Oh My Zsh Integration — Real-time theme switching with full prompt rendering
- Dark & Light Mode — Beautifully themed UI that adapts to your preference
- Recent Directory Ordering — Frequently visited folders appear first in suggestions
- Clickable URLs — Links in terminal output open in your default browser
- Native Performance — Rust PTY backend with zero-latency input
- Go to the Releases page
- Download the
.dmgfile for your Mac:- Apple Silicon (M1/M2/M3/M4):
FigyTerm_x.x.x_aarch64.dmg - Intel:
FigyTerm_x.x.x_x64.dmg
- Apple Silicon (M1/M2/M3/M4):
- Open the
.dmgfile - Drag FigyTerm to your Applications folder
- Launch from Applications
First launch: macOS may show "FigyTerm can't be opened because it is from an unidentified developer." Go to System Settings > Privacy & Security, scroll down, and click Open Anyway.
"FigyTerm" is damaged and can't be opened: This happens because the app isn't code-signed. Run this in Terminal:
xattr -cr /Applications/FigyTerm.appThen launch again.
Keychain access popup: macOS may ask to allow FigyTerm to access your keychain (for SSH keys, credentials, etc.). Click Always Allow or Allow to proceed. If you accidentally deny it, go to Keychain Access > login and update the access control for the relevant entry.
git clone https://github.com/code4mk/figyterm.git
cd figyterm
npm install
npm run tauri buildThe built .app and .dmg will be in src-tauri/target/release/bundle/macos/.
| Requirement | Version |
|---|---|
| Node.js | 18+ |
| Rust | 1.86+ |
| Tauri CLI | 2.x |
| Xcode Command Line Tools | xcode-select --install |
| Shortcut | Action |
|---|---|
⌘ T |
New tab |
⌘ W |
Close active pane |
⌘ D |
Split pane horizontally |
⌘ ⇧ D |
Split pane vertically |
⌘ K |
Clear terminal |
⌘ , |
Settings |
⌘ 1-9 |
Switch to tab N |
⌘ ⇧ [ |
Previous tab |
⌘ ⇧ ] |
Next tab |
Tab |
Accept autocomplete suggestion |
↑ ↓ |
Navigate suggestions |
Esc |
Dismiss suggestions |
Shell-native shortcuts (Ctrl+C, Ctrl+D, Ctrl+Z, Ctrl+L) pass through directly.
FigyTerm ships with built-in specs for popular tools:
| Command | Coverage |
|---|---|
git |
Subcommands, branches, options |
docker |
Commands, containers, images, options |
docker compose |
Services, commands, options |
npm |
Scripts, packages, options |
pnpm |
Scripts, workspaces, options |
yarn |
Scripts, packages, options |
uv |
Scripts from pyproject.toml, options |
cd |
Directories with recent-first ordering |
Adding a new spec is straightforward — see the Spec Authoring Guide.
┌─────────────────────────────────────────────┐
│ React + TypeScript (UI Layer) │
│ ├── xterm.js (terminal rendering) │
│ ├── Autocomplete engine (spec-based) │
│ ├── Split panes (react-resizable-panels) │
│ └── Settings & theme management │
├─────────────────────────────────────────────┤
│ Tauri IPC (commands + events) │
├─────────────────────────────────────────────┤
│ Rust (Native Layer) │
│ ├── PTY session management │
│ ├── Path completion (filesystem) │
│ ├── Shell command execution │
│ └── Window management │
└─────────────────────────────────────────────┘
| Layer | Technology |
|---|---|
| Frontend | React 18, TypeScript, Vite, Tailwind CSS |
| Terminal | xterm.js, FitAddon, WebLinksAddon |
| Desktop | Tauri 2.x |
| Native | Rust |
| PTY | portable-pty |
| State | Zustand |
| UI Components | Headless UI, Lucide Icons |
| Panels | react-resizable-panels |
# Install dependencies
npm install
# Start dev mode (hot-reload frontend + Rust rebuild)
npm run tauri dev
# Type check
npx tsc --noEmit
# Production build
npm run tauri buildfigyterm/
├── src/ # Frontend (React + TypeScript)
│ ├── components/
│ │ ├── AppShell/ # Main layout, tab & pane management
│ │ ├── Terminal/ # Terminal, TabBar, SplitHandle, PaneContainer
│ │ └── Settings/ # Settings modal (tabbed)
│ ├── services/ # Autocomplete engine, spec registry, recent dirs
│ ├── specs/ # Command completion specs (git, docker, etc.)
│ ├── stores/ # Zustand stores (settings, theme)
│ └── types/ # TypeScript definitions (figy, terminal)
├── src-tauri/ # Backend (Rust)
│ └── src/
│ ├── commands/ # Tauri IPC handlers
│ │ ├── terminal.rs # PTY session create/write/resize/close
│ │ ├── autocomplete.rs # Path completions
│ │ └── shell_exec.rs # Shell command execution
│ └── lib.rs # App entry point
├── docs/ # Documentation
│ ├── CONTRIBUTING.md # Contribution guidelines
│ └── SPECS.md # Spec authoring guide
├── public/ # Static assets (logo, icons)
└── package.json
- Real PTY sessions with persistent shell
- Multi-tab support with rename
- Intelligent autocomplete (spec-based)
- Split panes (up to 4 per tab)
- Oh My Zsh theme management
- Dark/Light mode
- Recent directory ordering
- Clickable URLs
- Command history search (Ctrl+R enhancement)
- Plugin system for custom specs
- AI-powered command suggestions (local models)
- Snippet management
- Session restore on relaunch
We welcome contributions! Please read our Contributing Guide to get started.
