Reference
Environment variables and Helm values — every knob you can turn.
Environment variables
| Variable | Default | Purpose |
|---|---|---|
JWT_SECRET_KEY |
— | Required, ≥32 chars. Sign auth tokens. |
SEED_ADMIN_USERNAME |
admin |
First-run admin user. |
SEED_ADMIN_PASSWORD |
— | Required for first start. |
KERNEL_MODE |
shared |
shared / docker_per_user / k8s_per_user |
KERNEL_POD_IMAGE |
ghcr.io/sparklabx/kernel:latest |
Image used by per-user pods. |
KERNEL_POD_CPU_REQUEST |
500m |
CPU request per kernel pod. |
KERNEL_POD_MEMORY_LIMIT |
4Gi |
Memory limit per kernel pod. |
MINIO_ENDPOINT |
— | S3-compatible endpoint URL. |
DATABASE_URL |
— | Postgres connection string. |
CORS_ORIGINS |
http://localhost:3000 |
Allowed origins. * for dev only. |
ALLOWED_EMAIL_DOMAINS |
(empty) | OAuth email allow-list. |
Full list in backend/internal/config/config.go.
Helm values
image:
backend: { repository: ghcr.io/sparklabx/backend, tag: latest, pullPolicy: Always }
frontend: { repository: ghcr.io/sparklabx/frontend, tag: latest, pullPolicy: Always }
kernel: { repository: ghcr.io/sparklabx/kernel, tag: latest, pullPolicy: IfNotPresent }
kernel:
idleMinutes: 30
maxTotal: 50
resources:
requests: { cpu: 500m, memory: 1Gi }
limits: { cpu: 2000m, memory: 4Gi }
postgres:
enabled: true # set false + fill external.* to use external DB
external: { host: "", port: 5432 }
persistence: { enabled: true, size: 10Gi }
minio:
enabled: true
external: { endpoint: "" }
bucket: workspace
persistence: { enabled: true, size: 50Gi }
ingress:
enabled: true
host: notebook.example.com
tls: { enabled: true, issuer: letsencrypt-prod }
Full reference: chart/values.yaml.