Bifrost HTTP Transport Release v1.5.5
✨ Features
- Azure v1 API Migration — Migrated Azure provider to the v1 API: removed the
api-versionquery parameter and the/openai/deployments/{model}/...URL pattern in favor of/openai/v1/{operation}; theapi_versionfield has been dropped fromAzureKeyConfig(#3661, #3756) - EnvVar Support for OTEL & Prometheus Configs —
CollectorURL,MetricsEndpoint, headers, push gateway URL, and basic auth credentials can now be sourced from environment variables (e.g.,env.OTEL_COLLECTOR_URL); added a newConfigMarshallerPlugininterface that lets plugins control storage/redaction round-trips (#3651) - OTel Extra Header Forwarding —
x-bf-eh-*extra headers forwarded to upstream providers are now also emitted on the request span undergen_ai.request.extra_header.*for end-to-end tracing (#3730) - OTel Semantic Conventions — Aligned OTel attribute keys with the OpenTelemetry GenAI spec (canonical
gen_ai.*and newbifrost.*attributes); legacy attributes are retained in parallel to avoid breaking existing dashboards (#3732) - VK Quota with Provider Configs —
GetVirtualKeyQuotaByValueand thegetVirtualKeyQuotaHTTP response now includeprovider_configswith their budgets and rate limits (#3721) - MCP Temp Token Non-Auth Toggle — Added
mcp_enable_temp_token_authclient config flag to gate short-lived MCP token minting for non-authenticated users (#3720) - Responses Stream in JSON Parser —
jsonparserplugin now handles OpenAI Responses API streaming (ResponsesStreamRequest) in addition to chat completions (#3749) - Session API Rework — Logout now calls both the password-based session logout and OAuth logout endpoints and resets all RTK Query cache state (#3698)
🐞 Fixed
- Streaming Latency for Observability — Deferred root span termination to the trace completer callback for streaming requests so request latency is no longer inflated by header-flush time (#3762)
- Stream Cancellation Race — Set
BifrostContextKeyConnectionClosedbefore closing the stream and short-circuitidleTimeoutReader.Readwhen the connection is already closed to avoid panics and hangs on cancellation (#3733) - Bedrock Cache Points — Strip cache points from Bedrock requests for models that do not support prompt caching (e.g., GLM, Llama) to avoid Converse API errors (#3754)
- Bedrock Empty Text Blocks — Skip empty/nil text blocks during Bedrock response conversion to avoid invalid messages (#3747)
- Bedrock Reasoning + Tools — Preserve reasoning content blocks on assistant turns that also contain tool calls in the Bedrock chat converter (#3690)
- Bedrock Search Content & Video — Restored search content and video parts that were being dropped from Bedrock-native passthrough requests (#3729)
- Structured Output Stop Reason — Fixed an incorrect
tool_callsfinish reason when structured output is combined with extended-thinking tools (#3685) - Gemini Tool Schema Passthrough — Forward full tool parameter schemas via
parametersJsonSchemainstead of the lossyparametersform; corrected tool response role touser; resolved structured output + tools conflict (#3761) - Anthropic Stop Reason & Tool Versions — Normalized stop reason mapping (
end_turntostop,tool_usetotool_calls,max_tokenstolength) and upgradedtext_editor_20250124/str_replace_editortotext_editor_20250728for computer-use tools (#3761) - Azure Endpoint Redaction — Fixed a panic when
AzureKeyConfig.Endpointis a literal value rather than an env reference (#3761) - Auth Middleware Path Match — Match temp-token auth middleware whitelist against the request path only, not the full URI with query parameters (#3737)
- Governance Blocked Models UI — Restored the missing Blocked Models create/edit UI in the VK provider config sheet (#3750)
- Logging Plugin Cleanup Drain — Fixed a shutdown race where
batchWritercould drop in-flight log entries;Cleanupnow drains both the recovered batch and remaining queue within a 30-second budget (#3717) - Model Rankings Empty Entries — Excluded entries with empty
modelvalues from model rankings matview queries so blank rows no longer surface in the UI (#3758) - User Filter Duplicates — Recreated
mv_filter_usersmatview to require non-emptyuser_name, eliminating duplicate filter dropdown entries (#3764) - User Filter Display Name — Use
user_nameinstead ofuser_idas the display label for users in logging filters (#3691) - Large Numeric ID Precision — Preserve large numeric IDs in URL search params by skipping JSON parsing for plain strings (#3692)
🔧 Refactors & Chores
- Error Propagation for GetAvailable* APIs —
GetAvailable*methods onLoggerPlugin/LogManagernow return wrapped errors instead of silently logging and returning empty slices (#3759) - Governance Blocklist Matching — Use
slices.Containsfor VK blocked-model matching for clearer code with identical semantics (#3727) - Exported
ResolvePeriod— RenamedresolvePeriodtoResolvePeriodso external packages can reuse the period parsing (#3763)
📚 Docs
- OTEL Env Var Documentation — Documented
env.VAR_NAMEsupport forcollector_url,metrics_endpoint, and headers in OTEL/Prometheus plugin docs - OTEL OSS Features & Examples — Added OTEL documentation to the OSS features list with usage examples (#3731)
- Anthropic Auth Recommendation — Recommend
ANTHROPIC_AUTH_TOKENoverANTHROPIC_CUSTOM_HEADERSfor Claude Code authentication (#3686)
Installation
Docker
docker run -p 8080:8080 maximhq/bifrost:v1.5.5Binary Download
npx @maximhq/bifrost --transport-version v1.5.5Docker Images
maximhq/bifrost:v1.5.5- This specific versionmaximhq/bifrost:latest- Latest version (updated with this release)
This release was automatically created with dependencies: core v1.5.13, framework v1.3.13. All plugins have been validated and updated.