v1.94.0rc1 - Router Plugins, MCP Client-Held Credentials & Shared DataTable UI
Deploy this versionโ
- Docker
- Pip
docker run \
-e STORE_MODEL_IN_DB=True \
-p 4000:4000 \
docker.litellm.ai/berriai/litellm:1.94.0-rc.1
pip install litellm==1.94.0rc1
Key Highlightsโ
- Router plugin pipeline and Auto-Router v2 - a new
Router(plugins=[...])extension point, resolvable from proxy YAML config, plus soft-floor adaptive mode, opt-in (now default) session affinity, multi-model tier random-pick, and user-triggered escalation keywords for the complexity router. - MCP client-held credentials mature - interactive SSO sign-in for
dcr_bridgeoauth_delegateDCR clients, client-held refresh envelopes, gateway-bound envelopes minted at the token endpoint, issuer-anchored OAuth discovery (RFC 8414 ยง3.3) to close the authorization-server mix-up, and ID-JAG support for MCP egress. - Shared DataTable dashboard migration - Virtual Keys, Teams, Guardrails, Tags, Vector Stores, Prompts, Skills, AI Hub, MCP Toolsets, and Policy Attachments all move onto the shared composable DataTable.
- Python 3.14 support - the
requires-pythoncap moves to<3.15, pyo3 rises to 0.29 so the native Rust bridge compiles, and redisvl / pypdf / openapi-core are unblocked on 3.14. - Per-model prompt cache minimums -
prompt_cache_min_tokensis now recorded across the Anthropic and Bedrock Claude cost map entries, and the router resolves the real per-model minimum instead of a flat 1024.
New Models / Updated Modelsโ
New Model Support (5 new pricing entries)โ
| Provider | Model | Context Window | Input ($/1M tokens) | Output ($/1M tokens) | Features |
|---|---|---|---|---|---|
| Google AI Studio | gemini/gemini-omni-flash-preview | 1.05M | $1.50 | $9.00 (video output $17.50) | Reasoning, vision, audio input, video input/output |
| Google Vertex AI | gemini-omni-flash-preview | 1.05M | $1.50 | $9.00 (video output $17.50) | Reasoning, vision, audio input, video input/output |
| Amazon Bedrock (Mantle) | bedrock_mantle/openai.gpt-5.6-sol | 272K | $5.50 | $33.00 | Reasoning, vision, function calling, prompt caching, Responses API |
| Amazon Bedrock (Mantle) | bedrock_mantle/openai.gpt-5.6-terra | 272K | $2.75 | $16.50 | Reasoning, vision, function calling, prompt caching, Responses API |
| Amazon Bedrock (Mantle) | bedrock_mantle/openai.gpt-5.6-luna | 272K | $1.10 | $6.60 | Reasoning, vision, function calling, prompt caching, Responses API |
Beyond the new entries, this release records prompt_cache_min_tokens on the Anthropic and Bedrock Claude families (512-4096 depending on the model), marks the gpt-realtime family as mode: realtime rather than chat, flags Gemini image-generation models as non-reasoning, and corrects the Fireworks glm-5p2 prompt-cache read price.
Featuresโ
- Anthropic
- Amazon Bedrock
- Google AI Studio / Vertex AI
- Add
gemini-omni-flash-previewwith video output token pricing - PR #33274
- Add
- Fireworks AI
- Map the LiteLLM session id to the
x-session-affinityheader for prompt caching - PR #33717
- Map the LiteLLM session id to the
Bug Fixesโ
- Anthropic
- Emit
message_startexactly once in the Responses stream adapter - PR #32667 - Translate raw adaptive thinking for pre-4.6 models on Chat Completions and Bedrock Converse - PR #32944
- Drop the incompatible
temperatureparam when downgrading adaptive thinking for pre-4.6 models on pass-through - PR #33244 - Stop a 500 on a combined thinking-plus-signature streaming chunk - PR #33505
- Self-heal on missing thinking-signature errors from Bedrock and Vertex - PR #33719
- Drop empty
content_block_deltaevents in the Anthropic adapter - PR #33315 - Honor the messages request timeout - PR #33418
- Unblock
lite autorouteproxy deps, adaptive thinking, and thinking-plus-signature streaming in the CLI - PR #33507
- Emit
- Google Vertex AI
- Amazon Bedrock
- Forward AWS credential kwargs into
litellm_paramsso the responses bridge keeps WIF auth - PR #32956
- Forward AWS credential kwargs into
- Fireworks AI
- OpenAI
- Mark realtime-only
gpt-realtimemodels asmode: realtime- PR #33728
- Mark realtime-only
LLM API Endpointsโ
Featuresโ
- General
- Add an
x-litellm-model-nameresponse header carrying the deployment model string - PR #33698
- Add an
Bugsโ
- Responses API
- Pass-through
- General
Management Endpoints / UIโ
Featuresโ
- UI (shared DataTable migration)
- Rebuild the Virtual Keys and Teams tables on the shared DataTable - PR #32991, PR #33128
- Migrate the guardrails, tags, and policy attachments tables onto the shared DataTable - PR #33303, PR #33314, PR #33827
- Migrate the vector stores, prompts, and skills tables, plus five more simple tables - PR #33343, PR #33548
- Migrate the AI Hub, public hub, and MCP Toolsets tables - PR #33629
- UI
- Convert the endpoint usage charts to shadcn/recharts - PR #32723
- Adopt
openapi-react-query($api) and convertuseCustomers- PR #32949 - Working Test Connection for the complexity auto router, and adaptive routing settings in Auto-Router v2 - PR #32950, PR #33146
- Require an embedding model for the semantic auto router - PR #33313
- Configure Anthropic automatic prompt caching from the Admin UI - PR #33581
- Show the exact license expiration date in the usage cards - PR #33478
- Move Caching out of Experimental into Developer Tools - PR #33432
- Add a reusable
BetaBadgeand use it for the Projects sidebar item - PR #33449 - Add a personal Logs view scoped to the current user in the chat UI - PR #33829
- Left-anchor the Create Key and Create Team CTAs - PR #33248
- Consolidate the Add/Edit credential modals into one
CredentialModal- PR #32572 - Colocate the mcp-servers view while keeping the shared
mcp_toolssurface - PR #32968 - Standardize debounce waits behind a shared
DEBOUNCE_WAIT_MSconstant and migrate value and callback debounces to react-pacer - PR #33040, PR #33042, PR #33043, PR #33041 - Remove the unmounted
UsageIndicatorand the Hide Usage Indicator flag - PR #33482
- Auth & Management
Bugsโ
- UI
- Address Virtual Keys redesign review nits - PR #33112
- Drop
w-fullfrom page-content wrappers to remove 32px horizontal overflow - PR #33118 - Render the sidebar scrollbar with the shadcn
ScrollArea- PR #33124 - Show and allow editing team model aliases after team creation - PR #33047
- Respect
litellm_key_header_namein BYOK credential save and workflow-run fetches - PR #33103 - Stop credential edit from persisting the masked API key - PR #33797
- Resolve chat routes at render time so navigation works under
server_root_path- PR #33446 - Navigate to
/ui/login/with a trailing slash via hard navigation - PR #33561 - Show all teams in the policy attachment form for admins - PR #33628
- Remove the Chat item from the dashboard left nav - PR #33647
- Migrate tag deletion to the shared
DeleteResourceModal- PR #33795 - Stop sending the complexity-router pseudo-model to
/health/test_connection- PR #33498 - Filter embedding models out of the complexity tab dropdowns, require all tiers, and validate inline - PR #32978
- Auth & Management
- Route the master key to team-scoped models - PR #32926
- Stop unrecognized model namespaces slipping through provider wildcard keys - PR #32979
- Persist
key_typeso the UI shows the correct key scope instead of "All Proxy Models" - PR #33115 - Enforce a minimum custom key length and mask short keys in
key_name- PR #33462 - Paginate through all pages when fetching SSO service principal group assignments - PR #33149
- Scope the JWT enterprise gate to actual JWTs - PR #33296
- Stop enforcing the UI session budget on CLI login tokens - PR #33312
- Surface actionable CLI SSO errors when the CLI and proxy versions skew - PR #33309
- Resolve team wildcard credentials for vector store files - PR #33649
- Make CLI output ASCII-only so it does not crash legacy Windows consoles - PR #33465
AI Integrationsโ
Loggingโ
- OpenTelemetry
- Langfuse
- Build a per-request OTLP exporter from key- and team-level dynamic Langfuse credentials - PR #32437
- Prometheus
- S3
- Sanitize slashes in the response-id-derived object key file name - PR #33271
- General
- Add user- and team-level spend and budget to
StandardLoggingPayloadmetadata - PR #33459 - Add structured budget fields to budget rejection failure logs - PR #33460
- Preserve callback order in
get_combined_callback_list- PR #33005 - Classify async
anthropic_messagesandgenerate_contentas async - PR #33589 - Redact the async complete streaming response for custom callbacks - PR #33106
- Redact assistant tool call arguments in spend logs - PR #33111
- Never log raw virtual keys in key insertion debug output - PR #33268
- Add user- and team-level spend and budget to
Guardrailsโ
- Straiker
- Add the Straiker guardrail integration - PR #33781
- Compresr
- Add the Compresr guardrail for query-aware context compression - PR #33295
- Bedrock Guardrails
- Add a resource-less
InvokeGuardrailChecksdetect-only mode - PR #33299
- Add a resource-less
- Model Armor
- Restore reference attachments via
skip_unscannable_attachmentsand remove the attachment count cap - PR #33554
- Restore reference attachments via
- Lasso
- Send
source.typefor Used By attribution - PR #33090
- Send
- LLM Guard
- Apply the sanitized prompt returned by the moderation API to the request - PR #33331
- General
- Streaming text transformation in
generic_guardrail_api- PR #33110 - Forward optional metadata on
POST /guardrails/apply_guardrail- PR #33067 - Run
apply_guardrail-style model-levelpre_callguardrails at the deployment hook - PR #33136 - Show YAML-defined guardrails in the Guardrail Monitor - PR #32853
- Walk
custom_tool_call_outputitems in the shared content helpers - PR #32969 - Use
StandardLoggingGuardrailInformationin the xecguard logging hook, and sanitize the scan result before recording it - PR #32911, PR #32935 - Remove the stray docstring from the singulr module for consistency - PR #33800
- Streaming text transformation in
Spend Tracking, Budgets and Rate Limitingโ
- Budgets
- Rate Limiting
- Enforce
max_parallel_requestsas a per-slot concurrency gauge - PR #32441
- Enforce
- Cost Tracking
- Use the provider-reported usage cost for OpenRouter streams - PR #32255
- Track cost for unmanaged Bedrock batches and generalize the flag - PR #32315
- Track unauthenticated pass-through requests in spend logs - PR #32410
- Track LLM completion usage and spend for
/v1/rag/query- PR #32438 - Bill partial streamed spend when the client disconnects mid-stream - PR #33736
- Remove the dead user-cache lookup with a
Nonekey in the spend-update path - PR #33555
MCP Gatewayโ
- Client-Forwarded Credentials (
dcr_bridge/oauth_delegate)- Interactive SSO sign-in for
dcr_bridgeoauth_delegateDCR clients - PR #32946 - Mint a gateway-bound envelope at the token endpoint, and add a client-held refresh envelope for the flow - PR #32828, PR #32980
- Extract the
dcr_bridgetoken flow intobridge_token_flow.py- PR #33141 - Persist
config.yamlDCR clients in a server-scoped store so refresh survives token expiry - PR #33768 - Surface rejected delegate-auth upstream tokens as a connect-time 401, and relay upstream OAuth token and DCR rejections instead of a generic 500 - PR #32741, PR #33113
- Make the preemptive-401 OAuth challenge decision mode-aware - PR #33586
- Interactive SSO sign-in for
- OAuth & Identity
- Issuer-anchored OAuth discovery (RFC 8414 ยง3.3) to close the authorization-server mix-up - PR #33450
- Add ID-JAG (identity assertion authorization grant) support for MCP egress - PR #31516
- Persist discovered OAuth endpoints and keep the last known good set on a failed re-discovery - PR #33286
- Discover missing OAuth scopes and
token_urlwhenauthorization_urlis set manually - PR #33317 - Cap the per-user OAuth token cache TTL at the token's own lifetime - PR #33346
- Tools & Permissions
- Per-server outcomes for aggregate
tools/listand truthful single-server REST statuses - PR #33153 - Expand toolset grants in the shared permission primitives so
tools/callhonors them - PR #33612 - Index authed request-time tools missing from the semantic filter startup index - PR #33318
- Keep the MCP reference intact when the semantic filter narrows tools - PR #33584
- Per-server outcomes for aggregate
Performance / Loadbalancing / Reliability improvementsโ
- Routing
- Add a
Router(plugins=[...])routing-plugin pipeline, resolve auto-router routing plugins from proxy YAML config, and resolverouter_settings.pluginsdotted paths from installed packages - PR #32972, PR #33251, PR #33644 - Soft-floor adaptive mode and random-pick multi-model tiers for the complexity router - PR #32947, PR #32967
- Opt-in session affinity for the complexity router, then enabled by default, with the session id derived from Anthropic
metadata.user_id- PR #33126, PR #33500, PR #33723 - User-triggered escalation keywords, and per-tier semantic keyword prompts in the configure wizard - PR #33656, PR #33508
- Honor a per-request
routing_strategyfrom key/teamrouter_settings, and apply team/keyenable_tag_filteringto tag routing - PR #33429, PR #33436 - Tag-aware pre-routing strategy selection for a shared
model_name- PR #33691 - Resolve the prompt cache minimum per model instead of a flat 1024 - PR #33637
- Enforce context-window pre-call checks for Responses API input - PR #33706
- Correct the Responses API
tool_choiceshape and propagate aliaslitellm_paramsin the auto router - PR #32974 - Return an empty dict from
_classifier_call_metadatawhen metadata is absent - PR #33452 - Cast
model_infocost values to float in_set_model_group_info- PR #33556
- Add a
- Reliability
- Route Azure Anthropic
/messagesthrough Rust behindrust:true- PR #33616 - Stop pinning large request payloads past request end - PR #33455
- Stop a stale auth cache re-publish to Redis so key updates propagate across replicas - PR #33565
- Honor the
sslvalue instead of key presence when building the async Redis connection pool - PR #32590 - Reap orphaned Prisma query-engine processes when a worker dies - PR #33424
- Route Azure Anthropic
- Deployment
Documentation Updatesโ
- Add a QA runbook section to the PR template - PR #32965
- Add a router plugin reference catalog - PR #33746
- Align the e2e skip-vs-fail docs with the hard-fail contract and scope the no-unit-tests rule - PR #33755
- Add provider coding standards and provider abstraction standards for litellm-rust, and require the official Rust Style Guide in the agent rules - PR #33833, PR #33865, PR #33867
PR roll-up by ownership areaโ
PRs by ownership area (total: 236)
- Other (CI / chore / tests / build / version bumps): 69
- UI: 39
- Performance / Routing / Reliability: 26
- Models & Providers: 21
- MCP: 17
- Guardrails: 14
- Logging: 13
- Auth & Management: 13
- Spend / Budgets / Rate Limits: 9
- LLM API Endpoints: 9
- Docs: 6
New Contributorsโ
- @Napuh made their first contribution in PR #32667
Full Changelogโ
https://github.com/BerriAI/litellm/compare/v1.93.0-rc.1...v1.94.0-rc.1