A lightweight AI shell assistant that converts natural language to shell commands and provides realtime autocomplete as you type.
So the two features are ->
- Natural language to shell commands:
k count all the .ts are in this foldergenerates the command(s), asks for confirmation, and runs them. - Inline realtime autocomplete: Non-intrusive and instant ghost-text autocomplete suggestions as you type, like copilot for your terminal.
An example below of komplete in action!
komplete.mp4
brew tap zeke-john/tap
brew install komplete
# macOS will block the binary the first time so run ->
xattr -dr com.apple.quarantine "$(which komplete)"Add to your .zshrc:
eval "$(komplete init zsh)"Then open a new terminal (or source ~/.zshrc). This gives you:
- The
kshorthand (k=komplete) - Inline autocomplete (ghost-text suggestions as you type)
Set your API keys:
komplete config set openrouter_api_key sk-or-v1-your-key-here
komplete config set groq_api_key gsk_your-key-here- OpenRouter key is for natural language commands - get one at openrouter.ai
- Groq key is for inline autocomplete - get one at console.groq.com
You can use either komplete or k ->
k clean up docker storage
k show disk usage for this folder
k find all .go files in this repo
k list running processes on port 3000
k show last 5 git commitsKomplete generates a command plan, shows it to you, and asks for confirmation before running anything.
Command ->
1) docker volume prune -f
Run this command? [y/N/#]
Type y to run all, n to cancel, or a number to run a specific command.
k --dry-run delete all node_modules # show plan without running
k --verbose list files # show request/response metadata
k --model openai/gpt-oss-20b list files # use a different modelGhost-text suggestions as you type, using Groq's fast inference with llama-3.1-8b-instant. Suggestions appear instantly as you type, predicting what you're about to write based on context.
The autocomplete is smart enough to understand your intent and suggest complete commands with proper flags, arguments, and syntax. It's non-intrusive and the subtle ghost text that appears ahead of your cursor doesn't interrupt your flow.
- Tab - accept the full suggestion
- Shift+Tab or Option+F - accept one word at a time
If you only want the k alias without autocomplete, use eval "$(komplete init alias)" instead.
All settings are stored in ~/.config/komplete/config.toml.
komplete config list # show all configured values
komplete config path # print the config file path# API keys
komplete config set openrouter_api_key sk-or-v1-xxx # for natural language commands
komplete config set groq_api_key gsk_xxx # for inline autocomplete# Model for natural language commands (default: openai/gpt-oss-safeguard-20b)
komplete config set model anthropic/claude-haiku-4.5
komplete config set model google/gemini-3-flash# Autocomplete model on Groq (default: llama-3.1-8b-instant)
komplete config set groq_model llama-3.3-70b-versatile# Shell and environment
komplete config set shell /bin/zsh # override detected shell
komplete config set cwd /path/to/dir # override working directorykomplete version # print version
komplete init zsh # output the zsh autocomplete plugin
komplete init alias # output alias k=komplete