Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions docs/changelogs/helm-v2.1.24.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
title: "v2.1.24"
description: "Helm v2.1.24 changelog - 2026-06-17"
---

<Update label="Bifrost Helm" description="v2.1.24">

## Changelog

- `allow_private_network` (provider `networkConfig`) is now rendered by `_helpers.tpl`; it was in the schema but never wired in, so it had no effect.
- `bifrost.envLabel` (max 10 chars) → `env_label`; shows an environment label in the management UI sidebar.
- Datadog plugin: separate `agent_host`/`agent_port` and `dogstatsd_host`/`dogstatsd_port` as an alternative to the combined `*_addr` (defaults `8126`/`8125`).
- `passwordCommand` for the PostgreSQL store (config + logs): runs a command that prints the password on stdout.
- Async log `writer` tuning block (`maxBatchSize`, `batchInterval`, `maxBatchBytes`, `writeQueueCapacity`, `deferredUsageConcurrency`) for SQLite and PostgreSQL.
- Deployment update strategy via top-level `strategy` (Deployment only); empty `{}` keeps the Kubernetes default.
- `bifrost.client.allowDirectKeys` and `bifrost.client.mcpExternalClientUrl`; previously unmapped in `_helpers.tpl` and silently dropped, now render.
- `blacklisted_models` alongside `allowed_models` in provider config.
Comment thread
BearTS marked this conversation as resolved.
- `bifrost.skillsRegistry` (`enabled` + `skills[]`) rendered verbatim into `skills_registry`.

</Update>
1 change: 1 addition & 0 deletions docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -881,6 +881,7 @@
"item": "Helm",
"icon": "box",
"pages": [
"changelogs/helm-v2.1.24",
"changelogs/helm-v2.1.23",
"changelogs/helm-v2.1.22",
"changelogs/helm-v2.1.21",
Expand Down
2 changes: 1 addition & 1 deletion helm-charts/bifrost/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: v2
name: bifrost
description: A Helm chart for deploying Bifrost - AI Gateway with unified interface for multiple providers
type: application
version: 2.1.23
version: 2.1.24
appVersion: "1.5.12"
keywords:
- ai
Expand Down
14 changes: 13 additions & 1 deletion helm-charts/bifrost/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,22 @@

Official Helm charts for deploying [Bifrost](https://github.com/maximhq/bifrost) - a high-performance AI gateway with unified interface for multiple providers.

**Latest Version:** 2.1.23
**Latest Version:** 2.1.24

## Changelog

### 2.1.24

- `allow_private_network` (provider `networkConfig`) is now rendered by `_helpers.tpl`; it was in the schema but never wired in, so it had no effect.
- `bifrost.envLabel` (max 10 chars) → `env_label`; shows an environment label in the management UI sidebar.
- Datadog plugin: separate `agent_host`/`agent_port` and `dogstatsd_host`/`dogstatsd_port` as an alternative to the combined `*_addr` (defaults `8126`/`8125`).
- `passwordCommand` for the PostgreSQL store (config + logs): runs a command that prints the password on stdout.
- Async log `writer` tuning block (`maxBatchSize`, `batchInterval`, `maxBatchBytes`, `writeQueueCapacity`, `deferredUsageConcurrency`) for SQLite and PostgreSQL.
- Deployment update strategy via top-level `strategy` (Deployment only); empty `{}` keeps the Kubernetes default.
- `bifrost.client.allowDirectKeys` and `bifrost.client.mcpExternalClientUrl`; previously unmapped in `_helpers.tpl` and silently dropped, now render.
- `blacklisted_models` alongside `allowed_models` in provider config.
- `bifrost.skillsRegistry` (`enabled` + `skills[]`) rendered verbatim into `skills_registry`.

### 2.1.23

- Introduced `bifrost.governance.complexityAnalyzerConfig` for complexity router boundaries/keywords; renders into `governance.complexity_analyzer_config`.
Expand Down
13 changes: 13 additions & 0 deletions helm-charts/bifrost/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,12 @@ false
{{- if .Values.bifrost.client.routingChainMaxDepth }}
{{- $_ := set $client "routing_chain_max_depth" .Values.bifrost.client.routingChainMaxDepth }}
{{- end }}
{{- if hasKey .Values.bifrost.client "allowDirectKeys" }}
{{- $_ := set $client "allow_direct_keys" .Values.bifrost.client.allowDirectKeys }}
{{- end }}
{{- if .Values.bifrost.client.mcpExternalClientUrl }}
{{- $_ := set $client "mcp_external_client_url" .Values.bifrost.client.mcpExternalClientUrl }}
{{- end }}
{{- $_ := set $config "client" $client }}
{{- end }}
{{- /* Server */ -}}
Expand Down Expand Up @@ -407,6 +413,9 @@ false
{{- if $providerConfig.network_config.beta_header_overrides }}
{{- $_ := set $networkConfig "beta_header_overrides" $providerConfig.network_config.beta_header_overrides }}
{{- end }}
{{- if hasKey $providerConfig.network_config "allow_private_network" }}
{{- $_ := set $networkConfig "allow_private_network" $providerConfig.network_config.allow_private_network }}
{{- end }}
{{- $_ := set $providerCopy "network_config" $networkConfig }}
{{- end }}
{{- if $providerConfig.keys }}
Expand Down Expand Up @@ -697,6 +706,10 @@ false
{{- $_ := set $config "guardrails_config" $guardrails }}
{{- end }}
{{- end }}
{{- /* Skills Registry */ -}}
{{- if .Values.bifrost.skillsRegistry }}
{{- $_ := set $config "skills_registry" .Values.bifrost.skillsRegistry }}
{{- end }}
{{- /* Access Profiles (Enterprise) */ -}}
{{- if .Values.bifrost.accessProfiles }}
{{- $_ := set $config "access_profiles" .Values.bifrost.accessProfiles }}
Expand Down
4 changes: 4 additions & 0 deletions helm-charts/bifrost/templates/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ spec:
{{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }}
{{- end }}
{{- with .Values.strategy }}
strategy:
{{- toYaml . | nindent 4 }}
{{- end }}
selector:
matchLabels:
{{- include "bifrost.serverSelectorLabels" . | nindent 6 }}
Expand Down
125 changes: 125 additions & 0 deletions helm-charts/bifrost/values.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,10 @@
"affinity": {
"type": "object"
},
"strategy": {
"type": "object",
"description": "Deployment update strategy. Applies to the Deployment only (not the StatefulSet). Empty uses the Kubernetes default. Rendered verbatim into spec.strategy."
},
"bifrost": {
"type": "object",
"description": "Bifrost application configuration",
Expand Down Expand Up @@ -529,6 +533,15 @@
"minimum": 1,
"description": "Maximum depth for routing rule chain evaluation",
"default": 10
},
"allowDirectKeys": {
"type": "boolean",
"description": "Allow callers to bypass the registered key pool by supplying x-bf-direct-key: true with an Authorization header carrying the provider key. Maps to client.allow_direct_keys.",
"default": false
},
"mcpExternalClientUrl": {
"type": "string",
"description": "Public base URL Bifrost uses as the redirect_uri when acting as an OAuth client to upstream MCP servers. Maps to client.mcp_external_client_url."
}
},
"additionalProperties": false
Expand Down Expand Up @@ -3011,6 +3024,111 @@
},
"additionalProperties": false
},
"skillsRegistry": {
"type": "object",
"description": "Declarative Skills Repository definitions reconciled from config.json. Rendered verbatim into skills_registry.",
"properties": {
"enabled": {
"type": "boolean",
"description": "Whether config-defined skills should be reconciled at startup"
},
"skills": {
"type": "array",
"description": "Skills to create or update from config.json",
"items": {
"type": "object",
"required": ["name", "description", "skill_md_body", "version"],
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"license": {
"type": "string"
},
"compatibility": {
"type": "string"
},
"allowed_tools": {
"type": "string"
},
"extra_frontmatter": {
"type": "object",
"additionalProperties": true
},
"metadata": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"skill_md_body": {
"type": "string"
},
"version": {
"type": "string"
},
"files": {
"type": "array",
"items": {
"type": "object",
"required": ["path", "source_type"],
"properties": {
"path": {
"type": "string"
},
"source_type": {
"type": "string",
"enum": ["text", "url", "dataurl"]
},
"url": {
"type": "string"
},
"content": {
"type": "string"
},
"dataurl": {
"type": "string"
}
},
"additionalProperties": false,
"oneOf": [
{
"properties": {
"source_type": {
"const": "url"
}
},
"required": ["url"]
},
{
"properties": {
"source_type": {
"const": "text"
}
},
"required": ["content"]
},
{
"properties": {
"source_type": {
"const": "dataurl"
}
},
"required": ["dataurl"]
}
]
}
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
},
"accessProfiles": {
"type": "array",
"description": "Enterprise access profile templates rendered as top-level access_profiles in config.json",
Expand Down Expand Up @@ -5116,6 +5234,13 @@
"type": "string"
}
},
"blacklisted_models": {
"type": "array",
"description": "Models blocked for this provider config even if matched by allowed_models. Use [\"*\"] to block all.",
"items": {
"type": "string"
}
},
"budget_id": {
"type": "string",
"description": "Associated budget ID"
Expand Down
35 changes: 35 additions & 0 deletions helm-charts/bifrost/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,17 @@ tolerations: []

affinity: {}

# Deployment rolling update strategy. Applies to the Deployment only (not the
# StatefulSet used for sqlite-with-persistence). Rendered verbatim into spec.strategy.
# Empty ({}) uses the Kubernetes default (RollingUpdate, maxSurge 25%, maxUnavailable 25%).
# For HA gateway deployments, surge-only rollouts avoid dropping capacity:
# strategy:
# type: RollingUpdate
# rollingUpdate:
# maxSurge: 100%
# maxUnavailable: 0%
strategy: {}

# Graceful shutdown configuration for long-lived connections (SSE streaming)
# When a pod is terminated (e.g. during HPA scale-down), active streaming connections
# are severed abruptly. This causes clients to lose their SSE stream mid-response.
Expand Down Expand Up @@ -282,6 +293,8 @@ bifrost:
# hideDeletedVirtualKeysInFilters: false # Omit deleted virtual keys from logs/MCP filter data
# whitelistedRoutes: [] # Routes that bypass auth middleware
# routingChainMaxDepth: 10 # Maximum depth for routing rule chain evaluation
# allowDirectKeys: false # Allow callers to bypass the key pool via x-bf-direct-key + Authorization header
# mcpExternalClientUrl: "" # Public base URL used as redirect_uri when Bifrost is an OAuth client to MCP servers

# Server configuration
server:
Expand Down Expand Up @@ -704,6 +717,7 @@ bifrost:
# - provider: "openai"
# weight: 1.0
# allowed_models: ["gpt-4o"]
# blacklisted_models: [] # Models blocked even if matched by allowed_models; ["*"] blocks all
# rate_limit_id: ""
# keys:
# - key_id: "uuid-of-key"
Expand Down Expand Up @@ -942,6 +956,27 @@ bifrost:
# timeout: 30 # Timeout in seconds for provider execution (default: 30)
# config: {}

# Declarative Skills Repository. Rendered verbatim as top-level `skills_registry`
# in config.json and reconciled at startup when enabled.
# skillsRegistry:
# enabled: true
# skills:
# - name: "my-skill"
# description: "What this skill does"
# version: "1.0.0"
# skill_md_body: "# My Skill\n\nInstructions..."
# # license: "MIT"
# # compatibility: ">=1.0.0"
# # allowed_tools: "Read,Write"
# # metadata: {}
# # extra_frontmatter: {}
# # files:
# # - path: "reference.md"
# # source_type: "text" # text | url | dataurl
# # content: "..." # required when source_type=text
# # # url: "https://..." # required when source_type=url
# # # dataurl: "data:..." # required when source_type=dataurl

# Access profiles (enterprise): seed RBAC access profile templates from Helm.
# This is rendered directly as top-level `access_profiles` in config.json.
accessProfiles: []
Expand Down
26 changes: 25 additions & 1 deletion helm-charts/index.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,30 @@
apiVersion: v1
entries:
bifrost:
- apiVersion: v2
appVersion: 1.5.12
created: "2026-06-17T00:37:23.454566+05:30"
description: A Helm chart for deploying Bifrost - AI Gateway with unified interface
for multiple providers
digest: 6d93cde1a01b951b2ea18dfab3b4897a07d1fbbde0fdaa38469f460026da6551
home: https://www.getmaxim.ai/bifrost
icon: https://www.getbifrost.ai/favicon.png
keywords:
- ai
- gateway
- llm
- openai
- anthropic
maintainers:
- email: support@getbifrost.ai
name: Bifrost Team
name: bifrost
sources:
- https://github.com/maximhq/bifrost
type: application
urls:
- https://github.com/maximhq/bifrost/releases/download/helm-chart-v2.1.24/bifrost-2.1.24.tgz
version: 2.1.24
- apiVersion: v2
appVersion: 1.5.12
created: "2026-06-12T16:07:47.747692+05:30"
Expand Down Expand Up @@ -1060,4 +1084,4 @@ entries:
urls:
- https://maximhq.github.io/bifrost/helm-charts/bifrost-1.3.36.tgz
version: 1.3.36
generated: "2026-06-12T16:07:47.741774+05:30"
generated: "2026-06-17T00:37:23.451137+05:30"
Loading