values.yaml, how to supply values via --set vs -f, and where to find ready-made example files.
The full values schema is available at https://getbifrost.ai/schema. All
values.yaml fields map directly to config.json fields generated by the chart.Supplying Values
One-liner with --set
Good for a single field or quick experiments:
Values file with -f
Recommended for anything beyond a couple of fields:
Multiple values files
Later files override earlier ones — useful for a base + environment-specific overlay:Key Parameters Reference
Image
| Parameter | Description | Default |
|---|---|---|
image.repository | Container image repository | docker.io/maximhq/bifrost |
image.tag | Required. Image version (e.g. v1.4.11) | "" |
image.pullPolicy | Image pull policy | IfNotPresent |
imagePullSecrets | List of pull secret names for private registries | [] |
Replicas & Autoscaling
| Parameter | Description | Default |
|---|---|---|
replicaCount | Static replica count (ignored when HPA is enabled) | 1 |
autoscaling.enabled | Enable Horizontal Pod Autoscaler | false |
autoscaling.minReplicas | Minimum replicas | 1 |
autoscaling.maxReplicas | Maximum replicas | 10 |
autoscaling.targetCPUUtilizationPercentage | CPU target for scaling | 80 |
autoscaling.targetMemoryUtilizationPercentage | Memory target for scaling | 80 |
autoscaling.behavior.scaleDown.stabilizationWindowSeconds | Cooldown before scale-down (important for SSE streams) | 300 |
autoscaling.behavior.scaleDown.policies[0].value | Max pods removed per period | 1 |
Resources
| Parameter | Description | Default |
|---|---|---|
resources.requests.cpu | CPU request | 500m |
resources.requests.memory | Memory request | 512Mi |
resources.limits.cpu | CPU limit | 2000m |
resources.limits.memory | Memory limit | 2Gi |
Service
| Parameter | Description | Default |
|---|---|---|
service.type | ClusterIP, LoadBalancer, or NodePort | ClusterIP |
service.port | Service port | 8080 |
Ingress
| Parameter | Description | Default |
|---|---|---|
ingress.enabled | Enable ingress | false |
ingress.className | Ingress class (e.g. nginx, traefik) | "" |
ingress.annotations | Ingress annotations | {} |
ingress.hosts | Host rules | see values.yaml |
ingress.tls | TLS configuration | [] |
Probes
| Parameter | Description | Default |
|---|---|---|
livenessProbe.initialDelaySeconds | Seconds before first liveness check | 30 |
livenessProbe.periodSeconds | Liveness check interval | 30 |
readinessProbe.initialDelaySeconds | Seconds before first readiness check | 10 |
readinessProbe.periodSeconds | Readiness check interval | 10 |
GET /health.
Graceful Shutdown
Bifrost supports long-lived SSE streaming connections. The defaultpreStop hook and termination grace period let in-flight streams finish before the pod is killed:
| Parameter | Description | Default |
|---|---|---|
terminationGracePeriodSeconds | Total grace period | 60 |
lifecycle.preStop.exec.command | Sleep before SIGTERM so load balancer drains | ["sh", "-c", "sleep 15"] |
terminationGracePeriodSeconds if your typical stream responses take longer than 45 seconds.
Service Account
| Parameter | Description | Default |
|---|---|---|
serviceAccount.create | Create a dedicated service account | true |
serviceAccount.annotations | Annotations (e.g. for IRSA, Workload Identity) | {} |
serviceAccount.name | Override the generated name | "" |
Pod Scheduling
Extra Environment Variables
Three ways to inject env vars:Init Containers
Values Examples
The chart ships ready-made example files underhelm-charts/bifrost/values-examples/:
| File | Use case |
|---|---|
sqlite-only.yaml | Minimal local/dev setup |
postgres-only.yaml | Single-store Postgres |
production-ha.yaml | HA: 3 replicas, Postgres, Weaviate, HPA, Ingress |
providers-and-virtual-keys.yaml | All 23 providers + 7 virtual key patterns |
secrets-from-k8s.yaml | All sensitive values from Kubernetes Secrets |
external-postgres.yaml | Point at an existing Postgres instance |
postgres-redis.yaml | Postgres + Redis vector store |
postgres-weaviate.yaml | Postgres + Weaviate vector store |
postgres-qdrant.yaml | Postgres + Qdrant vector store |
semantic-cache-secret-example.yaml | Semantic cache with secret injection |
mixed-backend.yaml | Config store = postgres, logs store = sqlite |
Helm Operations
View current values
Diff before upgrading (requires helm-diff plugin)
Rollback
Uninstall
All Key Parameters
A quick-reference table of the most commonly used top-level parameters:| Parameter | Description | Default |
|---|---|---|
image.tag | Required. Bifrost image version (e.g., v1.4.11) | "" |
replicaCount | Number of replicas | 1 |
storage.mode | Storage backend (sqlite or postgres) | sqlite |
storage.persistence.size | PVC size for SQLite | 10Gi |
postgresql.enabled | Deploy embedded PostgreSQL | false |
vectorStore.enabled | Enable vector store | false |
vectorStore.type | Vector store type (weaviate, redis, qdrant) | none |
bifrost.encryptionKey | Encryption key (use encryptionKeySecret in production) | "" |
ingress.enabled | Enable ingress | false |
autoscaling.enabled | Enable HPA | false |
Secret Reference Parameters
Use existing Kubernetes Secrets instead of plain-text values. Every sensitive field in the chart has a correspondingexistingSecret / secretRef alternative:
| Parameter | Description | Default |
|---|---|---|
bifrost.encryptionKeySecret.name | Secret name for encryption key | "" |
bifrost.encryptionKeySecret.key | Key within the secret | "encryption-key" |
postgresql.external.existingSecret | Secret name for PostgreSQL password | "" |
postgresql.external.passwordKey | Key within the secret | "password" |
vectorStore.redis.external.existingSecret | Secret name for Redis password | "" |
vectorStore.redis.external.passwordKey | Key within the secret | "password" |
vectorStore.weaviate.external.existingSecret | Secret name for Weaviate API key | "" |
vectorStore.weaviate.external.apiKeyKey | Key within the secret | "api-key" |
vectorStore.qdrant.external.existingSecret | Secret name for Qdrant API key | "" |
vectorStore.qdrant.external.apiKeyKey | Key within the secret | "api-key" |
bifrost.plugins.maxim.secretRef.name | Secret name for Maxim API key | "" |
bifrost.plugins.maxim.secretRef.key | Key within the secret | "api-key" |
bifrost.providerSecrets.<provider>.existingSecret | Secret name for provider API key | "" |
bifrost.providerSecrets.<provider>.key | Key within the secret | "api-key" |
bifrost.providerSecrets.<provider>.envVar | Environment variable name to inject | "" |
Advanced Configuration
Comprehensive Example
A production-ready values file combining the most common settings:Node Affinity & Scheduling
Deploy to specific nodes and spread replicas across hosts:Deployment & Pod Annotations
Useful for tooling like Keel for automatic image updates or Datadog APM injection:Common Patterns
Ready-made values files for the most common deployment scenarios. Each pattern builds on the quickstart.- Development
- Multi-Provider
- External Database
- AI Workloads
- Kubernetes Secrets Only
Simple setup for local testing. SQLite, single replica, no autoscaling.

