Bifrost HTTP Transport Release v1.5.0-prerelease5
✨ Features
- Access Profiles via Config — Seed enterprise access profiles declaratively from
config.jsonand Helm values at deploy time, including provider restrictions, model allowlists, budgets, rate limits, and MCP server/tool controls - Key IDs in Helm —
key_idsis now the preferred field for pinning provider keys in Helm virtual key configurations, aligning Helm values withconfig.jsonschema
🐞 Fixed
- Fallback Stream State — Clear
BifrostContextKeyStreamEndIndicatorbefore fallback requests so stale streaming state doesn't carry into retries - Access Profile Rate Limits — Rate limit counters for access profiles were always showing 0; now persisted correctly to the database
- Helm Encryption Key —
encryptionKeyis now properly optional for Helm StatefulSet deployments when using a Kubernetes secret reference - Teams View OSS/Enterprise Split — Extracted full TeamsView into the shared fallback component so it works correctly in OSS builds; fixed pagination offset snap-back and RBAC loading state race
✨ Features
- Claude Opus 4.7 — Added compatibility for Anthropic's Claude Opus 4.7 model, including adaptive thinking, task-budgets beta header,
displayparameter handling, and "xhigh" effort mapping - Anthropic Structured Outputs — Added
response_formatand structured output support for Anthropic models across chat completions and Responses API, with order-preserving merge of additional model request fields (thanks @emirhanmutlu-natuvion!) - MCP Tool Annotations — Preserve MCP tool annotations (
title,readOnly,destructive,idempotent,openWorld) in bidirectional conversion so agents can reason about tool behavior - Anthropic Server Tools — Expanded Anthropic chat schema and Responses converters to surface server-side tools (web search, code execution, computer use containers) end-to-end
- OCR Request Support — Added OCR request type with stream terminal detection, full body accumulation for passthrough streams, input logging with detail view, and per-request pricing support
- Team Budgets — New team budget system with per-team spending tracking, atomic ratelimit updates, and database structure support
- Single Log Export — Export individual log entries from the logs view and MCP logs sheet
- Deny-by-Default Virtual Keys — Virtual key provider and MCP configs now block all access when empty; automatic migration backfills existing keys to preserve behavior
- User Agent Detection — Improved multi-user-agent detection with tool call reduplication fix for mixed-client environments
- Per-User OAuth Codemode — OAuth server selection and validation per-user in codemode
🐞 Fixed
- Provider Queue Shutdown Panic — Eliminated
send on closed channelpanics in provider queue shutdown by leaving channels open and exiting workers via the done signal; stale producers transparently re-route to new queues duringUpdateProvider - OpenAI Tool Result Output — Flatten array-form
tool_resultoutput into a newline-joined string for the Responses API so strict upstreams (Ollama Cloud, openai-go typed models) no longer reject with HTTP 400 (thanks @martingiguere!) - vLLM Token Usage — Treat
delta.content=""the same asnilin streaming so the synthesis chunk retains itsfinish_reason, restoring token usage attribution in logs and UI - Gemini Tool Outputs — Handle content block tool outputs in Responses API path for
function_call_outputmessages (thanks @tom-diacono!) - Bedrock Streaming — Emit
message_stopevent for Anthropic invoke stream and case-insensitiveanthropic-betaheader merging (thanks @tefimov!) - Bedrock Tool Images — Preserve image content blocks in tool results when converting Anthropic Messages to Bedrock Converse API (thanks @Edward-Upton!)
- Gemini Thinking Level — Preserve
thinkingLevelparameters across round-trip conversions and correct finish reason mapping - Anthropic WebSearch — Removed the Claude Code user agent restriction so WebSearch tool arguments flow for all clients
- Responses Streaming Errors — Capture errors mid-stream in the Responses API so transport clients see failures instead of silent termination
- Anthropic Request Fallbacks — Dropped fallback fields from outgoing Anthropic requests to avoid schema validation errors
- Tool Execution Header — Remove redundant static header assignment in tool execution flow
- Virtual Key Configs — Virtual key configurations cleaned up correctly on provider changes; fix key creation and management edge cases
- Virtual Key Management — Fix virtual key creation validation and update handling
- vLLM Extra Params — Extra parameters now properly passed through to vLLM providers
- OAuth Query Params — Preserve existing query parameters when building OAuth upstream authorize URLs
- Streaming Timeouts — Separate streaming clients per provider to prevent read timeout collisions
- Plugin Timer Concurrency — Fix concurrent map access in plugin timer causing potential race conditions
- Async Context Propagation — Preserve context values in async requests so downstream handlers retain request-scoped data
- Custom Providers — Allow custom providers without a list-models endpoint to accept any model rather than restricting on virtual key registration
- OTel Insecure Default — OTel plugin now defaults
insecureto true when omitted, enabling HTTP collectors without explicit config; OTel semconv updated to v1.40.0 - Helm mcpClientConfig — Fixed templating for
mcpClientConfig(thanks @crust3780!) - Helm Chart — Refreshed helm chart with validation fixes
Installation
Docker
docker run -p 8080:8080 maximhq/bifrost:v1.5.0-prerelease5Binary Download
npx @maximhq/bifrost --transport-version v1.5.0-prerelease5Docker Images
maximhq/bifrost:v1.5.0-prerelease5- This specific versionmaximhq/bifrost:latest- Latest version (updated with this release)
This release was automatically created with dependencies: core v1.5.4, framework v1.3.4. All plugins have been validated and updated.