Configuration Reference
This reference covers all configuration options available in Olytix Core, including project configuration files and environment variables.
Project Configuration
The olytix-core_project.yml file defines your project settings and is located at the root of your project directory.
Basic Structure
name: my_analytics
version: 1.0.0
profile: default
config:
# Default settings
default_schema: public
default_materialization: view
# Path configuration
model_paths:
- models
cube_paths:
- cubes
source_paths:
- sources
metric_paths:
- metrics
seed_paths:
- seeds
target_path: target
semantic:
# Semantic layer settings
default_timezone: UTC
auto_generate_cubes: false
cache:
enabled: true
ttl_seconds: 300
lineage:
# Lineage tracking
column_level: true
include_in_manifest: true
experimental:
# Experimental features
{}
Project Configuration Fields
| Field | Type | Default | Description |
|---|---|---|---|
name | string | - | Project name (required) |
version | string | 1.0.0 | Project version |
profile | string | default | Database profile name |
Config Section
| Field | Type | Default | Description |
|---|---|---|---|
default_schema | string | public | Default database schema |
default_materialization | string | view | Default model materialization |
model_paths | list | ["models"] | Directories containing model files |
cube_paths | list | ["cubes"] | Directories containing cube files |
source_paths | list | ["sources"] | Directories containing source files |
metric_paths | list | ["metrics"] | Directories containing metric files |
seed_paths | list | ["seeds"] | Directories containing seed files |
target_path | string | target | Output directory for compiled artifacts |
Semantic Section
| Field | Type | Default | Description |
|---|---|---|---|
default_timezone | string | UTC | Default timezone for time operations |
auto_generate_cubes | boolean | false | Automatically generate cubes from models |
cache.enabled | boolean | true | Enable query result caching |
cache.ttl_seconds | integer | 300 | Cache time-to-live in seconds |
Lineage Section
| Field | Type | Default | Description |
|---|---|---|---|
column_level | boolean | true | Enable column-level lineage tracking |
include_in_manifest | boolean | true | Include lineage in manifest.json |
Environment Variables
Olytix Core uses environment variables with the OLYTIX_ prefix. Nested configuration uses double underscores (__) as delimiters.
Environment
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_ENVIRONMENT | string | development | Environment: development, staging, production |
Metadata Database
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_METADATA_DB__HOST | string | localhost | Metadata database host |
OLYTIX_METADATA_DB__PORT | integer | 5432 | Metadata database port |
OLYTIX_METADATA_DB__DATABASE | string | olytix-core_metadata | Metadata database name |
OLYTIX_METADATA_DB__USER | string | olytix-core | Metadata database user |
OLYTIX_METADATA_DB__PASSWORD | string | - | Metadata database password |
OLYTIX_METADATA_DB__MIN_CONNECTIONS | integer | 5 | Minimum connection pool size |
OLYTIX_METADATA_DB__MAX_CONNECTIONS | integer | 20 | Maximum connection pool size |
OLYTIX_METADATA_DB__CONNECTION_TIMEOUT_SECONDS | float | 10.0 | Connection timeout |
OLYTIX_METADATA_DB__COMMAND_TIMEOUT_SECONDS | float | 60.0 | Command timeout |
OLYTIX_METADATA_DB__IDLE_TIMEOUT_SECONDS | float | 300.0 | Idle connection timeout |
Warehouse Configuration
Warehouse Type
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_WAREHOUSE__TYPE | string | postgresql | Warehouse type: postgresql, snowflake, bigquery, databricks, redshift, duckdb |
PostgreSQL
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_WAREHOUSE__POSTGRESQL__HOST | string | localhost | PostgreSQL host |
OLYTIX_WAREHOUSE__POSTGRESQL__PORT | integer | 5432 | PostgreSQL port |
OLYTIX_WAREHOUSE__POSTGRESQL__DATABASE | string | olytix-core | Database name |
OLYTIX_WAREHOUSE__POSTGRESQL__USER | string | olytix-core | Database user |
OLYTIX_WAREHOUSE__POSTGRESQL__PASSWORD | string | - | Database password |
OLYTIX_WAREHOUSE__POSTGRESQL__MIN_CONNECTIONS | integer | 5 | Minimum connections |
OLYTIX_WAREHOUSE__POSTGRESQL__MAX_CONNECTIONS | integer | 20 | Maximum connections |
Snowflake
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_WAREHOUSE__SNOWFLAKE__ACCOUNT | string | - | Snowflake account identifier |
OLYTIX_WAREHOUSE__SNOWFLAKE__USER | string | - | Snowflake user |
OLYTIX_WAREHOUSE__SNOWFLAKE__PASSWORD | string | - | Snowflake password |
OLYTIX_WAREHOUSE__SNOWFLAKE__WAREHOUSE | string | - | Snowflake warehouse |
OLYTIX_WAREHOUSE__SNOWFLAKE__DATABASE | string | - | Snowflake database |
OLYTIX_WAREHOUSE__SNOWFLAKE__SCHEMA | string | PUBLIC | Snowflake schema |
OLYTIX_WAREHOUSE__SNOWFLAKE__ROLE | string | - | Snowflake role |
OLYTIX_WAREHOUSE__SNOWFLAKE__AUTH_METHOD | string | password | Auth method: password, externalbrowser, oauth, key_pair |
OLYTIX_WAREHOUSE__SNOWFLAKE__PRIVATE_KEY_PATH | string | - | Path to private key for key_pair auth |
OLYTIX_WAREHOUSE__SNOWFLAKE__MIN_CONNECTIONS | integer | 1 | Minimum connections |
OLYTIX_WAREHOUSE__SNOWFLAKE__MAX_CONNECTIONS | integer | 10 | Maximum connections |
OLYTIX_WAREHOUSE__SNOWFLAKE__CONNECTION_TIMEOUT_SECONDS | float | 30.0 | Connection timeout |
OLYTIX_WAREHOUSE__SNOWFLAKE__QUERY_TIMEOUT_SECONDS | float | 300.0 | Query timeout |
BigQuery
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_WAREHOUSE__BIGQUERY__PROJECT | string | - | GCP project ID |
OLYTIX_WAREHOUSE__BIGQUERY__DATASET | string | - | Default dataset |
OLYTIX_WAREHOUSE__BIGQUERY__LOCATION | string | US | BigQuery location |
OLYTIX_WAREHOUSE__BIGQUERY__CREDENTIALS_PATH | string | - | Path to service account JSON |
OLYTIX_WAREHOUSE__BIGQUERY__QUERY_TIMEOUT_SECONDS | float | 300.0 | Query timeout |
OLYTIX_WAREHOUSE__BIGQUERY__MAXIMUM_BYTES_BILLED | integer | - | Maximum bytes billed per query |
Databricks
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_WAREHOUSE__DATABRICKS__HOST | string | - | Databricks workspace host |
OLYTIX_WAREHOUSE__DATABRICKS__HTTP_PATH | string | - | SQL warehouse HTTP path |
OLYTIX_WAREHOUSE__DATABRICKS__ACCESS_TOKEN | string | - | Personal access token |
OLYTIX_WAREHOUSE__DATABRICKS__CATALOG | string | main | Unity Catalog name |
OLYTIX_WAREHOUSE__DATABRICKS__SCHEMA | string | default | Default schema |
OLYTIX_WAREHOUSE__DATABRICKS__CONNECTION_TIMEOUT_SECONDS | float | 30.0 | Connection timeout |
OLYTIX_WAREHOUSE__DATABRICKS__QUERY_TIMEOUT_SECONDS | float | 300.0 | Query timeout |
Redshift
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_WAREHOUSE__REDSHIFT__HOST | string | - | Redshift cluster endpoint |
OLYTIX_WAREHOUSE__REDSHIFT__PORT | integer | 5439 | Redshift port |
OLYTIX_WAREHOUSE__REDSHIFT__DATABASE | string | dev | Database name |
OLYTIX_WAREHOUSE__REDSHIFT__USER | string | - | Database user |
OLYTIX_WAREHOUSE__REDSHIFT__PASSWORD | string | - | Database password |
OLYTIX_WAREHOUSE__REDSHIFT__SCHEMA | string | public | Default schema |
OLYTIX_WAREHOUSE__REDSHIFT__SSL | boolean | true | Enable SSL |
OLYTIX_WAREHOUSE__REDSHIFT__MIN_CONNECTIONS | integer | 1 | Minimum connections |
OLYTIX_WAREHOUSE__REDSHIFT__MAX_CONNECTIONS | integer | 10 | Maximum connections |
DuckDB
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_WAREHOUSE__DUCKDB__DATABASE | string | :memory: | Database path or :memory: |
OLYTIX_WAREHOUSE__DUCKDB__SCHEMA | string | main | Default schema |
OLYTIX_WAREHOUSE__DUCKDB__READ_ONLY | boolean | false | Read-only mode |
OLYTIX_WAREHOUSE__DUCKDB__THREADS | integer | - | Number of threads |
OLYTIX_WAREHOUSE__DUCKDB__MEMORY_LIMIT | string | - | Memory limit (e.g., 4GB) |
Redis Cache
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_REDIS__HOST | string | localhost | Redis host |
OLYTIX_REDIS__PORT | integer | 6379 | Redis port |
OLYTIX_REDIS__DB | integer | 0 | Redis database number |
OLYTIX_REDIS__PASSWORD | string | - | Redis password |
OLYTIX_REDIS__MAX_CONNECTIONS | integer | 50 | Maximum connections |
OLYTIX_REDIS__SOCKET_TIMEOUT | float | 5.0 | Socket timeout in seconds |
OLYTIX_REDIS__RETRY_ON_TIMEOUT | boolean | true | Retry on timeout |
API Settings
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_API__HOST | string | 0.0.0.0 | API host |
OLYTIX_API__PORT | integer | 8000 | API port |
OLYTIX_API__WORKERS | integer | 4 | Number of workers |
OLYTIX_API__DEBUG | boolean | false | Debug mode |
OLYTIX_API__CORS_ORIGINS | list | ["*"] | Allowed CORS origins |
OLYTIX_API__CORS_ALLOW_CREDENTIALS | boolean | true | Allow credentials in CORS |
OLYTIX_API__API_PREFIX | string | /api/v1 | API prefix |
OLYTIX_API__DOCS_ENABLED | boolean | true | Enable OpenAPI docs |
Authentication
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_AUTH__ENABLED | boolean | false | Enable authentication |
OLYTIX_AUTH__API_KEY_HEADER | string | X-API-Key | API key header name |
OLYTIX_AUTH__JWT_SECRET | string | - | JWT secret key (required in production) |
OLYTIX_AUTH__JWT_ALGORITHM | string | HS256 | JWT algorithm |
OLYTIX_AUTH__JWT_EXPIRY_HOURS | integer | 24 | JWT token expiry in hours |
OLYTIX_AUTH__API_KEYS | list | [] | Valid API keys |
Query Limits
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_QUERY_LIMITS__MAX_JOIN_DEPTH | integer | 10 | Maximum join depth |
OLYTIX_QUERY_LIMITS__MAX_SUBQUERY_DEPTH | integer | 5 | Maximum subquery depth |
OLYTIX_QUERY_LIMITS__MAX_EXPRESSIONS | integer | 1000 | Maximum expressions per query |
OLYTIX_QUERY_LIMITS__MAX_RESULT_ROWS | integer | 1000000 | Maximum result rows |
OLYTIX_QUERY_LIMITS__TIMEOUT_SECONDS | integer | 300 | Query timeout |
OLYTIX_QUERY_LIMITS__PLAN_CACHE_SIZE | integer | 1000 | Plan cache size |
Pre-Aggregation
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_PREAGG__ENABLED | boolean | true | Enable pre-aggregation |
OLYTIX_PREAGG__SCHEMA_NAME | string | preagg | Schema for pre-agg tables |
OLYTIX_PREAGG__ENABLE_ON_DEMAND | boolean | true | Enable on-demand builds |
OLYTIX_PREAGG__ON_DEMAND_TIMEOUT_SECONDS | float | 300.0 | On-demand build timeout |
OLYTIX_PREAGG__STALE_THRESHOLD_SECONDS | integer | 3600 | Stale threshold |
OLYTIX_PREAGG__MAX_CONCURRENT_BUILDS | integer | 4 | Max concurrent builds |
OLYTIX_PREAGG__BUILD_TIMEOUT_SECONDS | integer | 3600 | Build timeout |
OLYTIX_PREAGG__RETRY_DELAY_SECONDS | integer | 300 | Retry delay after failure |
OLYTIX_PREAGG__MAX_RETRIES | integer | 3 | Maximum retry attempts |
OLYTIX_PREAGG__CACHE_TTL_SECONDS | integer | 3600 | Hot cache TTL |
OLYTIX_PREAGG__WARM_CACHE_ON_BUILD | boolean | true | Warm cache after build |
DAX API
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_DAX__ENABLED | boolean | true | Enable DAX API |
OLYTIX_DAX__XMLA_ENABLED | boolean | true | Enable XMLA protocol endpoint |
OLYTIX_DAX__SESSION_TIMEOUT_SECONDS | integer | 3600 | XMLA session timeout |
OLYTIX_DAX__SESSION_CLEANUP_INTERVAL_SECONDS | integer | 300 | Session cleanup interval |
OLYTIX_DAX__QUERY_TIMEOUT_SECONDS | integer | 300 | DAX query timeout |
OLYTIX_DAX__MAX_RESULT_ROWS | integer | 1000000 | Max rows from DAX query |
OLYTIX_DAX__CACHE_ENABLED | boolean | true | Enable DAX query caching |
OLYTIX_DAX__CACHE_TTL_SECONDS | integer | 300 | DAX cache TTL |
OLYTIX_DAX__CATALOG_NAME | string | Olytix Core | XMLA catalog name |
OLYTIX_DAX__SERVER_NAME | string | Olytix Core | XMLA server name |
Resilience Configuration
Circuit Breaker
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_RESILIENCE__CIRCUIT_BREAKER__FAILURE_THRESHOLD | integer | 5 | Failures before opening |
OLYTIX_RESILIENCE__CIRCUIT_BREAKER__SUCCESS_THRESHOLD | integer | 3 | Successes to close |
OLYTIX_RESILIENCE__CIRCUIT_BREAKER__RECOVERY_TIMEOUT_SECONDS | float | 30.0 | Recovery timeout |
OLYTIX_RESILIENCE__CIRCUIT_BREAKER__HALF_OPEN_MAX_CALLS | integer | 3 | Max half-open calls |
Retry Policy
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_RESILIENCE__RETRY__MAX_RETRIES | integer | 3 | Maximum retry attempts |
OLYTIX_RESILIENCE__RETRY__BASE_DELAY_SECONDS | float | 0.1 | Initial delay |
OLYTIX_RESILIENCE__RETRY__MAX_DELAY_SECONDS | float | 5.0 | Maximum delay |
OLYTIX_RESILIENCE__RETRY__EXPONENTIAL_BASE | float | 2.0 | Exponential backoff base |
OLYTIX_RESILIENCE__RETRY__JITTER | boolean | true | Add random jitter |
Bulkhead
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_RESILIENCE__BULKHEAD__MAX_CONCURRENT_REQUESTS | integer | 100 | Max concurrent requests |
OLYTIX_RESILIENCE__BULKHEAD__MAX_QUEUE_DEPTH | integer | 500 | Max queue depth |
OLYTIX_RESILIENCE__BULKHEAD__QUEUE_TIMEOUT_SECONDS | float | 30.0 | Queue timeout |
Tenant Limits
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_RESILIENCE__TENANT__MAX_CONNECTIONS | integer | 20 | Max connections per tenant |
OLYTIX_RESILIENCE__TENANT__MAX_CONCURRENT_QUERIES | integer | 10 | Max concurrent queries |
OLYTIX_RESILIENCE__TENANT__MAX_MEMORY_MB | integer | 4096 | Max memory in MB |
OLYTIX_RESILIENCE__TENANT__MAX_QUERY_DURATION_SECONDS | integer | 300 | Max query duration |
Logging
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_LOGGING__LEVEL | string | INFO | Log level: DEBUG, INFO, WARNING, ERROR, CRITICAL |
OLYTIX_LOGGING__FORMAT | string | json | Log format: json, console |
OLYTIX_LOGGING__INCLUDE_TIMESTAMP | boolean | true | Include timestamp |
OLYTIX_LOGGING__INCLUDE_CALLER | boolean | true | Include caller info |
Feature Flags
| Variable | Type | Default | Description |
|---|---|---|---|
OLYTIX_ENABLE_METRICS | boolean | true | Enable Prometheus metrics |
OLYTIX_ENABLE_TRACING | boolean | true | Enable OpenTelemetry tracing |
Configuration File (.env)
You can use a .env file in your project root for local development:
# .env
OLYTIX_ENVIRONMENT=development
# Database
OLYTIX_WAREHOUSE__TYPE=postgresql
OLYTIX_WAREHOUSE__POSTGRESQL__HOST=localhost
OLYTIX_WAREHOUSE__POSTGRESQL__PORT=5432
OLYTIX_WAREHOUSE__POSTGRESQL__DATABASE=analytics
OLYTIX_WAREHOUSE__POSTGRESQL__USER=developer
OLYTIX_WAREHOUSE__POSTGRESQL__PASSWORD=secret
# Redis
OLYTIX_REDIS__HOST=localhost
OLYTIX_REDIS__PORT=6379
# API
OLYTIX_API__PORT=8000
OLYTIX_API__DEBUG=true
# Logging
OLYTIX_LOGGING__LEVEL=DEBUG
OLYTIX_LOGGING__FORMAT=console
Production Configuration Example
# Production .env
OLYTIX_ENVIRONMENT=production
# Snowflake warehouse
OLYTIX_WAREHOUSE__TYPE=snowflake
OLYTIX_WAREHOUSE__SNOWFLAKE__ACCOUNT=xy12345.us-east-1
OLYTIX_WAREHOUSE__SNOWFLAKE__USER=analytics_service
OLYTIX_WAREHOUSE__SNOWFLAKE__PASSWORD=${SNOWFLAKE_PASSWORD}
OLYTIX_WAREHOUSE__SNOWFLAKE__WAREHOUSE=COMPUTE_WH
OLYTIX_WAREHOUSE__SNOWFLAKE__DATABASE=ANALYTICS
OLYTIX_WAREHOUSE__SNOWFLAKE__ROLE=ANALYTICS_ROLE
# Redis cluster
OLYTIX_REDIS__HOST=redis.production.internal
OLYTIX_REDIS__PASSWORD=${REDIS_PASSWORD}
# API settings
OLYTIX_API__PORT=8000
OLYTIX_API__WORKERS=8
OLYTIX_API__DEBUG=false
OLYTIX_API__CORS_ORIGINS=["https://app.example.com"]
# Authentication (required in production)
OLYTIX_AUTH__ENABLED=true
OLYTIX_AUTH__JWT_SECRET=${JWT_SECRET}
OLYTIX_AUTH__API_KEYS=["key1", "key2"]
# Query limits
OLYTIX_QUERY_LIMITS__MAX_RESULT_ROWS=100000
OLYTIX_QUERY_LIMITS__TIMEOUT_SECONDS=60
# Pre-aggregation
OLYTIX_PREAGG__ENABLED=true
OLYTIX_PREAGG__MAX_CONCURRENT_BUILDS=8
# Logging
OLYTIX_LOGGING__LEVEL=INFO
OLYTIX_LOGGING__FORMAT=json
# Observability
OLYTIX_ENABLE_METRICS=true
OLYTIX_ENABLE_TRACING=true
Best Practices
-
Use environment variables for secrets: Never commit passwords or API keys to version control.
-
Set appropriate timeouts: Configure timeouts based on your query complexity and infrastructure.
-
Enable authentication in production: Always set
OLYTIX_AUTH__ENABLED=truefor production deployments. -
Configure connection pools: Size connection pools based on expected concurrency.
-
Use structured logging: Set
OLYTIX_LOGGING__FORMAT=jsonfor production to enable log aggregation. -
Set query limits: Protect your system with appropriate query complexity and result size limits.
-
Enable pre-aggregations: Use pre-aggregations for frequently queried data combinations.