Configuration

Configuration

All configuration is done through environment variables in your ~/.zshrc. All settings are optional and have sensible defaults.

Provider Configuration

Local LLM (Ollama) - Default

export VIBE_API_URL="http://localhost:11434/v1"
export VIBE_MODEL="llama3:8b"

This is the default configuration. If you have Ollama running locally, vibe will work out of the box.

OpenAI

export VIBE_API_URL="https://api.openai.com/v1"
export VIBE_API_KEY="sk-..."
export VIBE_MODEL="gpt-4"

Anthropic (via OpenRouter)

export VIBE_API_URL="https://openrouter.ai/api/v1"
export VIBE_API_KEY="sk-or-..."
export VIBE_MODEL="anthropic/claude-3.5-sonnet"

LM Studio

export VIBE_API_URL="http://localhost:1234/v1"
export VIBE_MODEL="local-model"

Groq

export VIBE_API_URL="https://api.groq.com/openai/v1"
export VIBE_API_KEY="gsk_..."
export VIBE_MODEL="llama-3.1-70b-versatile"

Display Configuration

Progress Indicators

Control the progress spinner shown during command generation (default: true):

export VIBE_SHOW_PROGRESS=false

Choose spinner style (default: dots):

export VIBE_PROGRESS_STYLE=arrow  # Options: dots, line, circle, bounce, arrow, runes

Available Styles:

  • dots - ⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏
  • line - - \ | /
  • circle - ◐ ◓ ◑ ◒
  • bounce - ⠁ ⠂ ⠄ ⠂
  • arrow - ← ↖ ↑ ↗ → ↘ ↓ ↙
  • runes - ᛜ ᛃ ᛋ (Norse runes)

Streaming Output

Enable typewriter effect for command output (default: true):

export VIBE_STREAM_OUTPUT=false

Control streaming speed (default: 20ms):

export VIBE_STREAM_DELAY=10ms  # Faster
export VIBE_STREAM_DELAY=50ms  # Slower

Show/Hide Explanations

Control whether command explanations are displayed (default: true):

export VIBE_SHOW_EXPLANATION=false

Show/Hide Warnings

Control whether warnings are shown for dangerous commands (default: true):

export VIBE_SHOW_WARNINGS=false

Behavior Configuration

Interactive Mode

Require confirmation before inserting commands (default: false):

export VIBE_INTERACTIVE=true

When enabled, vibe will show the command and ask for confirmation before inserting it into your prompt.

Query History

Control query history tracking (default: true):

export VIBE_ENABLE_HISTORY=false  # Disable history

Set maximum number of history entries (default: 100):

export VIBE_HISTORY_SIZE=200

Customize the history keybindings:

export VIBE_HISTORY_KEY="^R"      # Use Ctrl+R for history menu (default: ^Xh)
export VIBE_REGENERATE_KEY="^[r"  # Use Alt+R for quick regenerate (default: ^Xg)

Note: Avoid using ^H (Ctrl+H) as it conflicts with Backspace.

Performance Configuration

Cache Settings

Enable/disable response caching (default: true):

export VIBE_ENABLE_CACHE=false

Set cache lifetime (default: 24h):

export VIBE_CACHE_TTL=12h

Caching dramatically improves performance for repeated queries. Cached responses are 100-400x faster.

API Settings

Set request timeout (default: 30s):

export VIBE_TIMEOUT=60s

Set generation temperature (default: 0.7):

export VIBE_TEMPERATURE=0.3

Lower temperature = more deterministic, higher = more creative.

Set maximum response tokens (default: 1000):

export VIBE_MAX_TOKENS=1000

Advanced Configuration

Parsing & Reliability

Control how vibe handles LLM responses (defaults are recommended):

# Max retry attempts for failed parsing (default: 3)
export VIBE_MAX_RETRIES=5

# Extract JSON from corrupted responses (default: true)
export VIBE_ENABLE_JSON_EXTRACTION=true

# Validate response structure (default: true)
export VIBE_STRICT_VALIDATION=true

# Use JSON schema for structured responses (default: true)
export VIBE_USE_STRUCTURED_OUTPUT=true

Debug & Troubleshooting

Enable detailed logging for debugging parsing issues:

# Enable debug logging (default: false)
export VIBE_DEBUG_LOGS=true

# Show retry progress during generation (default: true)
export VIBE_SHOW_RETRY_STATUS=true

When VIBE_DEBUG_LOGS=true, vibe will log:

  • Raw LLM responses
  • Parsing attempts and failures
  • Which fallback layer succeeded
  • Extracted/cleaned JSON content

Configuration Reference

VariableDefaultDescription
API Configuration
VIBE_API_URLhttp://localhost:11434/v1API endpoint URL
VIBE_API_KEY""API key (if required)
VIBE_MODELllama3:8bModel to use
VIBE_TEMPERATURE0.2Generation temperature (0.0-2.0)
VIBE_MAX_TOKENS1000Max response tokens
VIBE_TIMEOUT30sRequest timeout
Display Options
VIBE_SHOW_EXPLANATIONtrueShow command explanations
VIBE_SHOW_WARNINGStrueShow warnings for dangerous commands
VIBE_SHOW_PROGRESStrueShow progress spinner during generation
VIBE_PROGRESS_STYLEdotsSpinner style: dots, line, circle, bounce, arrow
VIBE_STREAM_OUTPUTtrueStream output with typewriter effect
VIBE_STREAM_DELAY20msDelay between streamed words
Behavior
VIBE_INTERACTIVEfalseConfirm before inserting command
VIBE_USE_STRUCTURED_OUTPUTtrueUse JSON schema for structured responses
VIBE_ENABLE_CACHEtrueEnable response caching
VIBE_CACHE_TTL24hCache lifetime
History
VIBE_ENABLE_HISTORYtrueEnable query history tracking
VIBE_HISTORY_SIZE100Maximum number of history entries
VIBE_HISTORY_KEY^Xh (Ctrl+X H)Keybinding for history menu
VIBE_REGENERATE_KEY^Xg (Ctrl+X G)Keybinding to regenerate last command
Parsing & Retry
VIBE_MAX_RETRIES3Max retry attempts for failed parsing
VIBE_ENABLE_JSON_EXTRACTIONtrueExtract JSON from corrupted responses
VIBE_STRICT_VALIDATIONtrueValidate response structure
VIBE_SHOW_RETRY_STATUStrueShow retry progress during generation
Debugging
VIBE_DEBUG_LOGSfalseEnable debug logging for troubleshooting

OS-Aware Command Generation

vibe automatically detects your operating system and shell to generate commands that work on YOUR system:

  • macOS: Uses BSD utilities (e.g., find without -printf, sed -i '')
  • Linux: Uses GNU utilities (e.g., find -printf, sed -i)
  • Shell-specific: Generates syntax appropriate for zsh, bash, etc.

This detection happens automatically - no configuration needed! Commands are tailored to your environment.

Example Configuration

Here’s a complete example configuration in your ~/.zshrc:

# vibe configuration
export VIBE_API_URL="https://api.openai.com/v1"
export VIBE_API_KEY="sk-..."
export VIBE_MODEL="gpt-4"
export VIBE_TEMPERATURE=0.2
export VIBE_SHOW_EXPLANATION=true
export VIBE_SHOW_PROGRESS=true
export VIBE_PROGRESS_STYLE=dots
export VIBE_STREAM_OUTPUT=true
export VIBE_STREAM_DELAY=20ms
export VIBE_INTERACTIVE=false
export VIBE_ENABLE_CACHE=true
export VIBE_CACHE_TTL=24h
export VIBE_ENABLE_HISTORY=true
export VIBE_HISTORY_SIZE=100
export VIBE_HISTORY_KEY="^Xh"
export VIBE_REGENERATE_KEY="^Xg"