Skip to main content
Plugins are configured under bifrost.plugins. Each plugin is independently enabled/disabled. Pre-hooks run in registration order; post-hooks run in reverse order.
bifrost:
  plugins:
    telemetry:
      enabled: true
    logging:
      enabled: true
    governance:
      enabled: true
    semanticCache:
      enabled: false
    otel:
      enabled: false
    datadog:
      enabled: false
# Enable plugins at install time
helm install bifrost bifrost/bifrost \
  --set image.tag=v1.4.11 \
  --set bifrost.plugins.telemetry.enabled=true \
  --set bifrost.plugins.logging.enabled=true \
  --set bifrost.plugins.governance.enabled=true

# Or upgrade to enable a plugin without touching other values
helm upgrade bifrost bifrost/bifrost \
  --reuse-values \
  --set bifrost.plugins.otel.enabled=true

Telemetry (Prometheus)

Exposes Prometheus metrics at GET /metrics.
ParameterDescriptionDefault
bifrost.plugins.telemetry.enabledEnable Prometheus metricsfalse
bifrost.plugins.telemetry.config.custom_labelsExtra labels attached to every metric[]
bifrost.plugins.telemetry.config.push_gateway.enabledPush metrics to a Prometheus Push Gatewayfalse
bifrost.plugins.telemetry.config.push_gateway.push_gateway_urlPush Gateway URL""
bifrost.plugins.telemetry.config.push_gateway.job_nameJob label"bifrost"
bifrost.plugins.telemetry.config.push_gateway.push_intervalPush interval in seconds15
Basic setup:
# telemetry-values.yaml
image:
  tag: "v1.4.11"

bifrost:
  plugins:
    telemetry:
      enabled: true
      config:
        custom_labels:
          - name: "environment"
            value: "production"
          - name: "region"
            value: "us-east-1"
helm upgrade bifrost bifrost/bifrost --reuse-values -f telemetry-values.yaml

# Verify metrics are exposed
kubectl port-forward svc/bifrost 8080:8080 &
curl http://localhost:8080/metrics | head -30
With Prometheus Push Gateway (recommended for multi-replica / HA setups where pull-based scraping can miss pods):
bifrost:
  plugins:
    telemetry:
      enabled: true
      config:
        push_gateway:
          enabled: true
          push_gateway_url: "http://prometheus-pushgateway.monitoring.svc.cluster.local:9091"
          job_name: "bifrost"
          instance_id: ""      # auto-derived from pod name if empty
          push_interval: 15
          basic_auth:
            username: ""
            password: ""
ServiceMonitor for Prometheus Operator:
serviceMonitor:
  enabled: true
  interval: 30s
  scrapeTimeout: 10s
  namespace: monitoring     # namespace where Prometheus is deployed

All Plugins Together

# all-plugins-values.yaml
image:
  tag: "v1.4.11"

bifrost:
  encryptionKeySecret:
    name: "bifrost-encryption"
    key: "encryption-key"

  plugins:
    telemetry:
      enabled: true
      config:
        custom_labels:
          - name: "environment"
            value: "production"

    logging:
      enabled: true
      config:
        disable_content_logging: false
        logging_headers:
          - "x-request-id"

    governance:
      enabled: true
      config:
        is_vk_mandatory: true

    semanticCache:
      enabled: true
      config:
        provider: "openai"
        keys:
          - value: "env.CACHE_OPENAI_KEY"
            weight: 1
        embedding_model: "text-embedding-3-small"
        dimension: 1536
        threshold: 0.85
        ttl: "1h"

    otel:
      enabled: true
      config:
        service_name: "bifrost"
        collector_url: "otel-collector.observability.svc.cluster.local:4317"
        protocol: "grpc"
        insecure: true
helm install bifrost bifrost/bifrost -f all-plugins-values.yaml