What's Changed
- temp gotoolchain auto by @akshaydeo in #2809
- temp hack for tests by @akshaydeo in #2810
- temp block docker build by @akshaydeo in #2811
- removed docker build steps by @akshaydeo in #2812
- moves tests to 1.26.2 and 1.26.1 by @akshaydeo in #2813
- ocr test fixes by @akshaydeo in #2814
- revert to old schema by @akshaydeo in #2815
- reduced release pipeline for this cut for go downgrade by @akshaydeo in #2816
- force verstion back to go 1.26.1 by @akshaydeo in #2817
- revert everything to go1.26.1 by @akshaydeo in #2818
- bumped up hello-world dep by @akshaydeo in #2819
- enforce go 1.26.1 by @akshaydeo in #2820
- V1.5.0 by @Pratham-Mishra04 in #2245
- compilation fixes by @akshaydeo in #2830
- logs ux updates by @akshaydeo in #2838
- fix: preserve existing query params in OAuth upstream authorize URL by @Pratham-Mishra04 in #2839
- separate conenction for migrations by @akshaydeo in #2831
- separate streaming clients for avoiding read timeouts by @akshaydeo in #2832
- adds concurrent map fixes for plugin timer by @akshaydeo in #2835
- team budgets by @akshaydeo in #2836
- team budget db structure refactor by @akshaydeo in #2841
- atomic updates to budgets and ratelimits by @akshaydeo in #2844
- refactor: per user oauth cleanups by @Pratham-Mishra04 in #2842
- fix: clean up virtual key configs on provider changes by @danpiths in #2851
- chore: standardize indentation and remove
"use client"directives across UI files by @impoiler in #2785 - feat: Add single log export functionality for logs and the MCP logs sheet by @impoiler in #2847
- chore: reformat UI code with tab indentation and add
make format uitarget by @impoiler in #2850 - chore: Persist the selected time range across relevant pages by @impoiler in #2854
- feat: Adds user detection for multiple user agents and fixes tool reduplication by @roroghost17 in #2795
- fix: sets extra params passthrough for vllm by @roroghost17 in #2796
- chore: fixes UI dropdown colors and spacing by @roroghost17 in #2849
- feat: add filter to exclude access profile managed virtual keys by @BearTS in #2845
- docs: add teams and access profile fields to user response schema by @BearTS in #2846
- fix: disable pointer events on managed fieldset by @BearTS in #2848
- feat: add stream terminal detection and full body accumulation for passthrough streams by @BearTS in #2863
- feat: add OCR request type support and MCP UI/auth improvements by @Pratham-Mishra04 in #2859
- feat: add OCR input logging and detail view by @Pratham-Mishra04 in #2860
- test: add async job TTL integration tests by @Pratham-Mishra04 in #2861
- fix: per-user OAuth support in codemode by @Pratham-Mishra04 in #2862
- fix: add OCR request pricing support by @Pratham-Mishra04 in #2864
- fix: add v1.5.0-prerelease4 migration test coverage and fix calendar_aligned propagation by @Pratham-Mishra04 in #2870
- virtual key fixes by @akshaydeo in #2856
- fix: remove redundant static header assignment in tool execution by @Pratham-Mishra04 in #2872
- docs: add provider authentication UI screenshots and improve documentation by @Pratham-Mishra04 in #2769
- v1.5.0-prerelease4 cut by @akshaydeo in #2874
- v1.5.0-prerelease4 cut by @akshaydeo in #2877
- bring back test flows by @akshaydeo in #2878
- test fixes by @akshaydeo in #2879
- fixed mocker dep --skip-ci by @akshaydeo in #2880
- update scripts to use skip-ci by @akshaydeo in #2881
- removed litellmcompat by @akshaydeo in #2882
- transport changelog by @akshaydeo in #2883
- fix: include rbac loading state in teams page loader by @BearTS in #2885
- split teams views for oss and enterprise by @akshaydeo in #2888
- compilatin fix by @akshaydeo in #2890
- fix: dump all rate limits to DB including access profiles by @danpiths in #2894
- fix: clear
BifrostContextKeyStreamEndIndicatorin context for fallback requests by @Pratham-Mishra04 in #2897 - feat: add
key_idssupport to helm provider configs and update docs by @BearTS in #2891 - feat: add access_profiles schema support to config.json and Helm chart by @BearTS in #2893
- fix: make encryptionKey optional for helm deployments by @BearTS in #2900
- chore: update chart version on helm and add pgres, access provider config example by @BearTS in #2901
- v1.5.0-prerelease5 cut by @akshaydeo in #2903
- feat: adds codex compatibility by @sammaji in #2858
- docs: add
cluster_configreference page and update schema, migration, and Helm docs by @BearTS in #2919 - fix: add service name to helm for bifrost cluster deployment by @BearTS in #2920
- docs: add NGINX reverse proxy deployment guide and example configs by @BearTS in #2921
- feat: add
team_id,calendar_aligned, andvirtual_key_countfields to config schema by @BearTS in #2922 - chore: add Helm and schema sync validation steps to release pipeline by @BearTS in #2924
- fix: creation of budgets and teams together by @BearTS in #2923
- chore: bump bifrost Helm chart version to 2.1.4 by @BearTS in #2925
- fixes otel conversion from built in trace by @akshaydeo in #2934
- fix: normalize null text fields in PydanticAI responses stream chunks by @BearTS in #2935
- chore: restore
onAsyncCheckedChangefor provider key toggle to await update by @impoiler in #2933 - fix: reload provider runtime after create by @danpiths in #2927
- fix: handle keyless provider status updates during reload by @danpiths in #2928
- fix: write multipart metadata before file uploads by @danpiths in #2929
- test: add embedding request coverage for bedrock and cohere by @danpiths in #2932
- feat: add
versionfield support to built-in plugins for DB-backed Helm deployments by @BearTS in #2941 - fix(plugins/otel): OTel metrics doesn't work after 1.4.21 by @tcx4c70 in #2716
- docs: add
versionvalid range (1–32767) and clarify DB-backed field behavior by @BearTS in #2942 - refactor: replace WebSocket live updates with RTK Query polling on logs pages by @impoiler in #2918
- fix: populate extra fields on responses and errors across all pre/post hook paths by @Pratham-Mishra04 in #2926
- refactor: remove log callback wiring from WebSocket handler by @Pratham-Mishra04 in #2940
- chore: skip time range refresh on focus/visibility when polling is disabled by @impoiler in #2956
- SCIM entra documentation fixes by @akshaydeo in #2980
- fixes claude code for vscode doc by @akshaydeo in #2982
- feat: adds missing anthropic params / handling in Vertex by @roroghost17 in #2936
- feat: Standardizes tool stripping and anthropic integration handling against anthropic, vertex and azure by @roroghost17 in #2937
- fix: drops empty tool calls for anthropic claude code request by @sammaji in #2938
- fix: Fixes OTEL exporting to show input and output messages correctly by @roroghost17 in #2957
- fix: updates log details view to show input images from user messages by @roroghost17 in #2983
- docs: add OCR OpenAPI spec, async rerank/OCR endpoints, and update provider support matrix by @Pratham-Mishra04 in #2898
- feat: add cache creation details (5m/1h TTL) for claude models with pricing support by @Pratham-Mishra04 in #2899
- feat: auto-fill incoming model for empty fallbacks in routing rules by @Pratham-Mishra04 in #2908
- fix: resolve request type from pending data before streaming chunk processing by @Pratham-Mishra04 in #2958
- fix: removes redundant IsDefined func by @sammaji in #2950
- fix: use immutable-safe labels for bifrost StatefulSet volumeClaimTemplates by @BearTS in #2943
- feat: sync model config and provider governance bindings from config file to DB by @BearTS in #2944
- feat: add
virtual_key_idto budgets and removebudget_idfrom virtual keys and provider configs by @BearTS in #2945 - fix: normalize
queryfield to validRuleGroupTypeand tighten schema validation by @BearTS in #2946 - feat: support
env.*references for proxy and TLS config fields (ca_cert_pem,url,username,password) by @BearTS in #2948 - feat: add
provider_key_namealias for routing targets and pricing overrides, resolved tokey_idat config load time by @BearTS in #2960 - feat: add Go duration string support for
tool_sync_intervaland hash-based MCP client config reconciliation by @BearTS in #2961 - fix: improve WebSocket
sendMessageSafelynil checks, panic recovery, and client cleanup by @BearTS in #2962 - chore: updates compat plugin docs by @sammaji in #2852
- chore: adds debug loggins in logging plugin lifecycle by @Pratham-Mishra04 in #2991
- feat: add namespace tool type support and flatten for non-OpenAI providers by @sammaji in #2913
- feat: add semantic cache (Redis/Weaviate) and client-config Helm example layers by @BearTS in #2969
- refactor: send relative period to backend instead of computing timestamps client-side by @impoiler in #2966
- feat: add
periodquery param support to log filter endpoints by @impoiler in #2989 - test fixes by @akshaydeo in #3004
- chore: extend migration tests, fix column ignores, add routing rule search, and remove pricing e2e tests by @Pratham-Mishra04 in #3010
- fix: remove raw request passthrough, set SSE headers, and improve passthrough log detail view by @Pratham-Mishra04 in #3011
- docs: clarify
env.*unsupported inguardrails_configand update examples to use explicit placeholder values by @BearTS in #3015 - fix: hide "no results" row while loading and minor logs UI cleanup by @impoiler in #3005
- feat: add enterprise Helm overlays,
business_unitsgovernance support, and deferred VK/provider-config budget ordering by @BearTS in #3008 - feat: add MCP
tool_groupsconfig with governance bindings and camelCase alias support in Helm by @BearTS in #3009 - adds redacted chcek to envvar by @akshaydeo in #3023
- fix: native WebSocket /responses reliability issues by @danpiths in #3018
- v1.5.0-prerelease6 cut by @akshaydeo in #3026
- config.json test case fixes by @akshaydeo in #3027
- enterprise config field skiplist by @akshaydeo in #3028
- fixed index stream length for indexing by @akshaydeo in #3029
- chore: bump bifrost Helm chart version to 2.1.7 by @BearTS in #3024
- fix: Dockerfile.local now uses local packages by @ReStranger in #3036
- fix: fixed shell declaration on nonFHS systems by @ReStranger in #3033
- fix: default provider key
idfromnameifidis absent in Helm by @BearTS in #3058 - fix(semanticcache): deterministic request hashing and CacheDebug propagation in streaming by @loss-and-quick in #3050
- fix(framework): propagate RawRequest through streaming pipeline and fix pool leak by @loss-and-quick in #3046
- fix(plugins/logging): correctly record error status for failed streaming requests by @loss-and-quick in #3044
- fix: remove
isValidfrom save button disabled check, makeocrfields optional, and normalize indentation in schemas by @impoiler in #3051 - claude code doc update by @akshaydeo in #3071
- fix: use UTC in
resolvePeriodtime calculation by @impoiler in #3075 - bedrock cli compatibility changes by @akshaydeo in #3053
- adds message filter flow for log details messages by @akshaydeo in #3054
- vertex + anthropic fixes by @akshaydeo in #3055
- env var updates by @akshaydeo in #3061
- guardrails helm chart upgrade by @akshaydeo in #3062
- fix(openai): preserve responses tool fields by @princepal9120 in #3063
- feat: add
schemas.Durationtype with Go duration string support for MCP, Redis, Weaviate, and mocker duration fields by @BearTS in #3089 - feat: add
x-bf-dim-*unified dimension headers forwarded to logs, traces, Prometheus, and Maxim tags by @BearTS in #3072 - fix: make OAuth token
expires_atnullable and guard refresh/reconnect on nil expiry by @BearTS in #3084 - fix: adds base_url to network_config for backward compatibility by @sammaji in #2953
- feat: updates logging plugin to store and show finish reason in LLM calls by @roroghost17 in #3070
- fix: route vertex multi-region-only models to multi-region endpoints incase the provider key is setup with single region only by @danpiths in #3081
- feat: removes password auth limitation by @roroghost17 in #3085
- fix: fix input and output messages propagation to root span for OTEL by @roroghost17 in #3086
- fix: add sticky headers and footers to sheet panels with layout refactor by @impoiler in #2892
- fix: use virtual key
valueinstead ofidfor API key selector and filter by @impoiler in #3080 - feat: replace
SelectwithComboboxSelectin routing rules to support search and selection by @impoiler in #3090 - fix: fallback to network config if key config url is not set for ollama and sgl by @sammaji in #3074
- chore: adds apply step to helm charts by @sammaji in #3083
- chore: sync teams table search, pagination, and dialog state to URL query params by @impoiler in #3095
- refactor: fix indentation and conditional rendering in
securityViewby @impoiler in #3097 - fix: snapshot RequestType before closure to prevent pool-reuse corruption in streaming requests by @Pratham-Mishra04 in #3065
- docs: add GKE Workload Identity Federation guide for Vertex AI by @danpiths in #3096
- feat: add opt-in per-request overrides for content logging and raw request/response visibility by @Pratham-Mishra04 in #3066
- feat: auto-resolve provider when no provider prefix is given on inference routes by @Pratham-Mishra04 in #3067
- feat: auto-resolve provider when no provider prefix is given on integration routes by @Pratham-Mishra04 in #3068
- docs: add default provider resolution docs by @Pratham-Mishra04 in #3069
- refactor: inherit provider keys from global client in semanticcache plugin by @Pratham-Mishra04 in #3079
- chore: updates sidebar link for compat plugin by @sammaji in #3098
- fix: allow self-looping chain rules to continue evaluating subsequent rules instead of halting by @Pratham-Mishra04 in #3082
- fix: move list models output to response tab and hide tools tab for list models logs by @Pratham-Mishra04 in #3087
- feat: add external base url support for reverse proxy mcp oauth by @Pratham-Mishra04 in #3088
- chore: add log level param to AppendRoutingEngineLog and trim unused deps from semanticcache by @Pratham-Mishra04 in #3103
- add audio base64 encoding support to OpenAI realtime provider by @Mahmoud-Khater in #2979
- test: add roundtrip test for input_audio_buffer.append audio serialization by @danpiths in #3104
- fix: correct
governance_budgetsjoin condition to usevirtual_key_idby @impoiler in #3077 - refactor: replace
SelectwithComboboxSelectfor assignment fields and improve table layout in virtual keys by @impoiler in #3105 - fix entra documentation by @akshaydeo in #3112
- cleanups in image alt names by @akshaydeo in #3113
- perf: cache routing rules per scope upfront and add model-catalog routing engine label and icon by @Pratham-Mishra04 in #3110
- chore: adds ollama and vllm key configs in llmtests by @sammaji in #3109
- feat: add db migrations and live-reload for per-request content storage and raw override flags by @Pratham-Mishra04 in #3117
- chore: bump
axios,uuid, andpostcssto latest versions by @impoiler in #3107 - fix: UI layout and indentation cleanup across sheets, cluster page, and forms by @impoiler in #3108
- fix: strip
google/prefix from Vertex model IDs across all request types by @BearTS in #3102 - fix: filter out unconfigured providers in default routing by @Pratham-Mishra04 in #3119
- fix: hide delete option in log detail views when user lacks delete access by @impoiler in #3111
- refactor: replace
SelectwithComboboxSelectin pricing overrides and virtual keys filters by @impoiler in #3114 - docs: document
x-bf-dim-*unified dimensions and deprecatex-bf-prom-*headers by @BearTS in #3099 - feat: scope model list endpoints to VK-allowed providers and models via request headers by @BearTS in #3094
- feat: adds finish reasons to root spans and fixes model and provider name in root spans in OTEL by @roroghost17 in #3115
- fix: fixes stripping of vk for websocket responses by @roroghost17 in #3118
- feat: add Kubernetes pod-discovery RBAC templates and bump Helm chart to 2.1.9 by @BearTS in #3120
- chore: show password dashboard on none authtype and docs change by @roroghost17 in #3124
- feat(dashboard): add local cache hit rate speedometer by @loss-and-quick in #3056
- fix: standardize
ChartCardheight and layout using fixed height and flex grow by @impoiler in #3128 - fix: remove
isValidgate from save buttons, fix dialog overflow, and clean up indentation by @impoiler in #3130 - fix: remove
MarshalJSONauto-redaction and apply explicit redaction for env-backed fields inProxyConfig,ClientConfig, andAzureKeyConfigby @impoiler in #3136 - fix: improve bifrost bin arg parsing, env override, temp dir isolation, and version URL resolution by @impoiler in #3123
- feat: add passthrough streaming accumulation by @Pratham-Mishra04 in #3135
- fix: websocket responses working and improve websocket responses logging and cost tracking by @danpiths in #3144
- fix: fix migrations for conflicts by @roroghost17 in #3145
- fix: fixes cost info in OTEL calls and response tools by @roroghost17 in #3146
- fix: small ui fixes for popover content scrolling by @roroghost17 in #3147
- v1.5.0-prerelease7 cut by @akshaydeo in #3148
- clsutering docs update by @akshaydeo in #3156
- enterprise changelogs by @akshaydeo in #3160
- chore: formats values.schema.json by @sammaji in #3129
- fix: helm values schema config by @sammaji in #3133
- chore: updates helm index by @sammaji in #3142
- separate oss and enterprise section by @akshaydeo in #3162
- refactor: move raw request extraction to final chunk processing in streaming accumulator by @Pratham-Mishra04 in #3165
- feat: split mcp external base url into separate server and client URL fields by @Pratham-Mishra04 in #3166
- feat: add
objectStorageExcludeFieldsto keep selected log payload fields in DB instead of offloading to object storage by @BearTS in #3163 - fix: resolve
tools_to_executeandtools_to_auto_executefrom existing config before validation in MCP client update by @BearTS in #3155 - fix: add
no-scrollbarutility class and applyno-padding-parentto SCIM page by @impoiler in #3157 - adjust api key auth for the middleware by @akshaydeo in #3168
- fix: skips model catalog routing if loadbalancer / governance routing has already set the provider in anthropic integration by @roroghost17 in #3158
- update context when auth config is disabled by @akshaydeo in #3173
- [fix]: set extra params passthrough for SGL provider by @hensapir in #2988
- test case fixes by @akshaydeo in #3176
- adds missing changelogs by @akshaydeo in #3179
- adds structredoutput fallback for bedrock converse api by @akshaydeo in #3184
- fix: fixes namespace in ResponseToolMessage to work correctly with Codex CLI by @roroghost17 in #3167
- fix(bedrock): omit toolChoice.tool on Llama for synthetic structured-output tool by @ryan-orphic in #3196
- fix: forward extra headers on responses websocket upstreams by @danpiths in #3204
- feat: move trial expiry indicator from sidebar to sticky
TrialExpiryBannercomponent by @impoiler in #3205 - fix: cache OAuth2 token source to eliminate per-request overhead by @danpiths in #3206
- test harness for quick checks by @akshaydeo in #3186
- gemini named content cache support by @akshaydeo in #3194
- anthropic computer use fixes across proivder by @akshaydeo in #3195
- adds trace attribute flow by @akshaydeo in #3219
- feat: adds container creation cost support by @roroghost17 in #3214
- fix: avoid provider update stalls under high load by @danpiths in #3208
- feat: adds container api support to azure by @roroghost17 in #3215
- feat: add
disabledfield to MCP clients for toggling connection and workers without removal by @Pratham-Mishra04 in #3076 - feat: support OAuth credential rotation (
client_id/client_secret) for existing MCP clients via edit flow by @BearTS in #3209 - fix: backfill
Modelin embedding response when provider omits it by @BearTS in #3197 - fix: add gossip baseline methods and clean up orphaned rate limits on VK update by @danpiths in #3226
- feat: support
EnvVarreferences for MCP OAuthclient_id/client_secretwith redacted GET responses and batch config fetching by @BearTS in #3230 - fix: gives graceful error for invalid after values by letting upstream provider handle it by @roroghost17 in #3235
- streaming error log fixes by @akshaydeo in #3249
- fix: broadcast provider config changes to cluster for keyless providers by @danpiths in #3250
- fix: update
TableOauthConfigtests to useschemas.NewEnvVarforClientID/ClientSecretfields by @BearTS in #3251 - feat: remove direct key bypass from HTTP gateway and Go SDK by @Pratham-Mishra04 in #3241
- fix: handle per-user OAuth re-auth, refresh token expiry, and reconnect UX by @Pratham-Mishra04 in #3211
- fix: add SSE heartbeats and defer trace completion to prevent deadlock on MCP SSE streaming by @Pratham-Mishra04 in #3212
- feat: add
GetTeamByNamelookup to config store interface and RDB implementation by @BearTS in #3239 - fix: replace single
GovernanceRBAC check with granular per-resource access checks by @impoiler in #3225 - feat: enforce RBAC for model provider create/update operations in provider forms and config views by @impoiler in #3228
- feat: add RBAC access control to routing rules view, edit, and create actions by @impoiler in #3231
- feat: add RBAC permission check to MCP tool groups route by @impoiler in #3236
- docs: clarify Entra API permission types, manifest fields, role assignment requirements, and add bulk sync troubleshooting by @impoiler in #3237
- feat: add
parent_request_id,user_ids, andaliasesURL state filters to dashboard by @impoiler in #3247 - feat: enforce unique
governance_teams.namewith deduplication migration by @BearTS in #3242 - fix: remove duplicate
GetOauthConfigsByIDsfromMockConfigStoreby @BearTS in #3252 - docs: add budget-to-budgets breaking change to v1.5.0 migration guide by @danpiths in #3256
- docs: fix cross-references after breaking change renumbering by @danpiths in #3257
- feat: support optional
txparameter inDeleteVirtualKeyfor external transaction reuse by @BearTS in #3260 - fix: temporarily disable OAuth credential rotation and header reconnect logic in MCP client update by @BearTS in #3263
- fix: governance budgets in model providers not saving after restart with UI fixes by @roroghost17 in #3262
- fix: fixes prometheus telemetry plugin nil config by @roroghost17 in #3269
- fix: use simple-query protocol for migration pools to prevent cached plan errors by @Pratham-Mishra04 in #3264
- refactor: change
IsActiveandEnabledfields to pointer types with nil-as-default semantics by @Pratham-Mishra04 in #3267 - entra doc updates by @akshaydeo in #3266
- doc: fixes typo in migration docs by @sammaji in #3265
- fix: exclude
oauth_client_idandoauth_client_secretfrom config field validation by @Pratham-Mishra04 in #3270 - fix: fix table name for provider governance display issue by @roroghost17 in #3273
- docs: update codex docs to inform non-openai models are not supported via openai websockets integration by @sammaji in #3271
- 1.5.0 stable cut by @akshaydeo in #3272
- helm chart fixes by @akshaydeo in #3275
- feat: add
cached_content_*capability fields to schema and ignoreoauth_client_id/oauth_client_secretin schemasync by @BearTS in #3276 - nukes failing test http by @akshaydeo in #3277
- nukes failing test http by @akshaydeo in #3279
New Contributors
- @loss-and-quick made their first contribution in #3050
- @princepal9120 made their first contribution in #3063
- @Mahmoud-Khater made their first contribution in #2979
- @hensapir made their first contribution in #2988
- @ryan-orphic made their first contribution in #3196
Full Changelog: ent-v1.3.21-base...ent-v1.4.0-base