github maximhq/bifrost ent-v2.4.0-base
Enterprise v2.4.0 base

3 hours ago

What's Changed

  • [fix]: Anthropic provider - keep web search server-side on chat completions by @brianhadley2026 in #7656
  • main backmerge by @akshaydeo in #8771
  • fix(core): bound each list-models page, not the whole walk, in ListAllModels by @akshaydeo in #8767
  • docs: add Azure Key Vault and Kubernetes auth to secret management guides by @BearTS in #8562
  • dependabot fixes by @akshaydeo in #8777
  • feat(ui): shared decision-model picker for prompt guardrails by @kohlivrinda in #8487
  • [StepSecurity] Apply security best practices by @stepsecurity-app[bot] in #7045
  • fix(bedrock): render a one-text-block tool result like its string form by @akshaydeo in #8803
  • ci: hold outside-contributor pull request workflows for bifrost-admin approval by @akshaydeo in #8868
  • ci: hold outside-contributor pull request workflows for bifrost-admin approval (main) by @akshaydeo in #8869
  • feat(core): add MiniMax provider for chat, image and video generation by @impoiler in #8622
  • feat(ui): expose MiniMax in the config schema and provider UI by @impoiler in #8623
  • docs: document the MiniMax provider by @impoiler in #8624
  • test(e2e): add MiniMax to CI and the provider harness by @impoiler in #8625
  • feat(core): add MiniMax text-to-speech and speech-to-text by @impoiler in #8636
  • fix(minimax): close provider onboarding gaps by @impoiler in #8651
  • feat(core): add BytePlus ModelArk provider for chat, responses and embeddings by @impoiler in #8652
  • feat(core): add BytePlus Seedream image and Seedance video generation by @impoiler in #8653
  • feat(ui): expose BytePlus in the config schema and provider UI by @impoiler in #8654
  • docs: document the BytePlus provider by @impoiler in #8655
  • test(e2e): add BytePlus to CI and the provider harness by @impoiler in #8656
  • feat(core): stream BytePlus Seedream images and pass Seedance task options through by @impoiler in #8739
  • fix(ui): apply active timezone to date range picker calendar by @impoiler in #8872
  • fix(ui): redesign MCP registry OAuth callback page and update cluster settings icon by @impoiler in #8874
  • fix(ui): allow clearing default cache key and vector store namespace by @impoiler in #8871
  • feat(logstore): add user agent mappings to ClickHouse log store by @impoiler in #8876
  • refactor: replace github copilot app auth with pat and oauth token support by @sammaji in #8661
  • feat: route github copilot claude models to /v1/messages and add native responses and embeddings by @sammaji in #8677
  • feat: add github copilot device-flow sign-in endpoints by @sammaji in #8678
  • feat: replace ui github app credentials with sign in with github for copilot keys by @sammaji in #8662
  • test: add github-copilot e2e coverage for sign-in flow and provider filtering by @sammaji in #8663
  • docs: update github copilot docs and openapi schema by @sammaji in #8664
  • fix: adjust provider icon spacing and alignment by @sammaji in #8870
  • [fix]: show a load error on the providers page by @hmdsefi in #8280
  • fix(governance): govern known users without a presented credential in PreA2AHook by @Pratham-Mishra04 in #8856
  • feat(mcp/oauth): exchange the user's stored sign-in for token exchange when a request carries no identity token by @Pratham-Mishra04 in #8857
  • feat(mcp/oauth2): verify token-exchange clients using the admin's stored sign-in when the request carries no token by @Pratham-Mishra04 in #8858
  • fix(mcp): refresh rejected credentials in the background when an auth retry is skipped by @Pratham-Mishra04 in #8859
  • docs(mcp): document token exchange using the caller's Bifrost sign-in by @Pratham-Mishra04 in #8894
  • feat: add disable_onboarding flag to hide setup checklist on stateless deployments by @impoiler in #8885
  • fix: adds signature fallback to websockets flow by @akshaydeo in #8863
  • adds websockted encrypted content retry by @akshaydeo in #8893
  • [feat]: Export filtered logs to CSV from the Logs page by @Shashank2985 in #8611
  • feat: propagate opted-in metadata to realtime and Live units by @danpiths in #8903
  • fix(databricks): send reasoning_effort as output_config.effort on adaptive-only Claude by @impoiler in #8908
  • fix: correct turn lifecycles, logs, and upstream errors by @danpiths in #8904
  • fix(databricks): send the output ceiling as max_tokens by @impoiler in #8910
  • fix: logstore builds without cgo again by @jeremym-tanium in #8825
  • ci: label pull requests by area from changed paths by @akshaydeo in #8781
  • [fix]: OpenAI provider - forward stream chunks whose delta carries only extra_content by @Javtor in #8935
  • Stop compat from stripping sampling params on datasheet rows without model_parameters by @ege-arhan in #8782
  • feat(tracing): add HoldTraceFlush to delay trace export until background writers finish by @Madhuvod in #8764
  • fix(routing): skip complexity classification when other rule conditions already decide the outcome by @Madhuvod in #8875
  • fix(decisions): leave unprefixed models for routing instead of pinning to OpenAI or Typesafe by @Madhuvod in #8913
  • feat(ui): add assigned user email column to virtual keys CSV export by @impoiler in #8945
  • feat(helm): add configurable PodDisruptionBudget for cluster mode by @CarlosLanderas in #8911
  • perf(logstore): add one-pass usage reads for per-entity rollups by @impoiler in #8747
  • feat(warp topics):topic labelling by @kohlivrinda in #7695
  • fix(ui): correct STDIO Docker notice to say the official image lacks runtimes by @Pratham-Mishra04 in #8930
  • feat(warp topics): topics e2e tests by @kohlivrinda in #7700
  • feat(governance): add per-project content logging override that takes precedence over the virtual key by @Pratham-Mishra04 in #8931
  • docs(governance): document per-project content logging override by @Pratham-Mishra04 in #8932
  • fix: normalize github copilot provider name in datasheet pricing by @sammaji in #8946
  • feat: provider level passthrough routes allow list by @TejasGhatte in #8798
  • feat: support openai format custom deployments on vertex by @TejasGhatte in #8736
  • feat(ui): let owner-governed virtual keys stay editable and confirm assigning owned keys to Virtual MCPs by @BearTS in #8805
  • feat(audit): record entity changes from management handlers by @impoiler in #8532
  • docs(audit): document event names, diffs, system events and signing keys by @impoiler in #8534
  • feat(warp topics):add clustering tables by @kohlivrinda in #8096
  • feat(warp topics): write topics to the log store by @kohlivrinda in #8390
  • feat(warp topics): file requests under topics as they are indexed by @kohlivrinda in #8391
  • feat(warp topics): discover topics from the pool and keep them in shape by @kohlivrinda in #8392
  • feat(warp topics): count topics over a window with trends, metrics and scoped reads by @kohlivrinda in #8393
  • feat(warp topics): filter logs by topic and link topics to their requests by @kohlivrinda in #8394
  • feat(warp topics): group topics into themes by @kohlivrinda in #8395
  • feat(warp topics): embed what the person asked, not the agent's reminders by @kohlivrinda in #8396
  • feat(warp): prunde dead topic rows and forget deleted logs by @kohlivrinda in #8457
  • feat(warp topics): updated ux by @kohlivrinda in #8591
  • feat(warp): add config.json support by @kohlivrinda in #8790
  • feat(warp):move to responses streaming by @kohlivrinda in #8791
  • feat(decisions): add native gpt-6-luna decision support to the Azure provider by @Madhuvod in #8973
  • fix: openai ws response.interrupt event by @TejasGhatte in #8743
  • fix: gemini continuation token by @TejasGhatte in #8779
  • docs(enterprise): document audit log storage move to log store and legacy view by @impoiler in #8965
  • fix: openrouter image gen response by @TejasGhatte in #8851
  • fix: mid conv tools by @TejasGhatte in #8852
  • fix: update display type thinking by @TejasGhatte in #8942
  • feat: client settings to skip access-profile user virtual key creation and deletion by @BearTS in #8719
  • fix(ui): skip RBAC-dependent queries the signed-in user cannot read by @BearTS in #8862
  • feat(helm): add access profile virtual key skip options and Okta syncAllUsers (v2.1.46) by @BearTS in #8720
  • fix(deps): resolve open dependabot alerts by @akshaydeo in #8986
  • [fix]: Bedrock provider - report a failed connection as a 502 from upstream by @dinhxuanvu in #8971
  • [fix]: Bedrock provider - report a mid-stream connection drop as a 502 from upstream by @dinhxuanvu in #8964
  • [fix]: Bedrock provider - report tool_use stop_reason on invoke-with-response-stream by @pcbeingused333 in #8633
  • fix(anthropic): omit synthetic signature on bridged reasoning blocks by @rxchitrx in #8701
  • fixes bedrock response convertor for automatic cache control (#8573) by @akshaydeo in #8597
  • fix(bedrock): forward tool strict to Converse toolSpec.strict for Claude by @akshaydeo in #8977
  • fix: commit held streams as soon as the upstream produces output by @akshaydeo in #8933
  • [fix]: Gemini - send the provider the tool-call id it issued, not the signature-joined one by @Vivek1898 in #8565
  • config: keep the runtime classifier on reload and serialize SQLite client-config writes by @akshaydeo in #7940
  • fix orphan matview refreshes by @akshaydeo in #8826
  • feat(decisions): add native System One (OpenJev) decision support to the Databricks provider by @Madhuvod in #8979
  • feat(warp): topics fixes by @kohlivrinda in #8992
  • feat(warp topics): add pending-deletes table by @kohlivrinda in #8998
  • feat(ui): add view-as user mode to topbar with CORS support for X-Bifrost-View-As header by @impoiler in #8918
  • fix(mcp): propagate header credential cache evictions to other processes after writes by @Pratham-Mishra04 in #8996
  • fix(mcp/oauth2): propagate token cache evictions to other processes after provider token writes by @Pratham-Mishra04 in #8997
  • feat(ui): show fallback chain banner and timeline in log details by @impoiler in #8941
  • fix(databricks): keep key aliases unprefixed when a virtual key load balances them by @impoiler in #9039
  • fix(models): backfill aliases allowed only by regex entries in list models by @Pratham-Mishra04 in #8987
  • fix(vertex): list Model Garden catalog for OAuth keys with deployments or allowlists by @Pratham-Mishra04 in #8988
  • feat(oauth2): add extension hooks for custom grant types, discovery metadata, and token validation by @BearTS in #8953
  • feat(mcp): Cross App Access (id_jag) profile for token exchange by @BearTS in #8959
  • feat(ui): configure the Cross App Access token-exchange profile by @BearTS in #8960
  • feat(ui): edit the OAuth issuer URL under Settings > Security by @BearTS in #8993
  • improved github workflows by @akshaydeo in #9015
  • release approver by @akshaydeo in #9016
  • [feat]: add optional browser login to CLI auth print-token by @CallumWayve in #8671
  • dependabot fixes by @akshaydeo in #9073
  • feat: add terraform module for vLLM, SGLang and Ollama on runpod by @sammaji in #7175
  • feat: add native decision support for vllm and sgl providers by @sammaji in #8974
  • docs: document native decisions support for vllm and sglang providers by @sammaji in #8975
  • fix: closes realtime client socket when upstream ends by @sammaji in #8629
  • feat: adds realtime connector for non-websocket providers by @sammaji in #8630
  • feat: adds openai realtime translator for bedrock nova sonic by @sammaji in #8631
  • fix: send developer messages as system and fold mid conversation system messages by @sammaji in #8884
  • feat: add nova sonic realtime support to bedrock provider by @sammaji in #8588
  • feat: support disable_store for fireworks responses requests by @sammaji in #8883
  • test: add realtime api e2e suite for openai, azure, and bedrock nova sonic by @sammaji in #8632
  • chore: add bedrock nova sonic realtime documentation by @sammaji in #8589
  • chore: add harness cases for developer role and mid-conversation system message handling by @sammaji in #9028
  • [feat]: Add Azure Blob Storage support by @CallumWayve in #9053
  • fix(oauth2): match protected resource metadata to the server url by @akshaydeo in #9007
  • fix(governance): check models named in server tools by @akshaydeo in #9008
  • fix(anthropic): bill advisor iterations by @akshaydeo in #9009
  • fix(npx): verify downloaded gateway binary checksum by @akshaydeo in #9010
  • fix(warp topics): labels and merges by @kohlivrinda in #9077
  • refactor(warp topics): run upkeep as a job in the topics partition by @kohlivrinda in #9137
  • test(warp): skip internal filter fields and stub vector-delete retry in upkeep test by @kohlivrinda in #9138
  • feat: azure native stt and tts by @TejasGhatte in #8916
  • fix: whisper models cost in json forma by @TejasGhatte in #8917
  • feat(decisions): support conversation items, JSON parts, and prompt caching in OpenAI decisions by @Madhuvod in #9155
  • fix: use speech endpoints field in azure key by @TejasGhatte in #9032
  • feat: azure voice live api by @TejasGhatte in #9033
  • feat: azure integration routes by @TejasGhatte in #9034
  • feat: gpt live api for azure by @TejasGhatte in #9054
  • fix: align bedrock nova sonic realtime handling with live api behavior by @sammaji in #9175
  • feat(chatgpt-passthrough): support Codex ChatGPT sign-in model list and skip stored OpenAI key by @impoiler in #9074
  • docs(codex): document enterprise gateway OAuth sign-in through the identity provider by @impoiler in #9136
  • fix(passthrough): record served service tier in logs by @impoiler in #9187
  • feat: add terraform module for SageMaker on AWS by @sammaji in #8952
  • feat: add aws sagemaker provider by @sammaji in #9002
  • feat: add sagemaker passthrough for InvokeEndpoint and response streaming by @sammaji in #9037
  • chore: add sagemaker provider config to helm chart and config schemas by @sammaji in #9003
  • docs: add sagemaker provider key config to openapi schema and e2e tests by @sammaji in #9004
  • feat(helm): expose PostgreSQL tuning and PVC attributes by @CarlosLanderas in #9186
  • fix(ui): tidy logs header menu and hidden-content error text by @impoiler in #9195
  • feat(warp): helm updates by @kohlivrinda in #9179
  • fix: sweep abandoned oauth_configs rows from never-completed MCP OAuth installs by @impoiler in #8887
  • test(warp): fix unit test by @kohlivrinda in #9191
  • fix: delta in responses stream event by @TejasGhatte in #9161
  • fix: regex pattern model capability drop by @TejasGhatte in #9193
  • chore: update mcp-go to v1.3.0 to support newer protocols by @roroghost17 in #9058
  • adds created at field in model catalog by @akshaydeo in #9190
  • fix: remove endpoint checks for deployments by @TejasGhatte in #9199
  • refactor: move MCP initialization handling to mcp-go by @roroghost17 in #9059
  • perf: reuse HTTP connections and pin legacy protocol version for per-call MCP clients by @roroghost17 in #9060
  • fix: only treat a 404 as a dead MCP session on protocol revisions that have sessions by @roroghost17 in #9061
  • feat: add upstream notifications support in MCP servers by @roroghost17 in #9062
  • fix: clear error when an upstream MCP server returns input_required by @roroghost17 in #9063
  • feat: support CIMD client registration for upstream MCP OAuth by @roroghost17 in #9064
  • feat: support CIMD clients in the MCP OAuth server by @roroghost17 in #9065
  • feat(chatgpt-passthrough): Codex ChatGPT sign-in and Responses stream end on main by @impoiler in #9196
  • feat: add a global and per-server MCP max protocol version setting by @roroghost17 in #9066
  • feat: discover MCP server resources and prompts by @roroghost17 in #9067
  • feat: serve upstream MCP prompts and resources through MCP gateway by @roroghost17 in #9068
  • feat: validate the authorization server issuer for upstream MCP OAuth by @roroghost17 in #9069
  • feat: support MCP tool output schemas, titles, icons and multimodal results by @roroghost17 in #9070
  • feat: log MCP prompt and resource reads by @roroghost17 in #9071
  • feat(core): relays to non-LLM APIs and the relay plugin hooks by @BearTS in #9168
  • feat(framework): add relay config store, virtual key grants, relay logs, and async job settlement by @BearTS in #9169
  • feat(governance): relay access grants, budgets, and logging for relay calls by @BearTS in #9170
  • feat: add Relays for proxying non-LLM APIs with usage billing and virtual key grants by @BearTS in #9171
  • feat(ui): dashboard relays page, access changes and docs by @BearTS in #9174
  • feat(relay): log metadata and route-matched headers on relay logs instead of all headers by @BearTS in #9200
  • [fix]: anthropic - render the required message_delta frame and report only the usage the upstream sent by @valentinyanakiev in #7896
  • [fix]: OpenAI provider - keep id and status of a native web_search_call in Responses input by @pcbeingused333 in #8776
  • docs: cover Okta access-token claims for Codex gateway sign-in by @impoiler in #9207
  • test(e2e): relay access, governance and pricing end to end by @BearTS in #9185
  • feat(relay): capture streamed response bodies for relay logs when content logging is enabled by @BearTS in #9202
  • feat(relay): detail-sheet header parity and table-row wording fixes by @BearTS in #9204
  • feat(relay): allow route header matchers on any header name by @BearTS in #9206
  • fix(modelcatalog): store one deterministic price when datasheet rows fold onto one key by @aharshit123456 in #8492
  • fix: fix auth required checks to use the helper ,ethod from mcp-go by @roroghost17 in #9217
  • fix: narrow MCP gateway tools/list with a hook instead of a tool filter with mcp-go update by @roroghost17 in #9218
  • fix: bifrost_overhead_latency_microseconds not showing up in Prometheus by @roroghost17 in #8906
  • docs: update x-bf-lh docs into request options by @roroghost17 in #8907
  • feat(databricks): list key models and aliases in /v1/models by @impoiler in #9226
  • feat(helm): prepare chart 2.1.46 - relays, Cross App Access IdP settings, token exchange clientId rule by @BearTS in #9208
  • fix(governance): skip unknown relay and agent grants on new virtual keys instead of failing startup by @BearTS in #9214
  • fix(relay): replace virtual key relay grants follow the same pattern for split mode by @BearTS in #9215
  • fix(ui): remove "new" badge from A2A agents sidebar item by @BearTS in #9210
  • fix(ui): align relay screens with the rest of the app by @BearTS in #9224
  • feat(relays): import routes from an OpenAPI document fetched by URL by @BearTS in #9225
  • fix: stop rewriting fallback-credit beta header date for bedrock by @sammaji in #9211
  • fix(modelcatalog): fall back to per-image pricing when reported tokens have no rate by @impoiler in #9230
  • feat(ui): inline OpenAPI spec URL fetch button and remove relay logs units metric by @BearTS in #9236
  • fix: price byteplus seedance video by output tokens by @impoiler in #9234
  • [fix]: anthropic - forward a native Sonnet 5.5 caller's reasoning and sampling surface by @valentinyanakiev in #7895
  • ci: run live provider calls through real http, https and socks5 proxies by @akshaydeo in #7577
  • fix: upstream and overhead latency fixes for multi-turn MCP code-mode requests by @roroghost17 in #8912
  • fix: streaming spans missing token usage, chunk count and TTFC by @roroghost17 in #9237
  • fix: handle Ocp-Apim-Subscription-Key in http request by @TejasGhatte in #9222
  • fix: azure list voices in list models by @TejasGhatte in #9229
  • feat(mcp/oauth2): validate token-exchange settings at client create and edit by @Pratham-Mishra04 in #9221
  • fix: billing header and served model in azure by @TejasGhatte in #9232
  • fix: azure live api fixes by @TejasGhatte in #9235
  • chore: backmerge main into dev by @impoiler in #9242
  • fix(models): stop narrowing unfiltered model listings to the caller's virtual key access by @Pratham-Mishra04 in #9178
  • fix: mark an expired OAuth credential with no refresh token as needs_reauth by @roroghost17 in #9239
  • fix: let a public OAuth client change its authorize and token URLs without a client secret by @roroghost17 in #9240
  • fix: azure voice live endpoint pricing by @TejasGhatte in #9244
  • feat: add SetSpanStartTime so a span opened after its work finishes shows the work's real duration by @roroghost17 in #9247
  • fix: config hash relay credential by reference so rotated env values don't re-sync config by @BearTS in #9250
  • fix: give streaming plugin post-hook spans real durations and nest plugin spans under them by @roroghost17 in #9248
  • fix(warp): strip codex wrappers and handle log truncation by @kohlivrinda in #9243
  • fix: leave background spans out of the overhead breakdown by @roroghost17 in #9249
  • fix(ui): remove top alignment from method cell in relay routes table by @BearTS in #9253
  • fix(mcp-logs): open the detail sheet for a selected_log outside the loaded page by @impoiler in #9255
  • fix(openai): default detail on input_image blocks inside tool outputs by @akshaydeo in #9209
  • fix(deepseek): reject document content before egress on the Anthropic endpoint by @valentinyanakiev in #6741
  • feat(helm): support OpenAPI-based MCP clients via openapiConfig by @BearTS in #9254
  • fix(routing): fall back to single-text embeddings on refused batches and correct warmup failure messaging when a fallback is set by @Madhuvod in #9261
  • fix: send a thinking budget to Gemini 4 as thinkingLevel (≤1024 low, ≤8192 medium, higher high) by @akshaydeo in #9262
  • fix(modelcatalog): price image models called over chat and responses by @impoiler in #9263
  • fix(gemini): count thoughtsTokenCount in image generation usage by @impoiler in #9264
  • test: update provider test models for retired and deprecated models by @sammaji in #9268
  • test: skip matview_refresh_state table in migration snapshot comparison by @sammaji in #9269
  • fix: config.json MCP clients use the stored ID when another node stored them first by @roroghost17 in #9270
  • fix(relays): require authenticated admin to change relay credential destination under auth bypass by @BearTS in #9271
  • test(e2e): fix flaky e2e specs across mcp-registry, providers, and placeholders by @impoiler in #9272
  • test: set fixed viewport and add logs table test id for logs e2e tests by @sammaji in #9274
  • feat: add vk metadata to connectors export by @roroghost17 in #9279
  • 2.4.0 by @akshaydeo in #9283
  • workflow changes by @akshaydeo in #9284
  • test(e2e): add secret redaction cases for sagemaker, minimax, and byteplus providers by @BearTS in #9286
  • test: update sgl and vllm decision tests for DecisionData file field by @sammaji in #9288
  • test fixes by @akshaydeo in #9289
  • updates test scripts by @akshaydeo in #9291
  • test fixes by @akshaydeo in #9299
  • fix: offload relay log bodies to object storage on hybrid mode by @BearTS in #9301
  • test: retry runpod pod creation across gpu types and upgrade to stable vllm version for reasoning models by @sammaji in #9293
  • relay handover fix by @akshaydeo in #9303
  • test: add setup token header to warp e2e newman collection by @sammaji in #9294
  • mirro fix by @akshaydeo in #9304
  • tests_fix_failing_warp_tests by @kohlivrinda in #9302
  • fix failing tests by @akshaydeo in #9306

New Contributors

Full Changelog: ent-v2.3.2-base...ent-v2.4.0-base

Don't miss a new bifrost release

NewReleases is sending notifications on new releases.