Skip to content

64bit/commandOK

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⌘OK

Demo of commandOK in action

commandOK

commandOK is a Spotlight-like command generator for your terminal. Pops up when you need it and gets out of the way when you don't.

Built with Ratatui and powered by your choice of LLM provider.

WARN: you must always verify the generated command before accepting it

Install

cargo install commandok

Setup

On first run, a default config is created at ~/.commandok/config.toml. Add your API key for at least one provider:

[commandok]
provider = "anthropic"  # Options: anthropic, openai, google, mistral, ollama, openrouter, xai
system_prompt = "You are a terminal command generator. Given a natural language description, output ONLY the shell command appropriate for the user's OS and shell. No explanation, no markdown, no code blocks, no backticks. Just the raw command."

[anthropic]
api_key = "sk-ant-..."
model = "claude-opus-4-6"

[openai]
api_key = "sk-..."
model = "gpt-5.4"

[google]
api_key = "..."
model = "gemini-3-flash-preview"

[mistral]
api_key = "..."
model = "mistral-small-latest"
# api_url = "https://api.mistral.ai/v1"  # default

[ollama]
model = "gemma3:1b"
# api_url = "http://localhost:11434"  # default, change if running elsewhere

[openrouter]
api_key = ""
model = "qwen/qwen3.6-plus:free"
# api_url = "https://openrouter.ai/api/v1"  # default

[xai]
api_key = ""
model = "grok-4.20-0309-reasoning"
# api_url = "https://api.x.ai/v1"  # default

Usage

Run commandok in any terminal. A search bar appears inline below your cursor.

  1. Type a natural language description of the command you need
  2. Press Enter -- the command streams in token-by-token
  3. Press Enter again to accept (injects the command into your shell) or Esc to cancel

Keybindings

Key Action
Enter Submit prompt / Accept generated command
Esc Cancel and dismiss
Shift+Tab Cycle through configured providers
Up / Down Browse prompt history
Ctrl+U Clear input line
Ctrl+C Quit
Left / Right / Home / End Move cursor

Adding a new provider

  1. Create src/provider/yourprovider.rs with a pub async fn stream(...) function
  2. Add pub mod yourprovider; to src/provider/mod.rs
  3. Add a variant to the Provider enum and wire it in from_name() / stream()
  4. Add the section to Config in src/config.rs and PROVIDER_ORDER

License

MIT

About

Spotlight-like command generator for your terminal. Pops up when you need it and gets out of the way when you don't.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages