Skip to content

Configuration Reference

All configuration is done through environment variables.

These must be set for the platform to function:

VariableDescriptionExample
DATABASE_URLPostgreSQL connection stringpostgresql+asyncpg://user:pass@host:5432/db
JWT_SECRET_KEYSecret for JWT signing (256-bit)openssl rand -hex 32
ENCRYPTION_KEYFernet key for config encryptionSee below
Terminal window
openssl rand -hex 32
VariableDefaultDescription
HOST0.0.0.0Server bind address
PORT8000Server port
DEBUGfalseEnable debug mode
CORS_ALLOWED_ORIGINS["http://localhost:5173"]Allowed CORS origins (JSON array)
VariableDefaultDescription
JWT_SECRET_KEYRequiredSecret for JWT signing
JWT_ALGORITHMHS256JWT algorithm
JWT_ACCESS_TOKEN_EXPIRE_MINUTES1440Access token lifetime (24h)
JWT_REFRESH_TOKEN_EXPIRE_DAYS7Refresh token lifetime
VariableDefaultDescription
GOOGLE_CLIENT_IDNoneGoogle OAuth client ID
GOOGLE_CLIENT_SECRETNoneGoogle OAuth secret
GOOGLE_REDIRECT_URIhttp://localhost:8000/api/auth/google/callbackOAuth callback URL
FRONTEND_URLhttp://localhost:5173Frontend URL for redirects
VariableDefaultDescription
WORKER_POLL_INTERVAL2Seconds between job polls
VariableDefaultDescription
STORAGE_BACKENDlocalStorage backend: local or gcs
VariableDefaultDescription
STORAGE_LOCAL_PATH/tmp/bizon-outputsLocal storage directory
VariableDefaultDescription
STORAGE_GCS_BUCKETNoneGCS bucket name
STORAGE_GCS_PREFIXpipeline-outputsObject prefix
STORAGE_GCS_CREDENTIALS_JSONNoneBase64-encoded service account JSON
VariableDefaultDescription
CUSTOM_SOURCES_PREFIXcustom-sourcesStorage prefix for custom sources
VariableDefaultDescription
LLM_PROVIDERopenaiLLM provider: openai or anthropic
LLM_MODELgpt-4o-miniModel name
OPENAI_API_KEYNoneOpenAI API key
ANTHROPIC_API_KEYNoneAnthropic API key
VariableDefaultDescription
DATABASE_URLRequiredPostgreSQL connection string
postgresql+asyncpg://username:password@host:port/database

For production, configure in SQLAlchemy:

# In code, not env vars
create_async_engine(
url,
pool_size=20,
max_overflow=10,
pool_timeout=30,
)
.env
DATABASE_URL=postgresql+asyncpg://bizon:bizon@localhost:5432/bizon
JWT_SECRET_KEY=dev-secret-change-in-production
ENCRYPTION_KEY=dev-key-change-in-production
DEBUG=true
.env
DATABASE_URL=postgresql+asyncpg://bizon:${DB_PASSWORD}@db.internal:5432/bizon
JWT_SECRET_KEY=${JWT_SECRET}
ENCRYPTION_KEY=${ENCRYPTION_KEY}
CORS_ALLOWED_ORIGINS=["https://bizon.example.com"]
FRONTEND_URL=https://bizon.example.com
STORAGE_BACKEND=gcs
STORAGE_GCS_BUCKET=bizon-prod-outputs
STORAGE_GCS_CREDENTIALS_JSON=${GCS_CREDENTIALS_B64}
Terminal window
GOOGLE_CLIENT_ID=123456789.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-xxx
GOOGLE_REDIRECT_URI=https://api.bizon.example.com/api/auth/google/callback
FRONTEND_URL=https://bizon.example.com
Terminal window
LLM_PROVIDER=openai
LLM_MODEL=gpt-4o
OPENAI_API_KEY=sk-xxx
# Or for Anthropic
LLM_PROVIDER=anthropic
LLM_MODEL=claude-3-sonnet
ANTHROPIC_API_KEY=sk-ant-xxx

Create a .env file in the project root:

Terminal window
# Required
DATABASE_URL=postgresql+asyncpg://bizon:password@localhost:5432/bizon
JWT_SECRET_KEY=your-secret-key
ENCRYPTION_KEY=your-encryption-key
# Optional
HOST=0.0.0.0
PORT=8000
DEBUG=false
WORKER_POLL_INTERVAL=2

Pass variables to Docker:

services:
api:
environment:
- DATABASE_URL=${DATABASE_URL}
- JWT_SECRET_KEY=${JWT_SECRET_KEY}
env_file:
- .env
apiVersion: v1
kind: Secret
metadata:
name: bizon-secrets
type: Opaque
stringData:
DATABASE_URL: postgresql+asyncpg://...
JWT_SECRET_KEY: your-secret
ENCRYPTION_KEY: your-key

Reference in deployment:

envFrom:
- secretRef:
name: bizon-secrets