github maximhq/bifrost core/v1.14.0
Core v1.14.0

latest releases: plugins/telemetry/v1.9.3, plugins/semanticcache/v1.7.3, plugins/routing/v1.2.3...
3 hours ago

Core Release v1.14.0

  • feat: relays to non-LLM APIs with a single credential, per-route pricing and usage mapping, streaming, header matchers on any header name, and relay plugin hooks for access, budgets and logging
  • feat: AWS SageMaker provider for real-time endpoints (OpenAI-compatible chat) plus InvokeEndpoint and InvokeEndpointWithResponseStream passthrough
  • feat: MiniMax provider for chat, Responses, image generation, video generation, speech and transcription
  • feat: BytePlus ModelArk provider for Seed chat, native Responses, multimodal embeddings, Seedream image generation, editing and streaming, and Seedance video generation with task options
  • feat: Azure AI Speech text-to-speech and transcription (use_speech_endpoints), Voice Live realtime sessions (use_voice_live_endpoints) and GPT Live, with voices in list models, Ocp-Apim-Subscription-Key support, the served model and billing header, and Whisper usage derived from audio duration
  • feat: Bedrock Nova Sonic realtime through the OpenAI Realtime translator and a RealtimeConnector for providers that do not speak WebSocket
  • feat: mcp-go v1.3.0 with a global and per-server max protocol version, upstream prompts, resources and resource templates, tool output schemas, titles, icons and multimodal results, tools/list_changed notifications, CIMD client registration, and HTTP connection reuse for per-call clients
  • feat: GitHub Copilot keys take a PAT or OAuth token, Claude models route to /v1/messages, and OpenAI models get native Responses and embeddings

    The GitHub App installation mode and GithubCopilotKeyConfig are removed. A GitHub Copilot key needs a token in value.
  • feat: native decisions on vLLM, SGLang, Databricks System One and Azure gpt-6-luna; OpenAI decisions accept conversation items, JSON parts and prompt caching
  • feat: per-provider passthrough route allowlist, reachable for custom providers through x-model-provider
  • feat: Vertex aliases route to custom OpenAI-format Vertex endpoints through vertex_endpoint
  • feat: Gemini 4 receives a thinking budget as thinkingLevel (up to 1024 low, up to 8192 medium, higher high)
  • feat: Gemini long-decode continuation tokens are passed through
  • feat: Fireworks Responses requests honour disable_store
  • feat: Databricks lists the key's models and aliases in /v1/models
  • feat: developer messages are sent as system to models whose datasheet row sets supports_developer_role to false, and mid-conversation system messages are folded for models that reject them (thanks @salarali!)
  • feat: opted-in metadata propagates to realtime and Live units
  • feat: Tracer.HoldTraceFlush and Span.SetStartTime
  • fix: anthropic - native Sonnet 5.5 requests forward the caller's reasoning and sampling settings on both the typed and raw paths (thanks @valentinyanakiev!)
  • fix: anthropic - streaming message_delta keeps its required delta object and reports only the usage the upstream sent (thanks @valentinyanakiev!)
  • fix: deepseek - document content is rejected before egress on the Anthropic endpoint (thanks @valentinyanakiev!)
  • fix: omit synthetic reasoning signature on bridged Chat Completions thinking blocks (thanks @rxchitrx!)
  • fix: Gemini/Vertex tool-call ids reach the provider without the embedded thought signature - functionCall.id and functionResponse.id are sent as the base id Gemini issued, so the model no longer sees (and copies) a ~500-char id carrying the base64 signature as text; the signature still travels in thoughtSignature (thanks @Vivek1898!)
  • fix: Bedrock streams report a connection lost after the 200 as a 502 from upstream, so Anthropic clients get a retryable api_error instead of invalid_request_error (thanks @dinhxuanvu!)
  • fix: Bedrock requests that fail to connect report a 502 from upstream with type provider_connection_failed instead of resolving to 400 (thanks @dinhxuanvu!)
  • fix: OpenAI-compatible chat streams forward deltas that carry only extra_content (thanks @Javtor!)
  • fix: Bedrock chat tool messages whose content is a single text block render like the equivalent string, so the prompt cache holds across turns; the block's cache_control still becomes the cachePoint after the toolResult
  • fix: Anthropic web search on chat completions keeps the streamed server_tool_use query server-side instead of emitting an orphan tool_calls delta, and web_search_result_location citations map to annotations[].url_citation (thanks @brianhadley2026!)
  • fix: OpenAI Responses requests keep the id and status of a native web_search_call, which OpenAI and Codex backends require on replay (thanks @pcbeingused333!)
  • fix: Bedrock invoke-with-response-stream ends a tool-call turn with stop_reason tool_use instead of end_turn, matching the non-streaming invoke response (thanks @pcbeingused333!)
  • fix: OpenAI passthrough with a caller ChatGPT/Codex token no longer swaps in a stored OpenAI API key, which the ChatGPT backend refused with api_key_not_supported
  • fix: gemini - image generation usage counts thoughtsTokenCount in output tokens (as image reasoning_tokens) and round-trips it on /genai responses
  • fix: Anthropic advisor iterations are billed at the advisor model's rate
  • fix: Bedrock forwards tool strict to Converse toolSpec.strict for Claude, no longer rewrites the fallback-credit beta date, and drops the tool-schema pattern zai.glm-5.3 rejects
  • fix: input_image blocks inside tool outputs get the default detail
  • fix: Responses reasoning delta events keep their required delta field
  • fix: tool_addition / tool_removal blocks are stripped where the mid-conversation tool changes beta is unsupported, and thinking.display updates gets its beta or is downgraded
  • fix: Responses WebSocket accepts response.interrupt
  • fix: realtime turn lifecycles, logs and upstream errors are corrected, and the client socket closes when the upstream ends
  • fix: OpenRouter image generation returns images from message.images and streamed delta.images
  • fix: Databricks sends the output ceiling as max_tokens and reasoning_effort as output_config.effort on adaptive-only Claude
  • fix: unprefixed models on native decision routes are left to routing instead of being pinned to OpenAI or Typesafe
  • fix: ListAllModels bounds each list-models page instead of the whole walk, aliases allowed only by regex entries are listed, and Vertex OAuth keys with deployments or allowlists list the Model Garden catalog
  • fix: Vertex no longer refuses non-chat operations on aliases with a custom endpoint
  • fix: held streams commit as soon as the upstream produces output
  • fix: streaming spans carry token usage, chunk count and TTFC, plugin post-hook spans have real durations, background spans stay out of the overhead breakdown, and multi-turn MCP code-mode requests keep upstream time across turns
  • fix: MCP returns a clear error on upstream input_required, treats a 404 as a dead session only on revisions with sessions, and refreshes a rejected credential in the background when an auth retry is skipped

Installation

go get github.com/maximhq/bifrost/core@v1.14.0

This release was automatically created from version file: core/version

Don't miss a new bifrost release

NewReleases is sending notifications on new releases.