Get AI-powered command suggestions directly in your zsh shell. No complex setup, no external tools - just press CTRL + O and get intelligent command suggestions powered by OpenAI, Anthropic Claude, or Google Gemini.
Note
This project is still in its early stages, and some features may be immature and unstable. I appreciate your understanding.
- 🚀 Context-aware intelligent prediction: Predicts the next command you are likely to input based on context (history, aliases, terminal buffer)
- 🤖 Multiple AI Providers: Support for OpenAI GPT, Anthropic Claude, and Google Gemini
- 🔧 Highly Configurable: Customize keybindings, AI provider, context sharing, and more
-
Why don't I use zsh-copilot and instead fork a separate version?
Because the context of zsh-copilot only includes history commands and does not include the terminal buffer (i.e., the stdout/stderr of history commands), it cannot achieve the context-aware intelligent prediction I want, this is the feature I want the most, and it's also the main reason why I forked. Additionally, since zsh-copilot is written in shell, it's very difficult to concatenate JSON and implement stdio interception. Therefore, I re-implemented almost all logic using Go, which made it too different from the original project to merge back.
Make sure you have the following installed:
- zsh shell
- zsh-autosuggestions plugin
- An API key for one of the supported AI providers
The easiest way to install smart-suggestion is using our installation script:
This script will:
- Detect your platform (Linux, macOS, Windows)
- Download the appropriate pre-built binary
- Install the plugin to ~/.config/smart-suggestion
- Configure your ~/.zshrc automatically with proxy mode enabled by default
- Check for zsh-autosuggestions dependency
Uninstall:
- Clone the repository into your Oh My Zsh custom plugins directory:
- Add smart-suggestion to your plugins array in ~/.zshrc:
- Build the Go binary:
- Reload your shell:
- Clone the repository:
- Build the Go binary (requires Go 1.21+):
- Add to your ~/.zshrc:
- Reload your shell:
-
Download the latest release for your platform from GitHub Releases
-
Extract the archive:
- Add to your ~/.zshrc:
- Reload your shell:
You need an API key for at least one of the supported AI providers:
Configure the plugin behavior with these environment variables:
SMART_SUGGESTION_AI_PROVIDER | AI provider to use | Auto-detected | openai, azure_openai, anthropic, gemini |
SMART_SUGGESTION_KEY | Keybinding to trigger suggestions | ^o | Any zsh keybinding |
SMART_SUGGESTION_SEND_CONTEXT | Send shell context to AI | true | true, false |
SMART_SUGGESTION_PROXY_MODE | Enable proxy mode for better context | true | true, false |
SMART_SUGGESTION_DEBUG | Enable debug logging | false | true, false |
SMART_SUGGESTION_SYSTEM_PROMPT | Custom system prompt | Built-in | Any string |
To see all available configurations and their current values:
- Start typing a command or describe what you want to do
- Press CTRL + O (or your configured key)
- Wait for the AI suggestion (loading animation will show)
- Note: On first use, proxy mode will automatically start in the background to capture terminal context
- The suggestion will appear as:
- An autosuggestion you can accept with → (for completions)
- A completely new command that replaces your input (for new commands)
- Input Capture: The plugin captures your current command line input
- Proxy Mode (Default): Automatically starts a background shell recording session to capture terminal output for better context
- Context Collection: Gathers rich shell context including user info, directory, command history, aliases, and terminal buffer content via proxy mode
- AI Processing: Sends the input and context to your configured AI provider
- Smart Response: AI returns either a completion (+) or new command (=)
- Shell Integration: The suggestion is displayed using zsh-autosuggestions or replaces your input
Smart Suggestion now automatically enables proxy mode by default, which provides significantly better context awareness by recording your terminal session. This mode:
- Automatically starts when you first use smart suggestions
- Records terminal output using the script command for maximum compatibility
- Provides rich context to the AI including command outputs and error messages
- Works seamlessly across different terminal environments
You can disable proxy mode if needed:
For advanced proxy configuration, see PROXY_USAGE.md.
Enable debug logging to troubleshoot issues:
Debug logs are written to /tmp/smart-suggestion.log.
- "Binary not found" error: Run ./build.sh in the plugin directory
- No suggestions: Check your API key and internet connection
- Wrong suggestions: Try adjusting the context settings or system prompt
- Key binding conflicts: Change SMART_SUGGESTION_KEY to a different key
If the build fails:
Contributions are welcome! Please feel free to submit issues and pull requests.
This project is open source. Please check the repository for license details.