hallidda/axonhub
0
1# AxonHub Configuration Example
2# Copy this file to config.yml and modify as needed
3
4# Server configuration
5server:
6 host: "0.0.0.0" # Server host (env: AXONHUB_SERVER_HOST)
7 port: 8090 # Server port (env: AXONHUB_SERVER_PORT)
8 name: "AxonHub" # Server name (env: AXONHUB_SERVER_NAME)
9 base_path: "" # Base path for API routes (env: AXONHUB_SERVER_BASE_PATH)
10 request_timeout: "30s" # Request timeout duration (env: AXONHUB_SERVER_REQUEST_TIMEOUT)
11 llm_request_timeout: "600s" # LLM request timeout duration (env: AXONHUB_SERVER_LLM_REQUEST_TIMEOUT)
12 trace:
13 thread_header: "AH-Thread-Id" # Thread ID header name (env: AXONHUB_SERVER_TRACE_THREAD_HEADER)
14 trace_header: "AH-Trace-Id" # Trace ID header name (env: AXONHUB_SERVER_TRACE_TRACE_HEADER)
15 extra_trace_headers: [] # Extra trace headers (env: AXONHUB_SERVER_TRACE_EXTRA_TRACE_HEADERS)
16 extra_trace_body_fields: [] # Extra trace body fields (env: AXONHUB_SERVER_TRACE_EXTRA_TRACE_BODY_FIELDS)
17 claude_code_trace_enabled: false # Enable extracting trace IDs from Claude Code request metadata (env: AXONHUB_SERVER_TRACE_CLAUDE_CODE_TRACE_ENABLED)
18 codex_trace_enabled: false # Enable extracting trace IDs from Codex Session_id header (env: AXONHUB_SERVER_TRACE_CODEX_TRACE_ENABLED)
19 debug: false # Enable debug mode (env: AXONHUB_SERVER_DEBUG)
20 cors:
21 enabled: true # Enable CORS middleware (env: AXONHUB_SERVER_CORS_ENABLED)
22 debug: false # Enable CORS debug logging (env: AXONHUB_SERVER_CORS_DEBUG)
23 allowed_origins: # Allowed origins for CORS (env: AXONHUB_SERVER_CORS_ALLOWED_ORIGINS)
24 - "http://localhost:3000"
25 - "http://localhost:5173"
26 allowed_methods: # Allowed HTTP methods (env: AXONHUB_SERVER_CORS_ALLOWED_METHODS)
27 - "GET"
28 - "POST"
29 - "DELETE"
30 - "PATCH"
31 - "PUT"
32 - "OPTIONS"
33 - "HEAD"
34 allowed_headers: # Allowed headers (env: AXONHUB_SERVER_CORS_ALLOWED_HEADERS)
35 - "Content-Type"
36 - "Authorization"
37 - "X-API-Key"
38 - "X-Goog-Api-Key"
39 - "X-Project-ID"
40 - "AH-Thread-Id"
41 - "AH-Trace-Id"
42 # Add any other headers your frontend sends
43 exposed_headers: [] # Exposed headers (env: AXONHUB_SERVER_CORS_EXPOSED_HEADERS)
44 allow_credentials: true # Allow credentials (env: AXONHUB_SERVER_CORS_ALLOW_CREDENTIALS)
45 max_age: 1m # Max age for preflight cache in seconds (env: AXONHUB_SERVER_CORS_MAX_AGE)
46
47# Database configuration
48db:
49 dialect: "sqlite3" # Database dialect: sqlite3, postgres, mysql (env: AXONHUB_DB_DIALECT)
50 dsn: "file:axonhub.db?cache=shared&_fk=1" # Database connection string (env: AXONHUB_DB_DSN)
51 debug: false # Enable database debug logging (env: AXONHUB_DB_DEBUG)
52
53# Cache configuration
54cache:
55 # One of: memory, redis, two-level (memory + redis)
56 mode: "memory" # (env: AXONHUB_CACHE_MODE)
57
58 # Memory cache configuration
59 memory:
60 expiration: "5s" # Memory cache TTL (env: AXONHUB_CACHE_MEMORY_EXPIRATION)
61 cleanup_interval: "10m" # Memory cache cleanup interval (env: AXONHUB_CACHE_MEMORY_CLEANUP_INTERVAL)
62
63 # Redis cache configuration
64 redis:
65 # Simple mode: Use addr for plain host:port
66 addr: "" # Redis address (host:port) (env: AXONHUB_CACHE_REDIS_ADDR)
67
68 # URL mode: Use url for full redis:// or rediss:// URLs (takes priority over addr)
69 # Supported formats:
70 # - "redis://127.0.0.1:6379"
71 # - "rediss://127.0.0.1:6380" (auto-enables TLS)
72 # - "redis://user:pass@127.0.0.1:6379/0"
73 url: "" # Redis URL (env: AXONHUB_CACHE_REDIS_URL)
74
75 # Optional overrides (apply to both addr and url modes)
76 username: "" # Overrides URL username (env: AXONHUB_CACHE_REDIS_USERNAME)
77 password: "" # Overrides URL password (env: AXONHUB_CACHE_REDIS_PASSWORD)
78 db: 0 # Overrides URL /db (env: AXONHUB_CACHE_REDIS_DB)
79 tls: false # Enable TLS for addr mode (env: AXONHUB_CACHE_REDIS_TLS)
80 tls_insecure_skip_verify: false # Skip TLS cert verification (env: AXONHUB_CACHE_REDIS_TLS_INSECURE_SKIP_VERIFY)
81 expiration: "30m" # Redis cache TTL (env: AXONHUB_CACHE_REDIS_EXPIRATION)
82
83# Logging configuration
84log:
85 name: "axonhub" # Logger name (env: AXONHUB_LOG_NAME)
86 debug: false # Enable debug logging (env: AXONHUB_LOG_DEBUG)
87 level: "info" # Log level: debug, info, warn, error, panic, fatal (env: AXONHUB_LOG_LEVEL)
88 level_key: "level" # Key name for log level field (env: AXONHUB_LOG_LEVEL_KEY)
89 time_key: "time" # Key name for timestamp field (env: AXONHUB_LOG_TIME_KEY)
90 caller_key: "label" # Key name for caller info field (env: AXONHUB_LOG_CALLER_KEY)
91 function_key: "" # Key name for function field (env: AXONHUB_LOG_FUNCTION_KEY)
92 name_key: "logger" # Key name for logger name field (env: AXONHUB_LOG_NAME_KEY)
93 encoding: "json" # Log encoding: json, console, console_json (env: AXONHUB_LOG_ENCODING)
94 includes: [] # Logger names to include (env: AXONHUB_LOG_INCLUDES)
95 excludes: [] # Logger names to exclude (env: AXONHUB_LOG_EXCLUDES)
96 output: "stdio" # Output target: file or stdio (env: AXONHUB_LOG_OUTPUT)
97 file: # File-based logging configuration (env prefix: AXONHUB_LOG_FILE_*)
98 path: "logs/axonhub.log" # Log file path (env: AXONHUB_LOG_FILE_PATH)
99 max_size: 100 # Max size in MB before rotation (env: AXONHUB_LOG_FILE_MAX_SIZE)
100 max_age: 30 # Max age in days to retain (env: AXONHUB_LOG_FILE_MAX_AGE)
101 max_backups: 10 # Max number of old log files to retain (env: AXONHUB_LOG_FILE_MAX_BACKUPS)
102 local_time: true # Use local time for rotated files (env: AXONHUB_LOG_FILE_LOCAL_TIME)
103
104# Metrics configuration
105metrics:
106 enabled: false # Enable metrics collection (env: AXONHUB_METRICS_ENABLED)
107 exporter:
108 type: "oltphttp" # Metrics exporter type: prometheus, console (env: AXONHUB_METRICS_EXPORTER_TYPE)
109 endpoint: "localhost:8080" # Metrics exporter endpoint (env: AXONHUB_METRICS_EXPORTER_ENDPOINT)
110 insecure: true # Enable insecure connection (env: AXONHUB_METRICS_EXPORTER_INSECURE)
111
112
113# Garbage Collection configuration
114gc:
115 cron: "0 2 * * *" # Cron expression for GC execution (env: AXONHUB_GC_CRON)
116 # This example runs daily at 2:00 AM
117 # Format: minute hour day month day_of_week
118 # Examples:
119 # "0 2 * * *" - Daily at 2:00 AM
120 # "0 3 * * 0" - Weekly on Sunday at 3:00 AM
121 # "0 4 1 * *" - Monthly on 1st day at 4:00 AM
122
123# Provider Quota configuration
124provider_quota:
125 check_interval: "20m" # Interval for checking provider quota status (env: AXONHUB_PROVIDER_QUOTA_CHECK_INTERVAL)
126 # Supported values: 1m, 2m, 3m, 4m, 5m, 6m, 10m, 12m, 15m, 20m, 30m, 1h, 2h, etc.
127 # Default: 20m
128 # Longer intervals reduce API calls but show less fresh quota data
129
130# Environment Variable Examples:
131# export AXONHUB_SERVER_PORT=8080
132# export AXONHUB_DB_DSN="postgres://user:pass@localhost/axonhub?sslmode=disable"
133# export AXONHUB_LOG_LEVEL="debug"
134# export AXONHUB_LOG_ENCODING="console"
135# export AXONHUB_LOG_OUTPUT="stdio" # or "file"
136# export AXONHUB_LOG_FILE_PATH="/var/log/axonhub/axonhub.log"
137# export AXONHUB_LOG_FILE_MAX_SIZE=200
138# export AXONHUB_LOG_FILE_MAX_AGE=14
139# export AXONHUB_LOG_FILE_MAX_BACKUPS=7
140# export AXONHUB_SERVER_TRACE_HEADER="X-Trace-ID"
141# export AXONHUB_METRICS_ENABLED=false
142# export AXONHUB_GC_CRON="0 3 * * 0" # Run weekly on Sunday at 3:00 AM
143 