Skip to main content
This page covers the most common problems encountered when deploying Bifrost with Helm, along with diagnostic commands and fixes.

Pod Not Starting

Quick diagnostics

Image pull errors (ErrImagePull / ImagePullBackOff)

Common causes:
  • image.tag not set - the chart requires it; the pod will not start without it
  • Pull secret missing or expired (ECR tokens expire after 12 hours)
  • Incorrect image.repository for enterprise registry

PVC not binding (Pending)

Common causes:
  • No Persistent Volume provisioner in the cluster
  • storageClass set to a class that doesn’t exist
  • ReadWriteOnce access mode with multiple replicas (SQLite PVCs are single-node)

ConfigMap / Secret errors

CrashLoopBackOff


Database Connection Issues

Embedded PostgreSQL

External PostgreSQL

Common causes:
  • sslMode: disable when the database requires SSL - set sslMode: require
  • Password in secret doesn’t match the database user
  • Network policy blocking pod → database traffic
  • Database not UTF8 encoded (see PostgreSQL UTF8 Requirement)

Ingress Not Working

Common causes:
  • ingress.className not set or set to a class not installed in the cluster
  • TLS certificate not issued yet (cert-manager can take up to 60 seconds)
  • Service port mismatch - Bifrost listens on 8080 by default

Secret and Credential Issues

Provider API key not resolving

If Bifrost logs show env.OPENAI_API_KEY: not set or similar:

Encryption key issues


High Memory Usage

Increase resource limits:
Tune Go runtime (see Docker Tuning):

High CPU Usage / Latency

Common causes:
  • initialPoolSize too small - goroutines queuing up; increase to 5001000
  • dropExcessRequests: false with a small pool - queue depth growing unboundedly

Autoscaling Issues

HPA not scaling

Pods scaling down too aggressively (drops active SSE streams)

The default scaleDown.stabilizationWindowSeconds: 300 and preStop sleep of 15 seconds should prevent this. If streams are still being cut:

SQLite / PVC Issues

StatefulSet migration (upgrading from chart < v2.0.0)

Older chart versions used a Deployment + manual PVC. v2.0.0 moved SQLite to a StatefulSet. If upgrading:

Data lost after upgrade


Cluster Mode Issues

Peers not discovering each other

For Kubernetes-based discovery, verify the service account has pod list permissions:

Useful Diagnostic Commands


Still Stuck?