Vector-First Cascade
Uses direct matches, Gemini embeddings (FAISS), and local resolvers before falling back to an LLM. Faster, cheaper, and more accurate.
A local, context-aware command-line assistant powered by a vector-first cascade architecture. Translate natural language into precise shell commands with local-first privacy.
exo "find all large logs and compress them"
# E.X.O. Routing: Semantic Search (FAISS)
Proposed: find . -name "*.log" -size +100M -exec gzip {} +
Execute? Y/n
Uses direct matches, Gemini embeddings (FAISS), and local resolvers before falling back to an LLM. Faster, cheaper, and more accurate.
Your history and commands stay on your machine. External APIs are only used for embeddings and optional fallback.
E.X.O. never executes a command without your explicit confirmation. Destructive commands are clearly flagged.
Learns from your unique terminal history to suggest commands that match your specific workflow and environment.
Run the automated installer in your terminal:
curl -fsSL https://raw.githubusercontent.com/LightPeacock/exo_cli/main/scripts/install.sh | bash
Use WSL2 (Ubuntu) or Git Bash for the best experience:
# Inside WSL2 or Git Bash
curl -fsSL https://raw.githubusercontent.com/LightPeacock/exo_cli/main/scripts/install.sh | bash
E.X.O. becomes powerful when it learns from your unique terminal history.
Copy your shell history to the E.X.O. home directory so it can be indexed.
cp ~/.zsh_history ~/.exo/history_snapshot.txt
cp ~/.bash_history ~/.exo/history_snapshot.txt
cp (Get-PSReadlineOption).HistorySavePath $HOME/.exo/history_snapshot.txt
Set your Gemini API Key in ~/.exo/.env to enable embeddings.
GOOGLE_API_KEY=your_api_key_here
Run these scripts from the exo_cli folder to initialize FAISS and index your commands.
# 1. Initiate FAISS vector store
python step2_init_faiss.py
# 2. Load brain with your history
python step3_index_gemini.py
exo "list my running docker containers"