Skip to main content
npx -y @maximhq/bifrost --transport-version v1.6.4
Bifrost(HTTP)
1.6.4

✨ Features

  • Sarvam AI Provider - Added Sarvam AI as a first-class provider with chat, text-to-speech, and speech-to-text support (thanks @Purvi09!)
  • ElevenLabs Sound Effects - Added text-to-sound generation support via /v1/sound-generation (thanks @SecretSun!)
  • Bedrock Project Scoping - Added optional project_id to Bedrock and Bedrock Mantle key configs with per-alias overrides for Bedrock, Bedrock Mantle, and Vertex, plus UI support
  • Trace Redaction - Phase-scoped redaction and revealing, transient redaction data field for guardrails, and trace content redaction before connector export
  • Durable Background Jobs - New sidekiq background-job table, store methods, and runner with recovery and reaper; cost recalculation migrated to a durable, resumable job with polling instead of SSE
  • Audit Log Object Storage - S3/GCS object storage config schema for audit log archival
  • Alerting Configuration - Alerting schema in config.schema.json with declarative channels and CEL-based rules, Helm chart support, and enterprise fallback pages
  • Model Catalog Pricing - Added pricing data to the model catalog (thanks @johnbrett!)
  • Canonical Model Names - Dashboard model rankings now show canonical model names instead of inference-profile IDs (thanks @satyamkrishna!)
  • OAuth2 Hardening - Allowlist for private-use redirect URI schemes (RFC 8252 §7.1) and a shouldSweep gate on the OAuth2 sweep worker
  • Mirrored Schema Support - schema_url / BIFROST_SCHEMA_URL for mirrored schema locations in isolated deployments
  • Vertex Single-Region Config - Enforce single-region configuration in Vertex key config
  • Helm Chart Updates - bifrost.alerting, audit-log object storage, postgresql.external.port string support, and bifrost.mcp.toolGroups[*].id

🐞 Fixed

  • Governance Rate-Limit Reset CPU - Guards against invalid reset timeouts, parallelized resting-budget flows only when absolutely required, and fixed the calendar-based alignment qualifier
  • Masked Key Persistence - Never persist masked provider key previews to config storage (thanks @eyeveil!)
  • OpenShift Arbitrary UIDs - Build-time group-0 ownership with no runtime chown (thanks @eyeveil!)
  • Passthrough Virtual Key Attribution - Passthrough calls via the Azure api-key header now attribute to the virtual key (thanks @eyeveil!)
  • Rerank for Custom Providers - /v1/rerank now works with custom OpenAI-compatible providers (thanks @eyeveil!)
  • Responses Stream Usage - Persist stream usage when providers omit or reuse sequence numbers (thanks @eyeveil!)
  • Wildcard allowed_models Repair - Repair bare wildcard allowed_models rows that broke admin provider updates (thanks @eyeveil!)
  • Streaming Error Panic - Nil-safe tracing span lookup prevents panics on streaming errors (thanks @eyeveil!)
  • Anthropic Tool ID Sanitization - Sanitize tool_use/tool_result ids to Anthropic’s charset (thanks @Shaik-Sirajuddin!)
  • Realtime Transcription Sessions - Support GA transcription-type sessions in POST /v1/realtime/client_secrets (thanks @Shaik-Sirajuddin!)
  • Diarized Transcription - Support diarized_json segments and ElevenLabs speaker passthrough (thanks @Shaik-Sirajuddin!)
  • Model Discovery - Skip disabled keys when scheduling model-discovery fetches (thanks @Shaik-Sirajuddin!)
  • MCP Timeout Placeholder - Show the real global default in the MCP tool execution timeout placeholder (thanks @Shaik-Sirajuddin!)
  • Redacted Thinking Round-Trip - Round-trip Anthropic redacted_thinking blocks on the Responses surface (thanks @fus3r!)
  • Streaming Accumulation - Preserve citation annotations and finish_reason in the accumulated streaming response (thanks @fus3r!)
  • Gemini Grounded Streaming - Reset web-search flag when recycling pooled stream state so web_search_call items keep emitting (thanks @fus3r!)
  • Vertex gs:// Images - Pass through gs:// image URLs on Vertex Gemini
  • Bedrock Truncation Signal - Signal max_output_tokens truncation on the Responses API (thanks @jeremym-tanium!)
  • Bedrock Reasoning Config - Preserve reasoning_config on cross-provider translation so fallbacks keep extended thinking (thanks @Purvi09!)
  • Anthropic tool_search - Forward and rebuild server-side tool_search on the Responses path (thanks @ws4charlie!)
  • OpenAI Responses Input - Strip role from non-message input items (thanks @nettee!) and serialize compaction request input correctly (thanks @mcclurmc!)
  • additional_tools Support - Added additional_tools message type support, preserving nested tool types on /v1/responses
  • Plugin Stream Errors - Emit structured plugin stream errors on integration routes (thanks @jeffhos!)
  • Pooled Object Hygiene - Zero pooled ChannelMessage references on release and sweep orphaned deferred spans in trace store TTL cleanup (thanks @citrocat!)
  • Hybrid Log Token Usage - Rebuild token usage from denormalized columns in hybrid log list (thanks @G-XD!)
  • MCP Tool Ordering - Deterministic MCP tool ordering for prompt cache stability
  • MCP Inline-Auth Links - Warn callers not to truncate the #t= temp-token fragment (thanks @MarcusPeng!)
  • Gemini Fixes - Web search options map to Google Search grounding, file upload MIME types preserved, and video reference fields map to instances (thanks @vojthor!)
  • OpenAI Parameters - Honor service tier in chat completion and cap max reasoning effort
  • Anthropic Costing - Correct inference geo cost and cache rate for fast mode
  • SecretVar Parsing - Parse SecretVar JSON with ref/env_var fields even when value is absent
  • Telemetry - Forward request id and trace id, reduce metrics cardinality explosion risk, and send status codes on OTEL metrics
  • Dashboard - Preserve active time period when applying dimension filters, adjust bucket size thresholds for month-range durations, show user popover with preferred_username fallback, and filter provider-level keys from the prompt manager selector (thanks @rlex!)
  • API Key Provider Selection - Fixed provider selection for API keys
  • Azure Auth Headers - Pass Azure auth headers in helpers
  • Stream Delta Schema - Added ExtraContent to ChatStreamResponseChoiceDelta (thanks @nghodkicisco!)

🐙 Closed GitHub Issues

  • #2347 - MCP tool ordering is non-deterministic, breaking prefix-based prompt caching
  • #3455 - Segfault/nil dereference panic in Bedrock provider
  • #4318 - allowed_models persisted as bare ”*” string blocks subsequent provider updates
  • #4353 - config.db corruption from masked-key preview in provider_configs JSON column
  • #4367 - Image incompatible with OpenShift arbitrary UIDs
  • #4402 - Vertex provider drops image blocks whose URL uses gs:// scheme
  • #4477 - Passthrough calls using a Virtual Key log as actual key
  • #4679 - Bedrock Responses API does not signal max_output_tokens truncation
  • #4689 - Custom providers cannot set budget
  • #4712 - ElevenLabs sound effects (/v1/sound-generation)
  • #4780 - Anthropic server-side tool_search results are dropped on /v1/responses
  • #4834 - /v1/rerank is not available with custom providers
  • #4846 - Responses stream usage present in response.completed but not persisted in LLM Logs
  • #4851 - Governance rate-limit reset causes high CPU in BumpRateLimitUsage
  • #4870 - Pooled ChannelMessage retains request body, context, and undelivered response while idle
  • #4940 - Show canonical model names instead of Bedrock inference-profile IDs in Model Rankings
  • #4963 - Streaming finish_reason dropped from the accumulated (logged) response
  • #5002 - gpt-4o-transcribe-diarize transcription fails due to string segment IDs
  • #5013 - OpenAI /responses/compact input serialized as a JSON object causing 400
  • #5027 - MCP Tool Execution Timeout placeholder shows 0 instead of real global default
  • #5036 - Plugin StreamInterceptionError is flattened on integration routes
  • #5037 - Disabled keys break provider model discovery
  • #5051 - Add Sarvam AI provider (chat + TTS/STT)
  • #5061 - Streaming responses drop citation annotations from the accumulated message
  • #5093 - Streaming /v1/responses drops Anthropic redacted_thinking blocks
  • #5097 - Anthropic rejects replayed tool_use/tool_result ids from non-conforming upstream providers
  • #5100 - additional_tools loses nested tool types on /v1/responses
  • #5101 - Chat-to-Responses tool replay sends role on function_call input items
  • #5108 - Bedrock reasoning_config silently dropped on cross-provider translation
  • #5113 - Gemini/Vertex streaming stops emitting web_search_call items after first grounded request
Core
1.6.4
  • feat: add Sarvam AI provider with chat, text-to-speech, and speech-to-text support (thanks @Purvi09!)
  • feat: add ElevenLabs sound effects (text-to-sound) support (thanks @SecretSun!)
  • feat: add ProjectID to Bedrock and Bedrock Mantle key configs with per-alias overrides for Bedrock, Bedrock Mantle, and Vertex
  • feat: add additional_tools message type support
  • feat: force single-region config in Vertex key config
  • feat: phase-scoped redaction and revealing with transient redaction data field, plus ClearPausedStreamBuffer for pause-accumulate stream flows
  • fix: map web search options to Google Search grounding in the Gemini API
  • fix: parse SecretVar JSON with ref/env_var fields even when value is absent
  • fix: cap max reasoning effort in OpenAI
  • fix: honor service tier in OpenAI chat completion
  • fix: support GA transcription-type sessions in POST /v1/realtime/client_secrets (thanks @Shaik-Sirajuddin!)
  • fix: support diarized_json transcription segments and ElevenLabs speaker passthrough (thanks @Shaik-Sirajuddin!)
  • fix: sanitize tool_use/tool_result ids to Anthropic’s charset (thanks @Shaik-Sirajuddin!)
  • fix: never persist masked provider key previews (thanks @eyeveil!)
  • fix: make tracing span lookup nil-safe to prevent panic on streaming errors (thanks @eyeveil!)
  • fix: enable rerank for custom OpenAI-compatible providers (thanks @eyeveil!)
  • fix: forward and rebuild Anthropic server-side tool_search on the Responses path (thanks @ws4charlie!)
  • fix: zero pooled ChannelMessage references on release to avoid pinning request bodies (thanks @citrocat!)
  • fix: round-trip Anthropic redacted_thinking blocks on the responses surface so multi-turn tool use with redacted reasoning can be replayed (thanks @fus3r!)
  • fix: reset HasEmittedWebSearch when recycling pooled Gemini responses stream state so grounded streaming requests keep emitting web_search_call items (thanks @fus3r!)
  • fix: omit role from OpenAI Responses non-message items (thanks @nettee!)
  • fix: serialize OpenAI compaction request input correctly (thanks @mcclurmc!)
  • fix: preserve reasoning_config on Bedrock cross-provider translation (thanks @Purvi09!)
  • fix: preserve Gemini file upload MIME types for GenAI file URI completions
  • fix: Gemini video reference fields map to instances (thanks @vojthor!)
  • fix: accept object-valued tool-call arguments (e.g. tool_search_call) on the Responses API streaming path
  • fix: recover from idle-timeout timer-goroutine panic that could crash the process
  • fix: deterministic MCP tool ordering for prompt cache stability
  • fix: pass through gs:// image URLs on Vertex Gemini
  • fix: signal Bedrock max_output_tokens truncation on Responses API (thanks @jeremym-tanium!)
  • fix: warn callers not to truncate the #t= temp-token fragment on MCP inline-auth links (thanks @MarcusPeng!)
  • fix: add ExtraContent to ChatStreamResponseChoiceDelta (thanks @nghodkicisco!)
  • fix: correct inference geo cost on Anthropic and cache rate for fast mode
  • fix: send MIME type when specified
  • fix: send status code on OTEL metrics
  • fix: reduce telemetry metrics cardinality explosion risk
  • fix: race conditions in tracer span locks
  • fix: pass container block from Anthropic API
  • fix: pass Azure auth headers in helpers
  • chore: upgrade ClickHouse client library
Framework
1.4.4
  • feat: add durable background-job sidekiq table, store methods, and runner with recovery and reaper
  • feat: pass created-by user ID and runner ID through sidekiq job lifecycle, add GetInFlightSidekiqJobByKind to config store interface
  • feat: show canonical model names in dashboard model rankings (thanks @satyamkrishna!)
  • feat: redact trace content before connector export with transient redaction data field
  • feat: force single-region config in Vertex key config
  • fix: persist Responses stream usage when providers omit or reuse sequence numbers (thanks @eyeveil!)
  • fix: fold streamed output_text.annotation.added events into the accumulated responses message so citations survive in logging, observability, and cache (thanks @fus3r!)
  • fix: keep the streaming finish_reason in the accumulated response when a provider forwards it on a content chunk (thanks @fus3r!)
  • fix: sweep orphaned deferred spans in trace store TTL cleanup (thanks @citrocat!)
  • fix: rebuild token usage from denormalized columns in hybrid log list (thanks @G-XD!)
  • fix: repair bare wildcard allowed_models rows that break admin provider updates (thanks @eyeveil!)
  • fix: use AutoMigrate and add runner_id/created_by_user_id columns to sidekiq table migration
  • fix: match model filter on canonical_model_name and restore routing info for cost recalculation
  • fix: forward ScopedDB from HybridLogStore
  • fix: race conditions in tracer span locks
  • chore: upgrade ClickHouse client library
compat
0.1.26
  • chore: upgraded core to v1.6.4 and framework to v1.4.4
governance
1.6.4
  • fix: parallelize resting-budget flows only when absolutely required to reduce lock contention
  • fix: add guards against invalid rate-limit reset timeouts
  • fix: calendar-based alignment qualifier for budget periods
  • fix: attribute passthrough virtual keys sent via Azure api-key header (thanks @eyeveil!)
  • chore: upgraded core to v1.6.4 and framework to v1.4.4
jsonparser
1.5.27
  • chore: upgraded core to v1.6.4 and framework to v1.4.4
logging
1.5.27
  • feat: migrate cost recalculation to durable background sidekiq job with resume and dedup
  • feat: redact trace content before connector export
  • fix: match model filter on canonical_model_name and restore routing info for cost recalculation
  • chore: upgraded core to v1.6.4 and framework to v1.4.4
maxim
1.6.27
  • chore: upgraded core to v1.6.4 and framework to v1.4.4
mocker
1.5.27
  • chore: upgraded core to v1.6.4 and framework to v1.4.4
modelcatalogresolver
1.0.8
  • chore: upgraded core to v1.6.4 and framework to v1.4.4
otel
1.3.4
  • fix: send status code on OTEL metrics
  • chore: upgraded core to v1.6.4 and framework to v1.4.4
prompts
1.0.27
  • chore: upgraded core to v1.6.4 and framework to v1.4.4
semanticcache
1.5.27
  • chore: upgraded core to v1.6.4 and framework to v1.4.4
telemetry
1.5.27
  • feat: add missing connector attributes
  • fix: reduce metrics cardinality explosion risk
  • fix: forward request id and trace id through telemetry
  • chore: upgraded core to v1.6.4 and framework to v1.4.4