axonhub / config.example.yml
llzai's picture
Upload 1793 files
9853396 verified
# AxonHub Configuration Example
# Copy this file to config.yml and modify as needed
# Server configuration
server:
host: "0.0.0.0" # Server host (env: AXONHUB_SERVER_HOST)
port: 8090 # Server port (env: AXONHUB_SERVER_PORT)
name: "AxonHub" # Server name (env: AXONHUB_SERVER_NAME)
base_path: "" # Base path for API routes (env: AXONHUB_SERVER_BASE_PATH)
request_timeout: "30s" # Request timeout duration (env: AXONHUB_SERVER_REQUEST_TIMEOUT)
llm_request_timeout: "600s" # LLM request timeout duration (env: AXONHUB_SERVER_LLM_REQUEST_TIMEOUT)
trace:
thread_header: "AH-Thread-Id" # Thread ID header name (env: AXONHUB_SERVER_TRACE_THREAD_HEADER)
trace_header: "AH-Trace-Id" # Trace ID header name (env: AXONHUB_SERVER_TRACE_TRACE_HEADER)
extra_trace_headers: [] # Extra trace headers (env: AXONHUB_SERVER_TRACE_EXTRA_TRACE_HEADERS)
extra_trace_body_fields: [] # Extra trace body fields (env: AXONHUB_SERVER_TRACE_EXTRA_TRACE_BODY_FIELDS)
claude_code_trace_enabled: false # Enable extracting trace IDs from Claude Code request metadata (env: AXONHUB_SERVER_TRACE_CLAUDE_CODE_TRACE_ENABLED)
codex_trace_enabled: false # Enable extracting trace IDs from Codex Session_id header (env: AXONHUB_SERVER_TRACE_CODEX_TRACE_ENABLED)
debug: false # Enable debug mode (env: AXONHUB_SERVER_DEBUG)
cors:
enabled: true # Enable CORS middleware (env: AXONHUB_SERVER_CORS_ENABLED)
debug: false # Enable CORS debug logging (env: AXONHUB_SERVER_CORS_DEBUG)
allowed_origins: # Allowed origins for CORS (env: AXONHUB_SERVER_CORS_ALLOWED_ORIGINS)
- "http://localhost:3000"
- "http://localhost:5173"
allowed_methods: # Allowed HTTP methods (env: AXONHUB_SERVER_CORS_ALLOWED_METHODS)
- "GET"
- "POST"
- "DELETE"
- "PATCH"
- "PUT"
- "OPTIONS"
- "HEAD"
allowed_headers: # Allowed headers (env: AXONHUB_SERVER_CORS_ALLOWED_HEADERS)
- "Content-Type"
- "Authorization"
- "X-API-Key"
- "X-Goog-Api-Key"
- "X-Project-ID"
- "AH-Thread-Id"
- "AH-Trace-Id"
# Add any other headers your frontend sends
exposed_headers: [] # Exposed headers (env: AXONHUB_SERVER_CORS_EXPOSED_HEADERS)
allow_credentials: true # Allow credentials (env: AXONHUB_SERVER_CORS_ALLOW_CREDENTIALS)
max_age: 1m # Max age for preflight cache in seconds (env: AXONHUB_SERVER_CORS_MAX_AGE)
# Database configuration
db:
dialect: "sqlite3" # Database dialect: sqlite3, postgres, mysql (env: AXONHUB_DB_DIALECT)
dsn: "file:axonhub.db?cache=shared&_fk=1" # Database connection string (env: AXONHUB_DB_DSN)
debug: false # Enable database debug logging (env: AXONHUB_DB_DEBUG)
# Cache configuration
cache:
# One of: memory, redis, two-level (memory + redis)
mode: "memory" # (env: AXONHUB_CACHE_MODE)
# Memory cache configuration
memory:
expiration: "5s" # Memory cache TTL (env: AXONHUB_CACHE_MEMORY_EXPIRATION)
cleanup_interval: "10m" # Memory cache cleanup interval (env: AXONHUB_CACHE_MEMORY_CLEANUP_INTERVAL)
# Redis cache configuration
redis:
# Simple mode: Use addr for plain host:port
addr: "" # Redis address (host:port) (env: AXONHUB_CACHE_REDIS_ADDR)
# URL mode: Use url for full redis:// or rediss:// URLs (takes priority over addr)
# Supported formats:
# - "redis://127.0.0.1:6379"
# - "rediss://127.0.0.1:6380" (auto-enables TLS)
# - "redis://user:pass@127.0.0.1:6379/0"
url: "" # Redis URL (env: AXONHUB_CACHE_REDIS_URL)
# Optional overrides (apply to both addr and url modes)
username: "" # Overrides URL username (env: AXONHUB_CACHE_REDIS_USERNAME)
password: "" # Overrides URL password (env: AXONHUB_CACHE_REDIS_PASSWORD)
db: 0 # Overrides URL /db (env: AXONHUB_CACHE_REDIS_DB)
tls: false # Enable TLS for addr mode (env: AXONHUB_CACHE_REDIS_TLS)
tls_insecure_skip_verify: false # Skip TLS cert verification (env: AXONHUB_CACHE_REDIS_TLS_INSECURE_SKIP_VERIFY)
expiration: "30m" # Redis cache TTL (env: AXONHUB_CACHE_REDIS_EXPIRATION)
# Logging configuration
log:
name: "axonhub" # Logger name (env: AXONHUB_LOG_NAME)
debug: false # Enable debug logging (env: AXONHUB_LOG_DEBUG)
level: "info" # Log level: debug, info, warn, error, panic, fatal (env: AXONHUB_LOG_LEVEL)
level_key: "level" # Key name for log level field (env: AXONHUB_LOG_LEVEL_KEY)
time_key: "time" # Key name for timestamp field (env: AXONHUB_LOG_TIME_KEY)
caller_key: "label" # Key name for caller info field (env: AXONHUB_LOG_CALLER_KEY)
function_key: "" # Key name for function field (env: AXONHUB_LOG_FUNCTION_KEY)
name_key: "logger" # Key name for logger name field (env: AXONHUB_LOG_NAME_KEY)
encoding: "json" # Log encoding: json, console, console_json (env: AXONHUB_LOG_ENCODING)
includes: [] # Logger names to include (env: AXONHUB_LOG_INCLUDES)
excludes: [] # Logger names to exclude (env: AXONHUB_LOG_EXCLUDES)
output: "stdio" # Output target: file or stdio (env: AXONHUB_LOG_OUTPUT)
file: # File-based logging configuration (env prefix: AXONHUB_LOG_FILE_*)
path: "logs/axonhub.log" # Log file path (env: AXONHUB_LOG_FILE_PATH)
max_size: 100 # Max size in MB before rotation (env: AXONHUB_LOG_FILE_MAX_SIZE)
max_age: 30 # Max age in days to retain (env: AXONHUB_LOG_FILE_MAX_AGE)
max_backups: 10 # Max number of old log files to retain (env: AXONHUB_LOG_FILE_MAX_BACKUPS)
local_time: true # Use local time for rotated files (env: AXONHUB_LOG_FILE_LOCAL_TIME)
# Metrics configuration
metrics:
enabled: false # Enable metrics collection (env: AXONHUB_METRICS_ENABLED)
exporter:
type: "oltphttp" # Metrics exporter type: prometheus, console (env: AXONHUB_METRICS_EXPORTER_TYPE)
endpoint: "localhost:8080" # Metrics exporter endpoint (env: AXONHUB_METRICS_EXPORTER_ENDPOINT)
insecure: true # Enable insecure connection (env: AXONHUB_METRICS_EXPORTER_INSECURE)
# Garbage Collection configuration
gc:
cron: "0 2 * * *" # Cron expression for GC execution (env: AXONHUB_GC_CRON)
# This example runs daily at 2:00 AM
# Format: minute hour day month day_of_week
# Examples:
# "0 2 * * *" - Daily at 2:00 AM
# "0 3 * * 0" - Weekly on Sunday at 3:00 AM
# "0 4 1 * *" - Monthly on 1st day at 4:00 AM
# Provider Quota configuration
provider_quota:
check_interval: "20m" # Interval for checking provider quota status (env: AXONHUB_PROVIDER_QUOTA_CHECK_INTERVAL)
# Supported values: 1m, 2m, 3m, 4m, 5m, 6m, 10m, 12m, 15m, 20m, 30m, 1h, 2h, etc.
# Default: 20m
# Longer intervals reduce API calls but show less fresh quota data
# Environment Variable Examples:
# export AXONHUB_SERVER_PORT=8080
# export AXONHUB_DB_DSN="postgres://user:pass@localhost/axonhub?sslmode=disable"
# export AXONHUB_LOG_LEVEL="debug"
# export AXONHUB_LOG_ENCODING="console"
# export AXONHUB_LOG_OUTPUT="stdio" # or "file"
# export AXONHUB_LOG_FILE_PATH="/var/log/axonhub/axonhub.log"
# export AXONHUB_LOG_FILE_MAX_SIZE=200
# export AXONHUB_LOG_FILE_MAX_AGE=14
# export AXONHUB_LOG_FILE_MAX_BACKUPS=7
# export AXONHUB_SERVER_TRACE_HEADER="X-Trace-ID"
# export AXONHUB_METRICS_ENABLED=false
# export AXONHUB_GC_CRON="0 3 * * 0" # Run weekly on Sunday at 3:00 AM