Skip to content

Releases: BerriAI/litellm

v1.99.0-dev.2

v1.99.0-dev.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Aug 03:31
418c7c6

Verify Docker Image Signature

All LiteLLM Docker images are signed with cosign. Every release is signed with the same key introduced in commit 0112e53.

Verify using the pinned commit hash (recommended):

A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:v1.99.0-dev.2

Verify using the release tag (convenience):

Tags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.99.0-dev.2/cosign.pub \
  ghcr.io/berriai/litellm:v1.99.0-dev.2

Expected output:

The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - The signatures were verified against the specified public key

What's Changed

  • fix(proxy): log spend for OpenAI passthrough embeddings with unmapped models by @mateo-berri in #37425
  • fix(router): keep acreate_file fallbacks inside the requested model group by @mateo-berri in #37424
  • fix(proxy): record estimated input tokens in spend logs for failed dispatched requests by @mateo-berri in #37365
  • fix: accept bool thinking param instead of crashing with AttributeError by @mateo-berri in #37423
  • refactor(ui): migrate the teams form graph off antd Form onto react-hook-form by @yuneng-berri in #37417
  • fix(ui): restore the cache control Role and Index field hints by @yuneng-berri in #37437
  • feat(ui): add mounted-field projections for the MCP server form graph by @yuneng-berri in #37440
  • refactor(ui): extract the MCP server edit save payload into a pure builder by @yuneng-berri in #37436
  • test: derive vertex batch cost expectation from the cost map by @mateo-berri in #37444
  • refactor(ui): port the create key form off antd Form onto react-hook-form by @yuneng-berri in #37442
  • refactor(ui): port the add model form off antd Form onto react-hook-form by @yuneng-berri in #37446
  • refactor(ui): host KeyLifecycleSettings tests in react-hook-form instead of antd Form by @yuneng-berri in #37449
  • fix(ui): rebuild nested and list paths in the mounted-field projection by @yuneng-berri in #37450
  • fix(ui): gate the pass-through guardrail field inputs when the section is disabled by @yuneng-berri in #37435
  • fix(tests): keep a host PROXY_BASE_URL out of request-derived URL tests by @mateo-berri in #37451
  • refactor(ui): port the MCP server forms off antd Form onto react-hook-form by @yuneng-berri in #37483
  • test(e2e): pin the tag-routing denial to its actual cause by @mateo-berri in #37432
  • fix(proxy): read through to the DB on registry misses so just-created models, guardrails, and agents resolve on sibling replicas by @mateo-berri in #36263
  • fix(mcp): forward the per-server auth header on OpenAPI tool calls by @tin-berri in #37410
  • chore(typing): drop 1.3k basedpyright errors across 42 Any hotspot files by @mateo-berri in #37439
  • test(ui): drive fields with change events where the typing is not the behaviour by @yuneng-berri in #37495
  • fix(ui): restore tab strip styling and panel persistence lost in the shadcn migration by @ryan-crabbe-berri in #37403
  • feat(spend-logs): add lifecycle timestamps by @sytianhe in #37361
  • refactor(ui): migrate the antd Button call sites onto the shadcn Button by @yuneng-berri in #37505
  • test(ui): split the vitest suite into unit, component, integration and type projects by @yuneng-berri in #37488
  • refactor(ptu): give the rollup a source-agnostic deployment record by @yucheng-berri in #37501
  • feat(auto-router)!: scope shadow eval jobs to multiple keys by @tin-berri in #37251
  • refactor(ui): migrate the antd Alert call sites onto the shared Alert by @yuneng-berri in #37513
  • chore(ui): upgrade the dashboard to React 19 by @ryan-crabbe-berri in #37411
  • fix(streaming): accept provider cost objects when propagating usage cost by @devin-ai-integration[bot] in #36593
  • fix(complexity-router): gate the reasoning override on a non-SIMPLE score by @tin-berri in #37500
  • fix(mcp): stop reporting failed OpenAPI tool calls as successes by @tin-berri in #37496
  • feat(e2e): add record/replay transport seam and fixture bundle format by @mateo-berri in #37360
  • fix(proxy): accept inherited model sentinels in project key limits by @mateo-berri in #37515
  • fix(model_prices): add provider-announced deprecation_date to 205 registry entries by @devin-ai-integration[bot] in #37283
  • fix(model_prices): correct gemini 3.1 flash image and deepseek v4 pricing, add openai deprecation dates by @devin-ai-integration[bot] in #37473
  • fix(model_prices): set prompt_cache_min_tokens=4096 for Gemini 3.5/3.6/3.7 Flash and 3.1 Pro Preview by @mateo-berri in #37516
  • fix(anthropic,bedrock): report provider thinking tokens instead of classifying them as text by @devin-ai-integration[bot] in #35998
  • fix(batches): stop one bad output line from zeroing an entire batch's spend by @mateo-berri in #37457
  • feat(e2e): canonical content-based match keys for record-and-replay by @mateo-berri in #37525
  • feat(cli): add lite login --config-claude to wire Claude Code at login by @yassin-berriai in #37507
  • fix(auth): resolve bare model names against wildcard deployments in model access groups by @ryan-crabbe-berri in #37492
  • docs: run only the tests covering your change, leave suites to CI by @devin-ai-integration[bot] in #37528
  • feat(complexity-router): make the reasoning override floor configurable by @tin-berri in #37537
  • fix(ui): drop stale user search answers so Enter commits the current match by @mateo-berri in #37504
  • refactor(ui): migrate the remaining dashboard pages off antd by @ryan-crabbe-berri in #37524
  • feat(proxy): auto-suppress the no-Redis banner for confirmed single-worker deployments by @mateo-berri in #36987
  • fix(proxy): retry spend updates on Postgres deadlock instead of dropping them by @RayJueWang in #34887
  • feat(search): add Amazon Bedrock AgentCore web search provider by @devin-ai-integration[bot] in #36331
  • fix(helm): default litellm-helm to the ghcr.io/berriai/litellm image by @yassin-berriai in #37491
  • refactor(ui): migrate antd Modal onto the shared shadcn Dialog by @yuneng-berri in #37540
  • fix(ui): toggle unlimited budget when its text is clicked by @yuneng-berri in #37547
  • feat(proxy): fast-fail validation for batch input files at /v1/files by @mateo-berri in #37527
  • chore: gitignore CLAUDE.local.md by @devin-ai-integration[bot] in #37545
  • perf(otel): build the credential-scoped tracer Resource once per logger by @yucheng-berri in #37542
  • fix(ci): gate backend unit tests on the pull request's own file list by @yuneng-berri in #37550
  • chore(codeowners): require pricing owner approval for the model prices jsons by @devin-ai-integration[bot] in #37551
  • fix(proxy): initialize the secret manager before resolving os.environ config references by @yassin-berriai in #37544
  • refactor(ui): swap @ant-design/icons for lucide-react by @ryan-crabbe-berri in #37553
  • refactor(ui): migrate shared primitives and common components off antd by @ryan-crabbe-berri in #37521
  • fix(spend-logs): backfill created_at/updated_at from row endTime instead of migration time by @mateo-berri in #37554
  • refactor(ui): migrate the MCP servers pages off antd by @Ryan-...
Read more

v1.99.0-dev.1

v1.99.0-dev.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 19 Aug 04:02
007bd43

Verify Docker Image Signature

All LiteLLM Docker images are signed with cosign. Every release is signed with the same key introduced in commit 0112e53.

Verify using the pinned commit hash (recommended):

A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:v1.99.0-dev.1

Verify using the release tag (convenience):

Tags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.99.0-dev.1/cosign.pub \
  ghcr.io/berriai/litellm:v1.99.0-dev.1

Expected output:

The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - The signatures were verified against the specified public key

What's Changed

  • chore(typing): drop 1.3k basedpyright errors across 30 Any hotspot files by @mateo-berri in #37073
  • fix(proxy): register WebSocket passthrough for OpenAI prefixes by @LHMQ878 in #36151
  • fix(bedrock): report uploaded size in the FileObject returned by managed batch uploads by @devin-ai-integration[bot] in #36392
  • fix(batches): support AWS Bedrock batch cancellation via StopModelInvocationJob by @ArjunPakhan in #34087
  • feat: Async Rust OCR Bridge and MCP OAuth UI Restore by @ArjunPakhan in #31453
  • fix(batches): don't crash logging when a completed batch has no output file by @MUSE-CODE-SPACE in #34067
  • fix(UI): add default model pin to complexity router UI by @tin-berri in #36615
  • feat(ui): add Lite mixed-provider auto-router preset by @tin-berri in #37068
  • feat(ui): link key info header to its user, creator, team, and organization by @ryan-crabbe-berri in #37187
  • fix(guardrails): scan text on /guardrails/apply_guardrail for Azure Content Safety by @yucheng-berri in #36894
  • feat(bedrock): forward LiteLLM identity and metadata into Bedrock requestMetadata by @yassin-berriai in #36861
  • fix(azure): rename max_tokens to max_completion_tokens for gpt-5-chat deployments by @yassin-berriai in #36857
  • fix(bedrock): preserve cache token usage when invocationMetrics replace the usage block by @brian5021 in #36878
  • fix(proxy): registry caches stop per-request tag and end-user Postgres reads in auth by @ryan-crabbe-berri in #36801
  • test(e2e): replay a real tool-search assistant turn back to Bedrock Invoke by @yassin-berriai in #36856
  • fix(proxy): return 400 naming the missing required param on POST /v1/batches by @mateo-berri in #37199
  • fix(ci): bump sqlparse to 0.6.0 to resolve osv-scan CVEs by @mateo-berri in #37200
  • fix(ui): stop pairing key spend with the team budget when a key has no budget by @ryan-crabbe-berri in #37196
  • fix(guardrails): record MCP tool guardrail evaluations and blocks in … by @Scott-Wilson-ZocDoc in #36978
  • fix(proxy): return 400 for non-object metadata and litellm_metadata instead of silent drop or 500 by @mateo-berri in #37203
  • fix(anthropic): preserve optional Responses tool properties by @Scott-Wilson-ZocDoc in #36979
  • feat(ui): add user ID request log filter by @daniel-meismer-zocdoc in #36781
  • fix(anthropic): stop emitting empty thinking blocks on the Responses adapter by @Scott-Wilson-ZocDoc in #36033
  • fix(ui): make per-user usage filter searchable by @daniel-meismer-zocdoc in #36790
  • refactor(ui): decouple bulk invite from the invite user button by @yuneng-berri in #37061
  • fix(helm): bound the migrations Job so a blocked migration cannot stall the release by @yuneng-berri in #36975
  • feat(proxy): let USE_V2_MIGRATION_RESOLVER select the v2 migration resolver by @yuneng-berri in #36258
  • fix(mcp): scope authorization server issuer by @irosh-colombage-ZocDoc2 in #36482
  • fix(responses): unwrap object-form tool_choice before calling the Responses API by @Scott-Wilson-ZocDoc in #36032
  • test(ui): query antd controls accessibly instead of by internal CSS class by @yuneng-berri in #37014
  • fix(proxy): bill cancelled and failed batches that still produced an output file by @mateo-berri in #37205
  • fix(bedrock): read batch usage by payload shape, not by provider name by @marty-sullivan in #37078
  • fix(ui): self-contained searchable user filter on the Usage page by @ryan-crabbe-berri in #37206
  • revert: don't fix mcp scope authorization server issuer by @mateo-berri in #37220
  • fix(mcp): scope authorization server issuer for named MCP servers by @yucheng-berri in #37204
  • test(ui): gate dashboard test assertions with testing-library and jest-dom rules by @yuneng-berri in #37018
  • feat(shadow-eval): name the shadowed key in job responses and the UI headline by @tin-berri in #37221
  • test(ui): assert what collaborators are called with, not merely that they were by @yuneng-berri in #37019
  • fix(logging): stop deepcopying results redaction cannot redact by @marty-sullivan in #36638
  • fix(gemini): price gemini 3.6 flash at Google's introductory rates on every service tier by @devin-ai-integration[bot] in #37197
  • perf(guardrails): stop sending the conversation twice in the noma v2 payload by @itaimodi in #36764
  • fix(streaming): track provider-reported cost when caller omits include_usage by @devin-ai-integration[bot] in #35013
  • fix: stop rust flag from leaking into upstream provider request bodies by @mateo-berri in #37218
  • fix(proxy): return 404 instead of 500 for unresolvable batch and file ids on /v1/batches by @mateo-berri in #37201
  • fix(bedrock): validate file-content retrieval against the configured output bucket (#26335) by @kingdoooo in #31435
  • fix(proxy): reject out-of-range limit on GET /v1/batches with OpenAI-parity 400 by @mateo-berri in #37198
  • fix(batches): price a retrieved batch from its deployment's model and rates (internal copy of #37077) by @mateo-berri in #37219
  • feat(ocr): return Azure Document Intelligence's native payload from /v1/ocr via req_format=native by @devin-ai-integration[bot] in #37194
  • fix(anthropic): fold guardrail-modified leading system rows into top-level system param by @mateo-berri in #37231
  • fix(shadow_eval): copy messages before router call and raise judge output cap by @tin-berri in #37232
  • feat(proxy): add Amazon Comprehend Medical passthrough provider by @mateo-berri in #37229
  • test(ui): settle the in-flight search before the loading tests end by @yuneng-berri in #37227
  • test(cli): use example.com placeholder host in base-url trailing slash test by @ryan-crabbe-berri in #37240
  • feat(complexity_router): operator-defined tier sets for the LLM classifier by @tin-berri in #37226
  • feat(ui): configure the auto router's heuristic scorer from the Admin UI by @tin-berri in #37216
  • fix(shadow_eval): drop unused judge reasoning field and salvage truncated verdicts by @tin-berri in #37239
  • feat(proxy): proactive model deprecation alerts and /model/deprecations endpoint by @mateo-berri in #26900
  • refactor(ui): move dashboard toasts from antd message/notification onto sonner by @ryan-crabbe-berri in #37207
  • feat(guardrails): track bedrock guardrail usage units per invocation by @mateo-berri in #37225
  • fix(proxy): strip callback credentials from the auth object stamped into request metadata by @yucheng-berri in #37233
  • fix(guardrails): retry usage upserts only on connection errors by @mateo-berri in #372...
Read more

v1.98.0-rc.1

v1.98.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Aug 03:12
bc6e7df

Verify Docker Image Signature

All LiteLLM Docker images are signed with cosign. Every release is signed with the same key introduced in commit 0112e53.

Verify using the pinned commit hash (recommended):

A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:v1.98.0-rc.1

Verify using the release tag (convenience):

Tags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.98.0-rc.1/cosign.pub \
  ghcr.io/berriai/litellm:v1.98.0-rc.1

Expected output:

The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - The signatures were verified against the specified public key

What's Changed

Read more

v1.97.0

Choose a tag to compare

@yuneng-berri yuneng-berri released this 16 Aug 02:51
ef84494

Verify Docker Image Signature

All LiteLLM Docker images are signed with cosign. Every release is signed with the same key introduced in commit 0112e53.

Verify using the pinned commit hash (recommended):

A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:v1.97.0

Verify using the release tag (convenience):

Tags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.97.0/cosign.pub \
  ghcr.io/berriai/litellm:v1.97.0

Expected output:

The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - The signatures were verified against the specified public key

What's Changed

Read more

v1.98.0-dev.2

v1.98.0-dev.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 13 Aug 18:00
bd0d135

Verify Docker Image Signature

All LiteLLM Docker images are signed with cosign. Every release is signed with the same key introduced in commit 0112e53.

Verify using the pinned commit hash (recommended):

A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:v1.98.0-dev.2

Verify using the release tag (convenience):

Tags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.98.0-dev.2/cosign.pub \
  ghcr.io/berriai/litellm:v1.98.0-dev.2

Expected output:

The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - The signatures were verified against the specified public key

What's Changed

Read more

v1.96.2

Choose a tag to compare

@yuneng-berri yuneng-berri released this 11 Aug 22:09
83d6d84

Verify Docker Image Signature

All LiteLLM Docker images are signed with cosign. Every release is signed with the same key introduced in commit 0112e53.

Verify using the pinned commit hash (recommended):

A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:v1.96.2

Verify using the release tag (convenience):

Tags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.96.2/cosign.pub \
  ghcr.io/berriai/litellm:v1.96.2

Expected output:

The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - The signatures were verified against the specified public key

What's Changed

  • chore(release): backport proxy request-handling maintenance and refresh runtime deps for 1.96.1 by @yuneng-berri in #36494
  • bump: version 1.96.1 → 1.96.2 (1.96.1 burned by the PyPI storage failure) by @yuneng-berri in #36570

Full Changelog: v1.96.0...v1.96.2

v1.95.1

Choose a tag to compare

@yuneng-berri yuneng-berri released this 11 Aug 22:08
02dd853

Verify Docker Image Signature

All LiteLLM Docker images are signed with cosign. Every release is signed with the same key introduced in commit 0112e53.

Verify using the pinned commit hash (recommended):

A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:v1.95.1

Verify using the release tag (convenience):

Tags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.95.1/cosign.pub \
  ghcr.io/berriai/litellm:v1.95.1

Expected output:

The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - The signatures were verified against the specified public key

What's Changed

  • chore(release): backport proxy request-handling maintenance and refresh runtime deps for 1.95.1 by @yuneng-berri in #36332

Full Changelog: v1.95.0...v1.95.1

v1.91.5

Choose a tag to compare

@yuneng-berri yuneng-berri released this 11 Aug 22:07
9f54da4

Verify Docker Image Signature

All LiteLLM Docker images are signed with cosign. Every release is signed with the same key introduced in commit 0112e53.

Verify using the pinned commit hash (recommended):

A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:v1.91.5

Verify using the release tag (convenience):

Tags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.91.5/cosign.pub \
  ghcr.io/berriai/litellm:v1.91.5

Expected output:

The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - The signatures were verified against the specified public key

What's Changed

  • chore(release): backport proxy request-handling maintenance and refresh runtime deps for 1.91.5 by @yuneng-berri in #36322

Full Changelog: v1.91.4...v1.91.5

v1.97.0-rc.1

v1.97.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Aug 23:40
6a919ae

Verify Docker Image Signature

All LiteLLM Docker images are signed with cosign. Every release is signed with the same key introduced in commit 0112e53.

Verify using the pinned commit hash (recommended):

A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:v1.97.0-rc.1

Verify using the release tag (convenience):

Tags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.97.0-rc.1/cosign.pub \
  ghcr.io/berriai/litellm:v1.97.0-rc.1

Expected output:

The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - The signatures were verified against the specified public key

What's Changed

New Contributors

Full Changelog: v1.97.0-dev.2...v1.97.0-rc.1

v1.96.0

Choose a tag to compare

@yuneng-berri yuneng-berri released this 10 Aug 22:25
8843766

Verify Docker Image Signature

All LiteLLM Docker images are signed with cosign. Every release is signed with the same key introduced in commit 0112e53.

Verify using the pinned commit hash (recommended):

A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
  ghcr.io/berriai/litellm:v1.96.0

Verify using the release tag (convenience):

Tags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:

cosign verify \
  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.96.0/cosign.pub \
  ghcr.io/berriai/litellm:v1.96.0

Expected output:

The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - The signatures were verified against the specified public key

What's Changed

  • feat(prometheus): add service_tier label to latency and spend metrics by @yassin-berriai in #34966
  • fix(aiohttp): keep keep-alive connector config when a session is rebuilt by @yassin-berriai in #34962
  • fix(helm): pin bundled postgres and redis to the bitnamilegacy images by @yassin-berriai in #34963
  • fix(vertex): decide rawPredict passthrough streaming from the request body by @tin-berri in #34672
  • fix(anthropic-adapter): translate stop_sequences and disabled thinking for non-Claude targets by @tin-berri in #34589
  • ci: publish a generated JSON schema for model_prices_and_context_window.json by @mateo-berri in #34816
  • fix(jwt_auth): allow /v1/messages for JWT teams by default by @devin-ai-integration[bot] in #34222
  • fix(proxy): skip team model aliases that point at deleted deployments by @mateo-berri in #34993
  • fix(proxy): report when a model write does not survive the post-write reload by @tin-berri in #34861
  • fix(proxy): reject model writes that corrupt an auto-router pseudo-model by @tin-berri in #34151
  • fix(router_strategy): serialize latency for non-chat responses in lowest-latency routing by @mihidumh in #33290
  • fix(logging): preserve callback order in get_combined_callback_list by @Harsh23Kashyap in #33008
  • fix(router): honor explicit priority=0 in acompletion by @Harsh23Kashyap in #33214
  • fix(router_strategy): serialize latency for non-chat responses in lowest-latency routing by @tin-berri in #35048
  • fix(anthropic-adapter): open the first content block with the real upstream type so reasoning-first streams start with thinking by @Napuh in #34433
  • test(e2e): poll MCP tools across multi-worker lag by @mubashir1osmani in #35047
  • fix(scim): stop provisioning nested group ids as internal users by @ryan-crabbe-berri in #34997
  • chore(typing): clear basedpyright Any errors in proxy management endpoints by @mateo-berri in #35074
  • fix(ui): size Object Permissions card grid by container width by @ryan-crabbe-berri in #35019
  • fix(proxy): allow /key/update to identify the key by key_alias by @ryan-crabbe-berri in #34851
  • feat(ui): split failed requests into their own series on the cache dashboard by @ryan-crabbe-berri in #34862
  • feat(ui): shareable log links via log_id query param on the logs page by @ryan-crabbe-berri in #34879
  • fix(ui): show public model names in usage breakdowns by @mateo-berri in #35107
  • fix(ui): point the navbar and sidebar logos at the dashboard home route by @yuneng-berri in #35041
  • fix(proxy): stop serving stale team model allowlist after /team/update by @mateo-berri in #34266
  • feat(ui): deep link team detail page via ?team= query param by @ryan-crabbe-berri in #35112
  • feat(ui): deep link organization detail page via ?org= query param by @ryan-crabbe-berri in #35117
  • fix(proxy): resolve named credentials on provider-only batch and files calls by @mateo-berri in #35028
  • fix(router): drop duplicate Mapping import that fails ruff F811 by @ryan-crabbe-berri in #35122
  • refactor(rust): make litellm-core the callable messages() SDK; drop the ai-gateway handler by @devin-ai-integration[bot] in #35044
  • fix(otel): make OTLP export work against Grafana Cloud by @yassin-berriai in #35060
  • test(e2e): remove the Presidio guardrail suite by @mubashir1osmani in #35129
  • feat(dashscope): add qwen3.7-plus and qwen3.7-max to the model cost map by @devin-ai-integration[bot] in #35123
  • feat(ui): link organization teams to their team detail pages by @ryan-crabbe-berri in #35120
  • fix(tests): assert Content variants are identified by type, not by the discriminator keyword by @yassin-berriai in #35161
  • fix(mcp): never write discovery results to the row, heal already-stamped rows, and retry failed discovery with backoff by @devin-ai-integration[bot] in #34990
  • fix(vertex_ai): honor per-model gcs_bucket_name on managed-file read path by @devin-ai-integration[bot] in #34847
  • feat(cli): read base_url from persistent config file by @ryan-crabbe-berri in #35015
  • fix(auth): resolve managed batch/file deployment model_id to model name for team access checks by @devin-ai-integration[bot] in #32587
  • fix(vertex_ai): forward function_call id on Vertex Gemini 3+ tool turns by @ljogeiger in #34603
  • build(makefile): give local basedpyright runs the node heap CI uses by @mateo-berri in #35173
  • fix(complexity_router): capture the classifier request body in spend logs by @tin-berri in #35164
  • test(managed-files): lock in store_unified_file_id idempotency on batch retrieve by @devin-ai-integration[bot] in #32601
  • fix(vertex_ai): skip context caching when the cached block ends on a model turn by @mateo-berri in #35172
  • refactor(bedrock): remove the dead BedrockLLM invoke code path by @mateo-berri in #35188
  • fix(pricing): correct gpt-5.4-mini and gpt-5.4-nano token limits by @mateo-berri in #35182
  • feat(cookbook): add a Grafana dashboard for the OTel GenAI metrics by @yassin-berriai in #35159
  • chore(typing): clear basedpyright Any errors in proxy auth, repositories, and openai transforms by @mateo-berri in #35240
  • fix(batches): calculate cost and usage for completed Vertex AI batches by @mateo-berri in #35186
  • feat(ui): give auto-routers their own tab on Models + Endpoints by @tin-berri in #35009
  • refactor(batches): aggregate batch output cost, usage, and models in a single pass by @mateo-berri in #35205
  • feat(router): record why the auto-router picked a tier in spend logs by @tin-berri in #35016
  • fix(otel): cap tool-definition attributes so they cannot evict gen_ai.* from the LLM span by @yassin-berriai in #34828
  • feat(mcp): enforce per-user MCP tool-call entitlements in the auth module by @yassin-berriai in #35146
  • fix(otel): record the GenAI duration metric on failed requests by @yassin-berriai in #35152
  • chore: bump litellm 1.95.0 -> 1.96.0 by @yuneng-berri in #35254
  • fix(pricing): adjust gpt-5.6-terra and gpt-5.6-luna prices according to OpenAI's latest article by @lihugang in #35258
  • revert(proxy)!: stop enforcing user budget on team keys by @yuneng-berri in #35271
  • fix(otel): label retrieval and agent metrics correctly and emit gen_ai.provider.name by @yassin-berriai in #35151
  • test(e2e): align budget e2e with the team-key budget hierarchy by @yuneng-berri in #35276
  • feat(mcp): scan and mask MCP tool results via post_mcp_call guardrails by @yassin-berriai in #35155
  • docs(claude): require 15-25 word human-readable replies to AI PR review bots by @devin-ai-integratio...
Read more