Instant coding answers via the command line - powered by AI
Forget scrolling through Stack Overflow or man pages. Just ask.
Ask CLI questions in plain English and get instant answers powered by Claude, ChatGPT, or LM Studio.
- 🤖 Multiple AI providers - Choose between Claude (Anthropic), ChatGPT (OpenAI), or LM Studio (local)
- 🎨 Color-coded output - Commands in green, explanations in gray
- 📋 Copy to clipboard - One flag to copy commands instantly
- ⚡ Direct execution - Run commands with confirmation
- 📚 Show examples - Get multiple usage examples
- 🚀 Interactive mode - REPL for continuous queries
- 💾 Query history - XDG-compliant storage in
~/.local/state/howtfdoi/ - 🖥️ Platform-aware - Detects your OS for tailored answers
⚠️ Danger warnings - Highlights risky commands in yellow- 🔍 Verbose mode - Debug and troubleshoot with detailed logging
- ⚡ Blazing fast - Uses prompt caching for speed
- 🔧 Config file - Persist API keys and provider in
~/.config/howtfdoi/howtfdoi.yaml - 🧙 First-run setup - Interactive wizard configures your API key on first use
- 🏠 Local AI support - Use LM Studio for completely local, private, free AI
# Build the binary
go build -o howtfdoi
# Optional: Install to your PATH
go install
# Or install directly
go install github.com/neckbeardprince/howtfdoi@latestThe easiest way to get started is to just run howtfdoi — the first-run setup wizard will walk you through selecting a provider and entering your API key. Your configuration is saved to ~/.config/howtfdoi/howtfdoi.yaml.
Alternatively, you can configure via environment variables:
export ANTHROPIC_API_KEY='your-api-key-here'Get your API key from: https://console.anthropic.com/settings/keys
export OPENAI_API_KEY='your-api-key-here'Get your API key from: https://platform.openai.com/api-keys
Run AI models locally on your machine — completely private, offline, and free.
- Download and install LM Studio
- Load a model (recommended:
qwen2.5-coder-7b-instructfor CLI tasks) - Start the local server in LM Studio
- Configure howtfdoi:
export HOWTFDOI_AI_PROVIDER=lmstudio
# Optional: customize base URL and model name
export LMSTUDIO_BASE_URL='http://localhost:1234/v1'
export LMSTUDIO_MODEL='local-model'Or add to your config file:
provider: lmstudio
lmstudio_base_url: http://localhost:1234/v1
lmstudio_model: local-modelAPI keys and provider preference are stored in a YAML config file:
Default location: ~/.config/howtfdoi/howtfdoi.yaml
# WARNING: This file contains API keys. Do NOT commit this file to git.
provider: anthropic
anthropic_api_key: sk-ant-...
openai_api_key: sk-...
# For LM Studio (local):
# provider: lmstudio
# lmstudio_base_url: http://localhost:1234/v1
# lmstudio_model: local-modelA .gitignore is automatically created in the config directory to prevent accidental commits.
Set XDG_CONFIG_HOME to change the config directory:
export XDG_CONFIG_HOME=/custom/path
# Config stored at: /custom/path/howtfdoi/howtfdoi.yamlEnvironment variables always take precedence over the config file:
HOWTFDOI_AI_PROVIDERenv var →providerin config → default "anthropic"ANTHROPIC_API_KEYenv var →anthropic_api_keyin configOPENAI_API_KEYenv var →openai_api_keyin configLMSTUDIO_BASE_URLenv var →lmstudio_base_urlin config → defaulthttp://localhost:1234/v1LMSTUDIO_MODELenv var →lmstudio_modelin config → defaultlocal-model
By default, howtfdoi uses Claude (Anthropic). To use other providers:
# Use OpenAI/ChatGPT
export HOWTFDOI_AI_PROVIDER=openai
howtfdoi list files
# Use LM Studio (local)
export HOWTFDOI_AI_PROVIDER=lmstudio
howtfdoi list files
# "chatgpt" is an alias for "openai"
HOWTFDOI_AI_PROVIDER=chatgpt howtfdoi list filesIf you don't set HOWTFDOI_AI_PROVIDER, the tool will:
- Use Anthropic if
ANTHROPIC_API_KEYis set (env or config) - Fall back to OpenAI if only
OPENAI_API_KEYis set - Use OpenAI if both keys are set but you specify the provider
howtfdoi <your question># Basic query
howtfdoi tarball a directory
# Output: tar -czf archive.tar.gz directory/
# (Creates a compressed tarball)
# Copy to clipboard
howtfdoi -c find large files
# Command is copied to clipboard automatically
# Show multiple examples
howtfdoi -e grep
# Shows 5-7 practical grep examples
# Execute directly (with confirmation)
howtfdoi -x list files
# Runs 'ls' after confirmation
# Verbose mode (shows data directory, history saves)
howtfdoi -v compress files
# Displays: Using data directory: ~/.local/state/howtfdoi
# Show version
howtfdoi --version
# Output: howtfdoi version 1.0.6
# Show help
howtfdoi --help
# Shows usage, flags, and examples
# Interactive mode
howtfdoi
# Enters REPL - type questions continuously-c- Copy command to clipboard-e- Show multiple examples-v- Enable verbose logging (shows data directory, history saves)-x- Execute command directly (asks for confirmation)--version- Show version information--help/-h- Show usage help and examples
Run howtfdoi without arguments to enter interactive mode:
$ howtfdoi
🚀 Interactive mode - Type your questions or 'exit' to quit
Tip: Use -c to copy, -x to execute, -e for examples
howtfdoi> find files modified today
find . -mtime -1
howtfdoi> -c search for text recursively
grep -r "text" .
📋 Copied to clipboard!
howtfdoi> exit
Goodbye! 👋Commands are displayed in bold green, explanations in gray. Warnings and dangerous commands appear in yellow/red for visibility.
Automatically warns you about potentially dangerous commands:
rm -rf /orrm -rf *ddoperations on devicesmkfsfilesystem creation- Fork bombs and other risky patterns
All queries are saved with timestamps following the XDG Base Directory specification:
Default location: ~/.local/state/howtfdoi/history.log
[2025-01-15 14:30:22] tarball a directory
tar -czf archive.tar.gz directory/
---
View your history anytime:
cat ~/.local/state/howtfdoi/history.logCustom location: Set XDG_STATE_HOME to change the base directory:
export XDG_STATE_HOME=/custom/path
howtfdoi find files
# History saved to: /custom/path/howtfdoi/history.logUse the -v flag to enable detailed logging for debugging and troubleshooting:
$ howtfdoi -v find large files
Using data directory: /Users/you/.local/state/howtfdoi
Using config file: /Users/you/.config/howtfdoi/howtfdoi.yaml
Using AI provider: anthropic
find / -type f -size +100M -exec ls -lh {} \;
(Finds files larger than 100MB and lists them with sizes)
Saved to history: /Users/you/.local/state/howtfdoi/history.logVerbose mode shows:
- Data directory location on startup
- Config file path
- Active AI provider
- History file save confirmations
- Warnings if history cannot be saved
Automatically detects your OS (macOS, Linux, Windows) and provides platform-specific commands when relevant.
# File operations
howtfdoi compress a folder
howtfdoi extract tar.gz file
howtfdoi find files by name
# Git operations
howtfdoi undo last commit
howtfdoi show git branch history
howtfdoi cherry pick a commit
# System info
howtfdoi check disk space
howtfdoi show running processes
howtfdoi monitor system resources
# Text processing
howtfdoi replace text in files
howtfdoi count lines in a file
howtfdoi sort and remove duplicates
# Network
howtfdoi check open ports
howtfdoi download file from url
howtfdoi test network connection- Blazing fast: Uses fast models (Claude Haiku or GPT-4o-mini) with streaming + prompt caching
- Flexible: Choose between Claude, ChatGPT, or local LM Studio
- Natural language: Ask questions the way you think
- CLI focused: Specialized for command-line tools
- No browser needed: Everything in your terminal
- Smart features: Copy, execute, examples, history - all built-in
- Safe: Warns about dangerous commands before you run them
# Get examples and copy the first one
howtfdoi -e -c tar
# Show examples and execute one
howtfdoi -e -x list processesAdd a shorter alias to your shell config:
# Add to ~/.bashrc or ~/.zshrc
alias h='howtfdoi'
alias hc='howtfdoi -c'
alias hv='howtfdoi -v'
alias hx='howtfdoi -x'
alias he='howtfdoi -e'Then use:
h find large files
hc compress directory
hv debug issue # verbose mode
he grep- Takes your natural language question
- Determines which AI provider to use (Claude, ChatGPT, or LM Studio)
- Streams to the selected API using fast models (Haiku, GPT-4o-mini, or local)
- Uses prompt caching for repeated queries (even faster with Claude!)
- Platform detection ensures OS-specific answers
- Parses and colorizes the output
- Checks for dangerous patterns
- Saves to history automatically
Colors not showing?
- Make sure your terminal supports ANSI colors
- Try running
export TERM=xterm-256color
Clipboard not working?
- macOS: Should work out of the box
- Linux: Install
xcliporxsel - Windows: WSL should work automatically
API errors?
- Verify your API key is set:
- Check config file:
cat ~/.config/howtfdoi/howtfdoi.yaml - Or env vars:
echo $ANTHROPIC_API_KEY/echo $OPENAI_API_KEY
- Check config file:
- Check which provider is being used:
howtfdoi -v list files - Re-run first-time setup: delete your config file and run
howtfdoi - Verify your account has credits (Anthropic Console or OpenAI Dashboard)
LM Studio not working?
- Make sure LM Studio is running with a model loaded
- Check the server URL:
howtfdoi -v list fileswill show the base URL being used - Verify the local server is responding:
curl http://localhost:1234/v1/models
Issues and PRs welcome! This is a simple tool but there's always room for improvement.
MIT
Made with ⚡ and Claude