Skip to content

Environment Variables

All environment variables can be set in your shell, a .env file (loaded by python-dotenv if installed), or as Docker -e / Compose environment: entries.

Core server

VariableDefaultRequiredDescription
SECRET_KEYYesJWT signing secret — generate with python -c "import secrets; print(secrets.token_hex(32))"
P8G_ADMIN_EMAILYesBootstrap admin email (used on first start to create the initial admin user)
P8G_ADMIN_PASSWORDYesBootstrap admin password
HOST0.0.0.0NoInterface the REST server binds to
PORT8100NoTCP port
DB_PATH./purple8_dataNoRoot directory for graph storage
WORKERS2NoNumber of Uvicorn worker processes
LOG_LEVELinfoNodebug / info / warning / error
CORS_ORIGINS*NoComma-separated list of allowed CORS origins

SECRET_KEY

Never use a short or guessable secret in production. Generate one with:

bash
python -c "import secrets; print(secrets.token_hex(32))"

LLM provider

VariableDefaultRequiredDescription
LLM_PROVIDERopenaiNoopenai | anthropic | google | ollama
LLM_MODELgpt-4o-miniNoModel name override
OPENAI_API_KEYWhen LLM_PROVIDER=openaiOpenAI API key
ANTHROPIC_API_KEYWhen LLM_PROVIDER=anthropicAnthropic API key
GOOGLE_API_KEYWhen LLM_PROVIDER=googleGoogle AI API key
OLLAMA_BASE_URLhttp://localhost:11434NoOllama server endpoint
LLM_TEMPERATURE0.0NoGeneration temperature
LLM_MAX_TOKENS4096NoMax output tokens
LLM_TIMEOUT_S60NoLLM request timeout in seconds

Vector index

VariableDefaultDescription
HNSW_DIM384Embedding dimension — must match your embedding model
HNSW_M16HNSW M parameter — higher = better recall, more RAM
HNSW_EF_CONSTRUCTION200Build-time recall quality (higher = slower build, better index)
HNSW_EF_SEARCH50Query-time recall quality (higher = slower query, better recall)
AUTO_CONFIGfalsetrue = derive all HNSW + batch parameters from available RAM automatically (recommended for production)

AUTO_CONFIG

Setting AUTO_CONFIG=true enables CortexAutoConfig, which probes available RAM at startup and derives (M, ef_construction, batch_size) such that peak process RSS never exceeds 75% of available RAM. This is the recommended setting for production deployments.

KMS / Encryption at rest

VariableRequiredDescription
KMS_PROVIDERWhen encryptinglocal | vault | aws | gcp | azure
KMS_KEY_IDWhen provider is externalProvider-specific key identifier
VAULT_ADDRVaultHashiCorp Vault server URL
VAULT_TOKENVaultVault token
VAULT_CACERTVault (mTLS)Vault CA certificate path
AWS_REGIONAWSAWS region (e.g. us-east-1)
AWS_ACCESS_KEY_IDAWS (key auth)AWS access key ID
AWS_SECRET_ACCESS_KEYAWS (key auth)AWS secret access key
GOOGLE_APPLICATION_CREDENTIALSGCPPath to service account JSON
AZURE_TENANT_IDAzureAzure AD tenant ID
AZURE_CLIENT_IDAzureAzure app registration client ID
AZURE_CLIENT_SECRETAzureAzure app registration client secret

Multi-tenancy

VariableDefaultDescription
TENANCY_MODEsharedshared (key prefix per tenant) | dedicated (separate DB path per tenant)
TENANCY_DEDICATED_BASE./data/tenantsRoot directory for per-tenant DB paths (dedicated mode only)

DocIntel integration

VariableDefaultDescription
DOCINTEL_BASE_URLURL of the Purple8 DocIntel service (e.g. http://localhost:8200)
DOCINTEL_API_KEYAPI key for the DocIntel service

WAL / durability

VariableDefaultDescription
P8G_WAL_SYNCtruetrue = fdatasync on every write (durable), false = async (faster, less durable)

JWT token TTL

VariableDefaultDescription
JWT_ACCESS_TOKEN_EXPIRE_MINUTES60Access token TTL in minutes
JWT_REFRESH_TOKEN_EXPIRE_DAYS30Refresh token TTL in days

OpenTelemetry (optional)

VariableDefaultDescription
OTEL_EXPORTER_OTLP_ENDPOINTOTLP endpoint (e.g. http://jaeger:4317) — enables tracing when set
OTEL_SERVICE_NAMEpurple8-graphService name reported to the OTEL collector

Purple8 Graph is proprietary software. All rights reserved.