> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getbifrost.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# v1.6.4

> v1.6.4 changelog - 2026-07-14

<Tabs>
  <Tab title="NPX">
    ```bash theme={null}
    npx -y @maximhq/bifrost --transport-version v1.6.4
    ```
  </Tab>

  <Tab title="Docker">
    ```bash theme={null}
    docker pull maximhq/bifrost:v1.6.4
    docker run -p 8080:8080 maximhq/bifrost:v1.6.4
    ```
  </Tab>
</Tabs>

<Update label="Bifrost(HTTP)" description="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](https://github.com/Purvi09)!)
  * **ElevenLabs Sound Effects** - Added text-to-sound generation support via `/v1/sound-generation` (thanks [@SecretSun](https://github.com/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](https://github.com/johnbrett)!)
  * **Canonical Model Names** - Dashboard model rankings now show canonical model names instead of inference-profile IDs (thanks [@satyamkrishna](https://github.com/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](https://github.com/eyeveil)!)
  * **OpenShift Arbitrary UIDs** - Build-time group-0 ownership with no runtime chown (thanks [@eyeveil](https://github.com/eyeveil)!)
  * **Passthrough Virtual Key Attribution** - Passthrough calls via the Azure `api-key` header now attribute to the virtual key (thanks [@eyeveil](https://github.com/eyeveil)!)
  * **Rerank for Custom Providers** - `/v1/rerank` now works with custom OpenAI-compatible providers (thanks [@eyeveil](https://github.com/eyeveil)!)
  * **Responses Stream Usage** - Persist stream usage when providers omit or reuse sequence numbers (thanks [@eyeveil](https://github.com/eyeveil)!)
  * **Wildcard allowed\_models Repair** - Repair bare wildcard `allowed_models` rows that broke admin provider updates (thanks [@eyeveil](https://github.com/eyeveil)!)
  * **Streaming Error Panic** - Nil-safe tracing span lookup prevents panics on streaming errors (thanks [@eyeveil](https://github.com/eyeveil)!)
  * **Anthropic Tool ID Sanitization** - Sanitize `tool_use`/`tool_result` ids to Anthropic's charset (thanks [@Shaik-Sirajuddin](https://github.com/Shaik-Sirajuddin)!)
  * **Realtime Transcription Sessions** - Support GA transcription-type sessions in `POST /v1/realtime/client_secrets` (thanks [@Shaik-Sirajuddin](https://github.com/Shaik-Sirajuddin)!)
  * **Diarized Transcription** - Support `diarized_json` segments and ElevenLabs speaker passthrough (thanks [@Shaik-Sirajuddin](https://github.com/Shaik-Sirajuddin)!)
  * **Model Discovery** - Skip disabled keys when scheduling model-discovery fetches (thanks [@Shaik-Sirajuddin](https://github.com/Shaik-Sirajuddin)!)
  * **MCP Timeout Placeholder** - Show the real global default in the MCP tool execution timeout placeholder (thanks [@Shaik-Sirajuddin](https://github.com/Shaik-Sirajuddin)!)
  * **Redacted Thinking Round-Trip** - Round-trip Anthropic `redacted_thinking` blocks on the Responses surface (thanks [@fus3r](https://github.com/fus3r)!)
  * **Streaming Accumulation** - Preserve citation annotations and `finish_reason` in the accumulated streaming response (thanks [@fus3r](https://github.com/fus3r)!)
  * **Gemini Grounded Streaming** - Reset web-search flag when recycling pooled stream state so `web_search_call` items keep emitting (thanks [@fus3r](https://github.com/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](https://github.com/jeremym-tanium)!)
  * **Bedrock Reasoning Config** - Preserve `reasoning_config` on cross-provider translation so fallbacks keep extended thinking (thanks [@Purvi09](https://github.com/Purvi09)!)
  * **Anthropic tool\_search** - Forward and rebuild server-side `tool_search` on the Responses path (thanks [@ws4charlie](https://github.com/ws4charlie)!)
  * **OpenAI Responses Input** - Strip `role` from non-message input items (thanks [@nettee](https://github.com/nettee)!) and serialize compaction request `input` correctly (thanks [@mcclurmc](https://github.com/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](https://github.com/jeffhos)!)
  * **Pooled Object Hygiene** - Zero pooled ChannelMessage references on release and sweep orphaned deferred spans in trace store TTL cleanup (thanks [@citrocat](https://github.com/citrocat)!)
  * **Hybrid Log Token Usage** - Rebuild token usage from denormalized columns in hybrid log list (thanks [@G-XD](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/nghodkicisco)!)

  ## 🐙 Closed GitHub Issues

  * [#2347](https://github.com/maximhq/bifrost/issues/2347) - MCP tool ordering is non-deterministic, breaking prefix-based prompt caching
  * [#3455](https://github.com/maximhq/bifrost/issues/3455) - Segfault/nil dereference panic in Bedrock provider
  * [#4318](https://github.com/maximhq/bifrost/issues/4318) - allowed\_models persisted as bare "\*" string blocks subsequent provider updates
  * [#4353](https://github.com/maximhq/bifrost/issues/4353) - config.db corruption from masked-key preview in provider\_configs JSON column
  * [#4367](https://github.com/maximhq/bifrost/issues/4367) - Image incompatible with OpenShift arbitrary UIDs
  * [#4402](https://github.com/maximhq/bifrost/issues/4402) - Vertex provider drops image blocks whose URL uses gs\:// scheme
  * [#4477](https://github.com/maximhq/bifrost/issues/4477) - Passthrough calls using a Virtual Key log as actual key
  * [#4679](https://github.com/maximhq/bifrost/issues/4679) - Bedrock Responses API does not signal max\_output\_tokens truncation
  * [#4689](https://github.com/maximhq/bifrost/issues/4689) - Custom providers cannot set budget
  * [#4712](https://github.com/maximhq/bifrost/issues/4712) - ElevenLabs sound effects (/v1/sound-generation)
  * [#4780](https://github.com/maximhq/bifrost/issues/4780) - Anthropic server-side tool\_search results are dropped on /v1/responses
  * [#4834](https://github.com/maximhq/bifrost/issues/4834) - /v1/rerank is not available with custom providers
  * [#4846](https://github.com/maximhq/bifrost/issues/4846) - Responses stream usage present in response.completed but not persisted in LLM Logs
  * [#4851](https://github.com/maximhq/bifrost/issues/4851) - Governance rate-limit reset causes high CPU in BumpRateLimitUsage
  * [#4870](https://github.com/maximhq/bifrost/issues/4870) - Pooled ChannelMessage retains request body, context, and undelivered response while idle
  * [#4940](https://github.com/maximhq/bifrost/issues/4940) - Show canonical model names instead of Bedrock inference-profile IDs in Model Rankings
  * [#4963](https://github.com/maximhq/bifrost/issues/4963) - Streaming finish\_reason dropped from the accumulated (logged) response
  * [#5002](https://github.com/maximhq/bifrost/issues/5002) - gpt-4o-transcribe-diarize transcription fails due to string segment IDs
  * [#5013](https://github.com/maximhq/bifrost/issues/5013) - OpenAI /responses/compact input serialized as a JSON object causing 400
  * [#5027](https://github.com/maximhq/bifrost/issues/5027) - MCP Tool Execution Timeout placeholder shows 0 instead of real global default
  * [#5036](https://github.com/maximhq/bifrost/issues/5036) - Plugin StreamInterceptionError is flattened on integration routes
  * [#5037](https://github.com/maximhq/bifrost/issues/5037) - Disabled keys break provider model discovery
  * [#5051](https://github.com/maximhq/bifrost/issues/5051) - Add Sarvam AI provider (chat + TTS/STT)
  * [#5061](https://github.com/maximhq/bifrost/issues/5061) - Streaming responses drop citation annotations from the accumulated message
  * [#5093](https://github.com/maximhq/bifrost/issues/5093) - Streaming /v1/responses drops Anthropic redacted\_thinking blocks
  * [#5097](https://github.com/maximhq/bifrost/issues/5097) - Anthropic rejects replayed tool\_use/tool\_result ids from non-conforming upstream providers
  * [#5100](https://github.com/maximhq/bifrost/issues/5100) - additional\_tools loses nested tool types on /v1/responses
  * [#5101](https://github.com/maximhq/bifrost/issues/5101) - Chat-to-Responses tool replay sends role on function\_call input items
  * [#5108](https://github.com/maximhq/bifrost/issues/5108) - Bedrock reasoning\_config silently dropped on cross-provider translation
  * [#5113](https://github.com/maximhq/bifrost/issues/5113) - Gemini/Vertex streaming stops emitting web\_search\_call items after first grounded request
</Update>

<Update label="Core" description="1.6.4">
  * feat: add Sarvam AI provider with chat, text-to-speech, and speech-to-text support (thanks [@Purvi09](https://github.com/Purvi09)!)
  * feat: add ElevenLabs sound effects (text-to-sound) support (thanks [@SecretSun](https://github.com/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](https://github.com/Shaik-Sirajuddin)!)
  * fix: support diarized\_json transcription segments and ElevenLabs speaker passthrough (thanks [@Shaik-Sirajuddin](https://github.com/Shaik-Sirajuddin)!)
  * fix: sanitize tool\_use/tool\_result ids to Anthropic's charset (thanks [@Shaik-Sirajuddin](https://github.com/Shaik-Sirajuddin)!)
  * fix: never persist masked provider key previews (thanks [@eyeveil](https://github.com/eyeveil)!)
  * fix: make tracing span lookup nil-safe to prevent panic on streaming errors (thanks [@eyeveil](https://github.com/eyeveil)!)
  * fix: enable rerank for custom OpenAI-compatible providers (thanks [@eyeveil](https://github.com/eyeveil)!)
  * fix: forward and rebuild Anthropic server-side tool\_search on the Responses path (thanks [@ws4charlie](https://github.com/ws4charlie)!)
  * fix: zero pooled ChannelMessage references on release to avoid pinning request bodies (thanks [@citrocat](https://github.com/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](https://github.com/fus3r)!)
  * fix: reset `HasEmittedWebSearch` when recycling pooled Gemini responses stream state so grounded streaming requests keep emitting `web_search_call` items (thanks [@fus3r](https://github.com/fus3r)!)
  * fix: omit role from OpenAI Responses non-message items (thanks [@nettee](https://github.com/nettee)!)
  * fix: serialize OpenAI compaction request `input` correctly (thanks [@mcclurmc](https://github.com/mcclurmc)!)
  * fix: preserve `reasoning_config` on Bedrock cross-provider translation (thanks [@Purvi09](https://github.com/Purvi09)!)
  * fix: preserve Gemini file upload MIME types for GenAI file URI completions
  * fix: Gemini video reference fields map to instances (thanks [@vojthor](https://github.com/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](https://github.com/jeremym-tanium)!)
  * fix: warn callers not to truncate the `#t=` temp-token fragment on MCP inline-auth links (thanks [@MarcusPeng](https://github.com/MarcusPeng)!)
  * fix: add `ExtraContent` to ChatStreamResponseChoiceDelta (thanks [@nghodkicisco](https://github.com/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
</Update>

<Update label="Framework" description="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](https://github.com/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](https://github.com/eyeveil)!)
  * fix: fold streamed output\_text.annotation.added events into the accumulated responses message so citations survive in logging, observability, and cache (thanks [@fus3r](https://github.com/fus3r)!)
  * fix: keep the streaming finish\_reason in the accumulated response when a provider forwards it on a content chunk (thanks [@fus3r](https://github.com/fus3r)!)
  * fix: sweep orphaned deferred spans in trace store TTL cleanup (thanks [@citrocat](https://github.com/citrocat)!)
  * fix: rebuild token usage from denormalized columns in hybrid log list (thanks [@G-XD](https://github.com/G-XD)!)
  * fix: repair bare wildcard allowed\_models rows that break admin provider updates (thanks [@eyeveil](https://github.com/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
</Update>

<Update label="compat" description="0.1.26">
  * chore: upgraded core to v1.6.4 and framework to v1.4.4
</Update>

<Update label="governance" description="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](https://github.com/eyeveil)!)
  * chore: upgraded core to v1.6.4 and framework to v1.4.4
</Update>

<Update label="jsonparser" description="1.5.27">
  * chore: upgraded core to v1.6.4 and framework to v1.4.4
</Update>

<Update label="logging" description="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
</Update>

<Update label="maxim" description="1.6.27">
  * chore: upgraded core to v1.6.4 and framework to v1.4.4
</Update>

<Update label="mocker" description="1.5.27">
  * chore: upgraded core to v1.6.4 and framework to v1.4.4
</Update>

<Update label="modelcatalogresolver" description="1.0.8">
  * chore: upgraded core to v1.6.4 and framework to v1.4.4
</Update>

<Update label="otel" description="1.3.4">
  * fix: send status code on OTEL metrics
  * chore: upgraded core to v1.6.4 and framework to v1.4.4
</Update>

<Update label="prompts" description="1.0.27">
  * chore: upgraded core to v1.6.4 and framework to v1.4.4
</Update>

<Update label="semanticcache" description="1.5.27">
  * chore: upgraded core to v1.6.4 and framework to v1.4.4
</Update>

<Update label="telemetry" description="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
</Update>
