CodeWave Configuration Guide
November 8, 2025 · View on GitHub
Complete guide to configuring CodeWave for your environment and workflow.
Table of Contents
- Quick Start
- Configuration Methods
- Configuration Options
- LLM Provider Setup
- Advanced Configuration
- Environment Variables
- Troubleshooting
Quick Start
First-Time Setup
codewave config
Follow the interactive wizard:
-
Choose LLM Provider
? Which LLM provider do you want to use? ❯ Anthropic Claude (recommended) OpenAI GPT-4 Google Gemini -
Enter API Key
? Enter your Anthropic API key: sk-ant-... -
Choose Model
? Which Claude model do you want to use? ❯ claude-haiku-4-5-20251001 (recommended - cost-optimized) claude-sonnet-4-5-20250929 (best balance) claude-opus-4-1-20250805 (maximum quality)Model Recommendations:
- Haiku 4.5 (Default): 6x cheaper than Sonnet. Multi-agent discussion compensates for lower per-model capability.
- Sonnet 4.5: Best balance of quality and cost (~4x Haiku)
- Opus 4.1: Maximum quality output (~19x Haiku cost)
-
Configure Defaults (optional)
? Output directory (.evaluated-commits): . ? Batch size (10): 10 ? Enable RAG for large diffs? (yes): yes
That's it! You're ready to evaluate commits.
Configuration Methods
1. Interactive CLI Setup
codewave config
Interactive wizard for complete setup. Best for first-time configuration.
2. View Current Configuration
codewave config show
Displays all current settings:
CodeWave Configuration
=====================
LLM Provider: anthropic
Model: claude-3-5-sonnet-20241022
Output Directory: .evaluated-commits
Batch Size: 10
Enable RAG: true
RAG Chunk Size: 2000
Verbose: false
3. Set Individual Values
codewave config set <key> <value>
Examples:
# Change model
codewave config set model claude-3-opus-20250219
# Change output directory
codewave config set output-directory ./reports
# Enable verbose logging
codewave config set verbose true
# Change RAG chunk size
codewave config set rag-chunk-size 3000
4. Reset to Defaults
codewave config reset
Resets all configuration to factory defaults. Warning: You'll need to reconfigure API keys.
5. Environment Variables
Set environment variables to override configuration:
export CODEWAVE_LLM_PROVIDER=anthropic
export CODEWAVE_API_KEY=sk-ant-...
export CODEWAVE_MODEL=claude-3-5-sonnet-20241022
codewave evaluate HEAD
Configuration Options
Core LLM Settings
llmProvider
Type: 'anthropic' | 'openai' | 'google' | 'xai'
Default: 'anthropic'
Env: CODEWAVE_LLM_PROVIDER
LLM provider to use for agent conversations.
Supported Providers:
anthropic- Recommended (Haiku 4.5 is most cost-effective)openai- Alternative with GPT-4o modelsgoogle- Gemini models for advanced reasoningxai- Grok models for specialized use cases
codewave config set llm-provider openai
codewave config set llm-provider google
model
Type: string
Default: 'claude-haiku-4-5-20251001'
Env: CODEWAVE_MODEL
Available Anthropic Models:
claude-haiku-4-5-20251001- Cost-optimized (Recommended)claude-sonnet-4-5-20250929- Best balanceclaude-opus-4-1-20250805- Maximum quality
Available OpenAI Models:
gpt-4o-mini- Cost-optimized (Recommended)gpt-4o- Best balanceo3-mini-2025-01-31- Advanced reasoning, cost-efficiento3- Maximum reasoning capability
Available Google Models:
gemini-2.5-flash-lite- Most efficient (Recommended)gemini-2.5-flash- Best balancegemini-2.5-pro- Best reasoning
Available xAI Models:
grok-4-fast-non-reasoning- Cost-optimized (Recommended)grok-4.2- Polished versiongrok-4-0709- Advanced reasoning
Specific model to use with the chosen provider.
# Anthropic
codewave config set model claude-3-opus-20250219
# OpenAI
codewave config set model gpt-4o
# Google
codewave config set model gemini-2.0-flash
apiKey
Type: string
Env: CODEWAVE_API_KEY
API key for the chosen LLM provider. Never store in version control.
codewave config set api-key sk-ant-...
Security Note: Configuration is stored in:
- macOS/Linux:
~/.codewave/config.json - Windows:
%APPDATA%\codewave\config.json
The configuration file is user-readable. Store sensitive keys in environment variables when possible.
apiBaseUrl
Type: string | null
Default: null
Env: CODEWAVE_API_BASE_URL
Custom API endpoint (for self-hosted LLM services or proxies).
codewave config set api-base-url https://proxy.company.com/api
Output Settings
outputDirectory
Type: string
Default: .evaluated-commits
Env: CODEWAVE_OUTPUT_DIR
Directory where evaluation results are saved.
codewave config set output-directory ./reports
reportFormat
Type: 'html' | 'json' | 'markdown' | 'all'
Default: 'all'
Env: CODEWAVE_REPORT_FORMAT
Format(s) to generate for each evaluation.
# Generate only HTML reports
codewave config set report-format html
# Generate JSON for CI/CD integration
codewave config set report-format json
# Generate all formats
codewave config set report-format all
Token & Cost Management
maxTokensPerRequest
Type: number
Default: 4000
Env: CODEWAVE_MAX_TOKENS
Maximum tokens to request from LLM per API call.
codewave config set max-tokens 8000
defaultBatchSize
Type: number
Default: 10
Env: CODEWAVE_BATCH_SIZE
Default number of commits to evaluate in batch mode.
codewave config set batch-size 50
parallelEvaluations
Type: number
Default: 3
Min: 1
Max: 5
Env: CODEWAVE_PARALLEL
Number of commits to evaluate in parallel.
codewave config set parallel-evaluations 5
RAG Settings
enableRag
Type: boolean
Default: true
Env: CODEWAVE_ENABLE_RAG
Enable Retrieval-Augmented Generation for large diffs.
codewave config set enable-rag true
ragChunkSize
Type: number
Default: 2000
Env: CODEWAVE_RAG_CHUNK_SIZE
Characters per chunk when splitting large diffs.
codewave config set rag-chunk-size 3000
ragThreshold
Type: number
Default: 102400
Env: CODEWAVE_RAG_THRESHOLD
Diff size (in bytes) above which RAG is activated.
# Activate RAG for diffs > 50KB
codewave config set rag-threshold 51200
vectorStoreType
Type: 'memory' | 'disk'
Default: 'memory'
Env: CODEWAVE_VECTOR_STORE_TYPE
Backend for vector storage.
codewave config set vector-store-type memory
Logging & Debug
verbose
Type: boolean
Default: false
Env: CODEWAVE_VERBOSE
Enable detailed logging of evaluation process.
codewave config set verbose true
Debug Output Includes:
- Agent prompts and responses
- Token counts and costs
- LLM API interactions
- Timing information
- Error stack traces
LLM Provider Setup
Anthropic Claude (Recommended)
Get API Key
- Visit console.anthropic.com
- Create account or log in
- Go to API Keys section
- Click Create API Key
- Copy the key (starts with
sk-ant-)
Configuration
codewave config set llm-provider anthropic
codewave config set api-key sk-ant-...
codewave config set model claude-3-5-sonnet-20241022
Available Models
-
claude-3-5-sonnet-20241022 ⭐ (Recommended)
- Best balance of speed, quality, and cost
- $3/M input, $15/M output tokens
-
claude-3-opus-20250219
- Most capable model
- Slower and more expensive
- $15/M input, $75/M output tokens
-
claude-3-haiku-20240307
- Fastest and cheapest
- Lower quality for complex reasoning
- $0.80/M input, $4/M output tokens
OpenAI GPT-4
Get API Key
- Visit platform.openai.com
- Create account or log in
- Go to API Keys section
- Click Create Secret Key
- Copy the key (starts with
sk-)
Configuration
codewave config set llm-provider openai
codewave config set api-key sk-...
codewave config set model gpt-4o
Available Models
-
gpt-4o ⭐ (Recommended)
- Latest and most capable
- $5/M input, $15/M output tokens
-
gpt-4-turbo
- Balanced speed and quality
- $10/M input, $30/M output tokens
-
gpt-4
- Original GPT-4
- Most expensive
- $30/M input, $60/M output tokens
Note: Rate limits apply. Start with lower parallelization if you hit limits.
Google Gemini
Get API Key
- Visit ai.google.dev
- Create account or log in
- Go to API Keys section
- Click Create API Key
- Copy the key
Configuration
codewave config set llm-provider google
codewave config set api-key ...
codewave config set model gemini-2.0-flash
Available Models
-
gemini-2.0-flash ⭐ (Recommended)
- Very fast and cost-effective
- $0.075/M input, $0.3/M output tokens
-
gemini-1.5-pro
- More capable, slower
- $1.25/M input, $5/M output tokens
Advanced Configuration
Custom API Endpoints
For self-hosted or proxy scenarios:
codewave config set api-base-url https://custom-llm.company.com/api
This overrides the default provider endpoints.
Environment-Specific Configs
Development
codewave config set verbose true
codewave config set model claude-3-haiku-20240307 # Cheaper
codewave config set rag-chunk-size 1000 # Smaller chunks
Production
codewave config set verbose false
codewave config set model claude-3-5-sonnet-20241022 # Balanced
codewave config set parallel-evaluations 5 # Max parallelization
CI/CD Integration
codewave config set report-format json
codewave config set output-directory ./ci-reports
codewave config set batch-size 100
codewave config set parallel-evaluations 3
Model Display and LLM Information
Viewing Which Model is Being Used
The HTML report displays which LLM model was used for each evaluation:
In HTML Report:
- Look at the top of the "Evaluation History" tab header
- Shows format:
🤖 provider/model(e.g.,🤖 openai/gpt-4o-mini) - Helps track which model generated each evaluation
Switching Models
Change Default Model:
codewave config set model claude-sonnet-4-5-20250929
Override for Single Evaluation:
codewave evaluate HEAD --model gpt-4o-mini
Switch to Different Provider:
# Switch to OpenAI
codewave config set llm-provider openai
codewave config set api-key sk-...
codewave config set model gpt-4o-mini
# Switch back to Anthropic
codewave config set llm-provider anthropic
Model Performance Comparison
| Model | Provider | Speed | Quality | Cost | Best For |
|---|---|---|---|---|---|
| Haiku 4.5 | Anthropic | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | Budget-conscious, large batches |
| Sonnet 4.5 | Anthropic | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | Balanced (recommended) |
| Opus 4.1 | Anthropic | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | Maximum accuracy |
| GPT-4o-mini | OpenAI | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | Cost-effective alternative |
| GPT-4o | OpenAI | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | High quality |
| Gemini 2.0 Flash | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Most cost-effective |
Cost Tracking and Token Usage
Understanding Token Usage
Every evaluation displays token information:
In HTML Report:
- Check the "Evaluation History" tab
- Shows: Input Tokens + Output Tokens = Total Tokens
- See cumulative cost for all evaluations
In results.json:
{
"tokenUsage": {
"inputTokens": 54128,
"outputTokens": 1512,
"totalTokens": 55640
},
"totalCost": 0.1851
}
Cost Estimation by Model
Per Single Commit Evaluation:
Haiku 4.5: \$0.01-0.03 (most affordable)
Gemini 2.0 Flash: \$0.02-0.04
Sonnet 4.5: \$0.05-0.15
GPT-4o-mini: \$0.02-0.05
GPT-4o: \$0.10-0.30
Opus 4.1: \$0.10-0.50 (most expensive)
For Batch Processing:
50 commits with Haiku: \$0.50-1.50
100 commits with Sonnet: \$5-15
1,000 commits with Gemini: \$20-40
Tracking Total Costs
Extract cost from all evaluations:
# Sum costs from all evaluations
jq -s '[.[].totalCost] | add' .evaluated-commits/*/results.json
# Get cost per commit
for file in .evaluated-commits/*/results.json; do
commit=$(jq -r '.metadata.commitHash' "$file" | cut -c1-8)
cost=$(jq '.totalCost' "$file")
echo "$commit: \$$cost"
done
Track monthly spending:
# Get all costs from current month
jq -r 'select(.timestamp | startswith("2025-11")) | .totalCost' \
.evaluated-commits/*/results.json | \
awk '{sum+=\$1} END {print "Total: $" sum}'
Cost Optimization
Reduce Costs:
- Use cheaper model: Haiku is 6x cheaper than Sonnet
- Reduce parallelization: Fewer simultaneous evaluations
- Increase batch size: More commits per run
- Enable RAG: Reduces tokens for large diffs
Example: Optimize for Budget
codewave config set model claude-haiku-4-5-20251001
codewave config set llm-provider google # Or Gemini for cheaper
codewave batch-evaluate --count 100 --parallel 2
Example: Optimize for Quality
codewave config set model claude-opus-4-1-20250805
codewave batch-evaluate --count 10 --parallel 5
Setting Budget Alerts
Monitor spending with alerts:
#!/bin/bash
# alert-on-cost.sh
THRESHOLD=100 # Alert if total cost exceeds \$100
TOTAL_COST=$(jq -s '[.[].totalCost] | add' \
.evaluated-commits/*/results.json 2>/dev/null || echo 0)
if (( $(echo "$TOTAL_COST > $THRESHOLD" | bc -l) )); then
echo "⚠️ Cost alert: Total spending is $TOTAL_COST"
# Send email, Slack, etc.
fi
Environment Variables
Override any configuration setting using environment variables:
# LLM Settings
export CODEWAVE_LLM_PROVIDER=anthropic
export CODEWAVE_API_KEY=sk-ant-...
export CODEWAVE_MODEL=claude-3-5-sonnet-20241022
export CODEWAVE_API_BASE_URL=https://api.anthropic.com
# Output Settings
export CODEWAVE_OUTPUT_DIR=./reports
export CODEWAVE_REPORT_FORMAT=json
# Token & Cost
export CODEWAVE_MAX_TOKENS=4000
export CODEWAVE_BATCH_SIZE=10
export CODEWAVE_PARALLEL=3
# RAG Settings
export CODEWAVE_ENABLE_RAG=true
export CODEWAVE_RAG_CHUNK_SIZE=2000
export CODEWAVE_RAG_THRESHOLD=102400
export CODEWAVE_VECTOR_STORE_TYPE=memory
# Logging
export CODEWAVE_VERBOSE=false
# Run evaluation
codewave evaluate HEAD
Priority Order:
- Environment variables (highest)
- CLI arguments
- Configuration file
- Defaults (lowest)
Configuration File Format
Located at:
- macOS/Linux:
~/.codewave/config.json - Windows:
%APPDATA%\codewave\config.json
Example Configuration File
{
"llmProvider": "anthropic",
"model": "claude-3-5-sonnet-20241022",
"apiKey": "sk-ant-...",
"apiBaseUrl": null,
"outputDirectory": ".evaluated-commits",
"defaultBatchSize": 10,
"parallelEvaluations": 3,
"maxTokensPerRequest": 4000,
"enableRag": true,
"ragChunkSize": 2000,
"ragThreshold": 102400,
"vectorStoreType": "memory",
"reportFormat": "all",
"verbose": false,
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T14:20:00Z"
}
Backup Configuration
# Backup
cp ~/.codewave/config.json ~/.codewave/config.json.backup
# Restore
cp ~/.codewave/config.json.backup ~/.codewave/config.json
Troubleshooting
"API Key not found"
Solution:
# Run config setup
codewave config
# Or set environment variable
export CODEWAVE_API_KEY=sk-ant-...
codewave evaluate HEAD
"Invalid API key"
Solution:
- Verify key in configuration:
codewave config show - Check key is still valid on provider website
- Regenerate key if needed
- Update:
codewave config set api-key new-key
"Rate limit exceeded"
Solution:
# Reduce parallelization
codewave config set parallel-evaluations 1
# Increase batch size but process sequentially
codewave batch-evaluate --count 50 --parallel 1
"Out of memory during batch processing"
Solution:
# Reduce parallelization
codewave config set parallel-evaluations 1
# Reduce batch size
codewave config set batch-size 10
# Run smaller batches
codewave batch-evaluate --count 20
"Evaluations timing out"
Solution:
# Enable RAG for large diffs
codewave config set enable-rag true
# Reduce max tokens
codewave config set max-tokens 3000
# Use faster model
codewave config set model claude-3-haiku-20240307
"Configuration file corrupted"
Solution:
# Reset and reconfigure
codewave config reset
codewave config
Or manually fix the JSON:
# Edit directly
cat ~/.codewave/config.json # Inspect
nano ~/.codewave/config.json # Edit
Performance Tuning
For Speed
# Use fast model
codewave config set model claude-3-haiku-20240307
# Reduce token limit
codewave config set max-tokens 2000
# Maximize parallelization
codewave config set parallel-evaluations 5
# Smaller RAG chunks
codewave config set rag-chunk-size 1000
For Quality
# Use capable model
codewave config set model claude-3-opus-20250219
# Increase token limit
codewave config set max-tokens 8000
# Reduce parallelization (less LLM confusion)
codewave config set parallel-evaluations 1
# Larger RAG chunks
codewave config set rag-chunk-size 3000
For Cost
# Use cheap model
codewave config set model claude-3-haiku-20240307
# Or use Google Gemini
codewave config set llm-provider google
codewave config set model gemini-2.0-flash
# Reduce max tokens
codewave config set max-tokens 2000
# Batch process efficiently
codewave batch-evaluate --parallel 5 --count 100
For more information:
- README.md - Main documentation
- API.md - Programmatic API
- ARCHITECTURE.md - System architecture