No description
- Rust 89.5%
- Python 9.6%
- Makefile 0.9%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .vscode | ||
| crates/ai-client | ||
| eval | ||
| prompt | ||
| src | ||
| .gitignore | ||
| AGENTS.md | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Makefile | ||
| README.md | ||
shellbud
sb suggests a shell command from a prompt.
Install
git clone https://source.tube/ilya/shellbud.git
cd shellbud
cargo install --path .
Usage
# TUI
sb
# CLI
sb "find files larger than 100 MB"
# Pipes work both ways
sb "what's eating my RAM?" | pbcopy
echo "weather in brooklyn" | sb
# Live dangerously
sb "find PDFs in my downloads folder" | bash
Configuration
# ~/.config/shellbud/config.toml
base_url = "https://openrouter.ai/api/v1" # OpenAI-compatible endpoint
api_key = "sk-or-..."
# Or get the api_key via a key manager command:
# api_key_cmd = ["op", "read", "op://Personal/OpenRouter/credential"]
model = "google/gemini-2.5-flash-lite"
Environment values override the config file:
SHELLBUD_API_KEYorOPENROUTER_API_KEY— API keySHELLBUD_MODEL— model nameSHELLBUD_BASE_URL— OpenAI-compatible API base URL
Development
make lint
make test
make eval
Benchmark results
To balance latency and accuracy, I chose Gemini 2.5 Flash Lite.
| Model | Pass rate | Median E2E |
|---|---|---|
| GPT-5.4 Nano | 30/50 (60%) | 327 ms |
| Amazon Nova Micro | 42/48 (87.5%) | 516 ms |
| Gemini 2.5 Flash Lite | 45/48 (93.8%) | 521 ms |
| Ling 2.6 Flash | 34/50 (68%) | 532 ms |
| Gemini 3.1 Flash Lite | 40/50 (80%) | 546 ms |
| Amazon Nova Micro (Bedrock) | 48/50 (96%) | 746 ms |
| Mistral Small 2603 | 43/48 (89.6%) | 769 ms |
| Qwen3 Coder Next | 47/48 (97.9%) | 804 ms |
| OpenAI GPT-4.1 mini | 48/48 (100%) | 925 ms |
| Claude Haiku 4.5 | 45/48 (93.8%) | 1,035 ms |
| OpenAI GPT-4.1 mini | 50/50 (100%) | 1,313 ms |
| Claude Haiku 4.5 | 42/50 (84%) | 1,357 ms |
| OpenAI GPT-4o mini | 49/50 (98%) | 1,382 ms |