Deployment
Configuration
All environment variables for QANATIX.
All QANATIX settings via environment variables.
| Variable | Description | Default |
|---|
ENV | Environment (development, production) | development |
DEBUG | Enable debug mode | false |
API_V1_PREFIX | API route prefix | /api/v1 |
DEPLOYMENT_MODE | cloud or self_hosted | self_hosted |
| Variable | Description | Default |
|---|
DATABASE_URL | Async Postgres connection string | postgresql+asyncpg://qanatix:qanatix@localhost:5434/qanatix |
DB_POOL_SIZE | SQLAlchemy connection pool size | 20 |
DB_MAX_OVERFLOW | Max overflow connections | 10 |
REDIS_URL | Redis connection string | redis://localhost:6380/0 |
QDRANT_URL | Qdrant HTTP URL | http://localhost:6333 |
QDRANT_API_KEY | Qdrant API key (optional) | — |
BGE-M3 produces dense, sparse, and ColBERT vectors in a single pass — no API key needed. See Embedding Model for details.
| Variable | Description | Default |
|---|
EMBEDDING_MODEL | HuggingFace model name | BAAI/bge-m3 |
EMBEDDING_DIMENSIONS | Vector dimensions | 1024 |
| Variable | Description | Default |
|---|
API_KEY_SALT | Salt for API key hashing (must change in production) | change-me-to-a-random-string |
CONNECTOR_ENCRYPTION_KEY | Fernet key for connector credential encryption (comma-separated for key rotation via MultiFernet) | Auto-generated in dev |
WEBHOOK_SECRET | HMAC-SHA256 secret for webhook verification | — |
CORS_ORIGINS | Allowed origins (comma-separated, must not be * in production) | * |
| Variable | Description | Default |
|---|
INGESTION_MAX_FILE_SIZE | Max upload file size in bytes | 52428800 (50 MB) |
INGESTION_BATCH_SIZE | Max records per batch | 5000 |
INGESTION_ERROR_THRESHOLD | Circuit breaker error ratio | 0.1 (10%) |
INGESTION_MAX_ERRORS | Max errors before circuit break | 1000 |
| Variable | Description | Default |
|---|
PIPELINE_BATCH_SIZE | Entities per embedding batch | 20 |
PIPELINE_MAX_RETRIES | Max retry attempts for failed embeddings | 3 |
PIPELINE_WORKER_CONCURRENCY | SAQ worker concurrency | 10 |
PIPELINE_JOB_TIMEOUT | Job timeout in seconds | 300 |
CIRCUIT_BREAKER_THRESHOLD | Failures before circuit opens | 5 |
CIRCUIT_BREAKER_COOLDOWN | Cooldown before retry in seconds | 60 |
EMBEDDING_CACHE_TTL | Embedding cache TTL in seconds | 604800 (7 days) |
| Variable | Description | Default |
|---|
SEARCH_MAX_QUERY_LENGTH | Max query string length | 500 |
SEARCH_MAX_FILTERS | Max filters per query | 20 |
SEARCH_MAX_LIMIT | Max results per query | 100 |
SEARCH_SPARSE_PREFETCH | Sparse vector candidates | 50 |
SEARCH_DENSE_PREFETCH | Dense vector candidates | 50 |
SEARCH_COLBERT_RESCORE_LIMIT | ColBERT rescore candidates | 20 |
SEARCH_RERANKER_ENABLED | Enable cross-encoder reranking | true |
SEARCH_RERANKER_MODEL | Reranker model | BAAI/bge-reranker-v2-m3 |
| Variable | Description | Default |
|---|
RATE_LIMIT_ENABLED | Enable rate limiting | true |
| Variable | Description | Default |
|---|
LOG_LEVEL | Logging level | INFO |
WEB_CONCURRENCY | Uvicorn worker count | 1 |
| Service | Default port |
|---|
| QANATIX API | 8000 |
| Postgres | 5432 (dev: 5434) |
| Redis | 6379 (dev: 6380) |
| Qdrant | 6333 |
In production (ENV=production), QANATIX validates:
API_KEY_SALT must not be the default value
CORS_ORIGINS must not be wildcard ["*"]