Verify Docker Image Signature
All LiteLLM Docker images are signed with cosign. This release is signed with the key introduced in commit e82a3c6.
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 published signing key:
cosign verify \
--key https://raw.githubusercontent.com/BerriAI/litellm/e82a3c646908ba0a6ee0beddc4310d7a6cac4065/cosign.pub \
ghcr.io/berriai/litellm:v1.111.0-dev.2Verify 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.111.0-dev.2/cosign.pub \
ghcr.io/berriai/litellm:v1.111.0-dev.2Expected 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(cost-map): point the fireworks deepseek v4 flash successor at deepseek-v4p1-flash by @kerry-berri in #51478
- fix(cost): preserve Bedrock cross-region pricing for Messages by @joshua-berri in #51479
- test(image): point admin MCP schema push at /app/litellm/schema.prisma by @maciej-berri in #51446
- feat(proxy): add customer usage tracking and drilldowns by @ishaan-j-berri in #51495
- fix(dynamic_rate_limiter_v3): a capped borrower keeps its cap on its own counter and gets a fresh share at saturation by @kerry-berri in #51494
- perf(rust): stop re-serializing the Messages request body in Python logging callbacks by @maciej-berri in #51440
- feat(ui): add deployment-wide Aria visibility setting by @tin-berri in #51506
- test(ui): give the skills panel's first render 5s to show the catalog by @kerry-berri in #51509
- fix(router): validate request fields and ignore scalar fallback overrides by @narmstrong-berri in #51502
- feat(ui): show customer organization usage and budget utilization by @tin-berri in #51483
- feat(ui): manage customer organizations, teams, and members by @ishaan-j-berri in #51507
- test: drop the unit tests that flaked on main this week by @kerry-berri in #51488
- refactor(proxy): name customer member budget columns budget_id and budget_override_id by @kerry-berri in #51490
- test(security): finish request accounting before changing Vault config by @devin-ai-integration[bot] in #51515
- fix(ui): align customer member budget form with API contract by @tin-berri in #51523
- chore(cost-map): add together_ai/thinkingmachines/Inkling-2-Small from the Together models API by @devin-ai-integration[bot] in #51501
- chore(cost-map): add fal_ai/google/gemini-omni-flash/v1.2/upscale priced per second of upscaled video by @devin-ai-integration[bot] in #51500
- fix(dynamic_rate_limiter_v3): read a model's saturation from Redis so every worker agrees on it by @kerry-berri in #51519
- test(providers): compare sagemaker embedding bodies exactly and assert caller encoding wins by @devin-ai-integration[bot] in #51536
- refactor(router): move Redis key construction out of router-core into the stores by @yujonglee-berri in #50356
- feat(redis): serve the health checks' deployment states from a native store by @yujonglee-berri in #50357
- refactor(router): count the whole router_usage family on the native store by @yujonglee-berri in #50862
- feat(redis): serve the router's session pins from a native store by @yujonglee-berri in #50870
- refactor(redis): replace the Python RedisBatch with Rust by @yujonglee-berri in #51383
- fix(proxy): keep call id, model and key logging on keys refused before the body is read by @mateo-berri in #51525
- feat(budgets): support annual calendar reset periods by @tin-berri in #51508
- chore(cost-map): add fal_ai/decart/lucy-5b/image-to-video at $0.15 per video from its fal.ai page by @devin-ai-integration[bot] in #51551
- feat(proxy): enforce customer org, team and member budgets and limits on the request path by @kerry-berri in #51489
- test(observability): identify team datastore spans by team id in otel excluded services matrix by @devin-ai-integration[bot] in #51554
- fix(langfuse): reserve span capacity for failure usage attributes by @joshua-berri in #51538
- feat(proxy): register unknown customer members in the aliased organization's default team by @ishaan-j-berri in #51546
- feat(nace): add Drex Max decisions and inline images by @saruar-dev in #48426
- fix(files): match every spelling of a provider file id in the ownership check by @kerry-berri in #51498
- feat(proxy): router_settings.fallback_on_saturation walks key and team fallbacks before a model saturates, replacing team model_preferences by @kerry-berri in #51439
- fix(openai): point gpt-5, gpt-5-mini, gpt-5-nano, gpt-5-pro, o3 and o3-pro at the GPT-6 models as successor by @devin-ai-integration[bot] in #51492
- fix(openai): record the successor for the gpt-4o-mini audio and realtime preview snapshots by @devin-ai-integration[bot] in #51563
- fix(utils): register ollama deployment prices from the built-in catalog without calling the provider by @devin-ai-integration[bot] in #51561
- fix(proxy): import soundfile lazily in the transcribe logging handler by @joshua-berri in #51480
- fix(router): enforce access groups for pinned deployments by @joshua-berri in #51442
- fix(interactions): route Vertex lifecycle calls through the selected deployment by @joshua-berri in #51511
- fix(interactions): bind Deep Research agents and record their costs by @joshua-berri in #51517
- fix(databricks): record the November 19 retirement and successor for databricks-gemini-3-6-flash by @devin-ai-integration[bot] in #51593
- fix(deps): bump soupsieve past GHSA-4j63-6c4x-wfg4 and GHSA-mmhr-3c5m-f64f by @devin-ai-integration[bot] in #51585
- fix(proxy): preserve team aliases in Responses WebSockets by @brianhong-dev in #51380
- fix(cost-map): mark together_ai/elorian-labs/glimpse-1.0 as supporting function calling and structured outputs by @devin-ai-integration[bot] in #51612
- fix(proxy): enforce settled customer budgets across workers by @ishaan-j-berri in #51568
- fix(mcp): treat the mcp_all scope as a wildcard any grant covers by @shrey-berri in #51578
- feat(access-groups): name group vector stores and list them on team info by @shrey-berri in #51484
- feat(proxy): customer budget rollup, reset on the budget row's window, named templates, team overrides, multi-window limits and pause_allow_increase by @ishaan-j-berri in #51582
- feat(proxy): run requests with unknown customer ids untracked instead of refusing them by @ishaan-j-berri in #51548
- feat(proxy): pick the customer organization's default budget template by name on create and by id on patch by @ishaan-j-berri in #51636
- feat(proxy): register an unknown customer organization alias as a new organization charged for the request by @ishaan-j-berri in #51637
- fix(proxy): alert on customer org, customer team, and customer member budgets by @ishaan-j-berri in #51579
- feat(ui): show and pick vector stores for access groups by @shrey-berri in #51581
- fix(proxy): display customer identity in spend logs by @ishaan-j-berri in #51596
- fix(fireworks_ai): read fractional sizes like 1p5b in the size bucket fallback by @Abelo9996 in #51451
- chore: bump litellm-enterprise 0.1.84 -> 0.1.85, litellm-proxy-extras 0.4.115 -> 0.4.116 by @yucheng-berri in #51643
New Contributors
- @maciej-berri made their first contribution in #51446
- @saruar-dev made their first contribution in #48426
- @brianhong-dev made their first contribution in #51380
Full Changelog: v1.111.0-dev.1...v1.111.0-dev.2