saigen searches for configuration files in the following order:
~/.saigen/config.yamlor~/.saigen/config.json.saigen.yamlor.saigen.json(in current directory)saigen.yamlorsaigen.json(in current directory)
Configuration files can be in YAML or JSON format. YAML is recommended for readability.
# Configuration version
config_version: "0.1.0"
# Logging configuration
log_level: info # debug, info, warning, error
log_file: ~/.saigen/logs/saigen.log # Optional log file
# LLM Provider Configuration
llm_providers:
openai:
provider: openai
model: gpt-4o-mini
max_tokens: 4000
temperature: 0.1
timeout: 30
max_retries: 3
enabled: true
# api_key: set via OPENAI_API_KEY environment variable
anthropic:
provider: anthropic
model: claude-3-sonnet-20240229
max_tokens: 4000
temperature: 0.1
timeout: 30
max_retries: 3
enabled: false
# api_key: set via ANTHROPIC_API_KEY environment variable
ollama:
provider: ollama
api_base: http://localhost:11434
model: llama2
enabled: false
# Repository Configuration
repositories:
ubuntu-main:
name: ubuntu-main
type: apt
platform: linux
url: http://archive.ubuntu.com/ubuntu/dists/jammy/main/binary-amd64/Packages.gz
enabled: true
priority: 10
cache_ttl_hours: 24
timeout: 300
architecture: [amd64]
parsing:
format: text
line_pattern: '^Package:\s*(.+)$'
name_group: 1
version_pattern: '^Version:\s*(.+)$'
description_pattern: '^Description:\s*(.+)$'
metadata:
description: Ubuntu Main Repository
maintainer: Ubuntu
homebrew-core:
name: homebrew-core
type: brew
platform: macos
url: https://formulae.brew.sh/api/formula.json
enabled: true
priority: 10
cache_ttl_hours: 12
parsing:
format: json
field_mapping:
name: name
version: versions.stable
description: desc
homepage: homepage
metadata:
description: Homebrew Core Formulae
maintainer: Homebrew
custom-generic:
name: custom-json-repo
type: generic
platform: linux
url: https://api.example.com/packages.json
enabled: true
priority: 5
cache_ttl_hours: 6
parsing:
format: json
package_path: [packages]
field_mapping:
name: package_name
version: latest_version
description: summary
metadata:
description: Custom JSON Package Repository
# Cache Configuration
cache:
directory: ~/.saigen/cache
max_size_mb: 1000
default_ttl: 3600 # 1 hour
cleanup_interval: 86400 # 24 hours
# RAG (Retrieval-Augmented Generation) Configuration
rag:
enabled: true
index_directory: ~/.saigen/rag_index
embedding_model: sentence-transformers/all-MiniLM-L6-v2
max_context_items: 5
similarity_threshold: 0.7
rebuild_on_startup: false
# Validation Configuration
validation:
schema_path: null # Use built-in schema or path to custom schema
strict_mode: true # Enable strict validation rules
auto_fix_common_issues: true # Automatically fix minor issues
validate_repository_accuracy: true # Check against repository data
show_suggestions: true # Include helpful suggestions in error reports
max_errors: 50 # Maximum number of errors to report
# Generation Configuration
generation:
default_providers: [apt, brew, winget]
output_directory: ./saidata
backup_existing: true
parallel_requests: 3
request_timeout: 120
# Advanced Settings
user_agent: "saigen/0.1.0"
max_concurrent_requests: 5
request_timeout: 30Environment variables override configuration file settings:
OPENAI_API_KEY- OpenAI API keyANTHROPIC_API_KEY- Anthropic API key
SAIGEN_LOG_LEVEL- Override log levelSAIGEN_CACHE_DIR- Override cache directorySAIGEN_OUTPUT_DIR- Override output directory
export OPENAI_API_KEY="sk-..."
export SAIGEN_LOG_LEVEL="debug"
export SAIGEN_CACHE_DIR="/tmp/saigen-cache"
saigen generate nginxsaigen config --showsaigen config --validate-
API Keys: Never store API keys in configuration files. Use environment variables.
-
File Permissions: Configuration files are automatically saved with secure permissions (0o600).
-
Cache Directory: Ensure cache directory has appropriate permissions.
-
Log Files: Be careful with log file locations and permissions if logging sensitive data.
If saigen can't find a configuration file, it will create a default configuration. Check the search paths above.
Use saigen config --validate to check for configuration errors.
Ensure environment variables are set correctly:
echo $OPENAI_API_KEY # Should show your API keyEnsure saigen can write to cache and output directories:
ls -la ~/.saigen/When upgrading saigen, configuration files are automatically migrated to the latest format. Backup your configuration before upgrading:
cp ~/.saigen/config.yaml ~/.saigen/config.yaml.backup