Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
213 commits
Select commit Hold shift + click to select a range
40f02b2
refactor(mcp): consolidate exception-tree walkers into one shared fau…
tin-berri Jul 14, 2026
ae952ce
feat(mcp): support MCP servers on the Anthropic /v1/messages API
tin-berri Jul 17, 2026
cd3ac05
fix(mcp): forward the caller's MCP credentials from every gateway sur…
tin-berri Jul 17, 2026
56cda9f
fix(mcp): sanitize Anthropic tool schemas and stop encoding gateway n…
tin-berri Jul 17, 2026
31f293a
feat(bedrock): forward bedrock_tags to CreateModelInvocationJob for b…
mateo-berri Jul 17, 2026
cf23df9
fix(mcp): require every reference to opt in before auto-executing tools
tin-berri Jul 17, 2026
2e492f5
fix(ui): hide guardrail group headers when only one group has entries
yuneng-berri Jul 18, 2026
0268d01
fix(anthropic): only inject cache_control when the request carries none
tin-berri Jul 18, 2026
ecff0c0
fix(anthropic): state the async entry's first-pass judgment explicitly
tin-berri Jul 18, 2026
e064857
fix(anthropic): carry the stand-down judgment inside written-back inj…
tin-berri Jul 19, 2026
3f3295b
feat(spend): track prompt compression saved tokens in daily spend agg…
tin-berri Jul 19, 2026
595e724
test(e2e): assert the long budget window keeps blocking after the sho…
ryan-crabbe-berri Jul 19, 2026
a198e0b
feat(messages): route native Anthropic /messages through Rust behind …
devin-ai-integration[bot] Jul 19, 2026
b83c60b
test(e2e): cover credential-backed /v1/messages request (#33863)
devin-ai-integration[bot] Jul 19, 2026
9533258
feat(rust): expose Anthropic Messages route (POST /v1/messages) on th…
devin-ai-integration[bot] Jul 19, 2026
6d7a80a
feat(mcp): aggregate gateway DCR discovery front door behind mcp_gate…
tin-berri Jul 14, 2026
14b1647
refactor(mcp): make the aggregate DCR front door always-on, remove th…
tin-berri Jul 15, 2026
5e10507
fix(mcp): reserve mcp for the aggregate AS and root-path the discover…
tin-berri Jul 15, 2026
70bc952
test(mcp): isolate MCP discovery tests from a leaked SERVER_ROOT_PATH
tin-berri Jul 15, 2026
8a57067
refactor(mcp): scope the root-path helper to the aggregate front door…
tin-berri Jul 17, 2026
7891388
feat(rust): 1:1 port of OpenAI Responses API WebSockets to litellm-ru…
devin-ai-integration[bot] Jul 19, 2026
ab02127
fix(proxy): treat malformed cost-map token limits as absent on /v1/mo…
yuneng-berri Jul 19, 2026
f17a6ce
Merge pull request #33903 from BerriAI/litellm_/quirky-heyrovsky-faafca
yuneng-berri Jul 19, 2026
f2e340c
feat(rust): port BaseAWSLLM auth (credential resolution + SigV4) to l…
devin-ai-integration[bot] Jul 19, 2026
7390f29
feat(mcp): identity-only session tokens for the gateway DCR front door
tin-berri Jul 14, 2026
a22182f
feat(mcp): add jti claim for per-mint session token uniqueness
tin-berri Jul 14, 2026
cc45d18
feat(complexity-router): add return_raw_model_name toggle for respons…
devin-ai-integration[bot] Jul 19, 2026
ac1b4b3
Merge pull request #33174 from BerriAI/litellm_lit3637_aggregate_dcr
tin-berri Jul 19, 2026
bd44c9e
fix(langfuse): send v4 ingestion header for otel callback (#33907)
yucheng-berri Jul 19, 2026
3456148
feat(ui): add configuration tabs to the Cost Optimization page (#33899)
devin-ai-integration[bot] Jul 20, 2026
8d96e95
test(e2e): guard destructive spend-log truncate behind an explicit op…
yassin-berriai Jul 20, 2026
067c9bb
chore(rust): migrate the litellm-rust workspace (core, ai-gateway, py…
vineetpuranik Jul 20, 2026
3fcd19d
fix(fireworks_ai): restore Content-Type application/json header (fixe…
devin-ai-integration[bot] Jul 20, 2026
479e997
feat(spend): raise /spend/logs/v2 page_size cap to 1000
yuneng-berri Jul 20, 2026
b7e7fab
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Jul 20, 2026
24b55d2
Merge pull request #33994 from BerriAI/litellm_/ticket-implementation…
yuneng-berri Jul 20, 2026
ce88999
Merge pull request #33182 from BerriAI/litellm_lit3637_session_token
tin-berri Jul 20, 2026
8a0bb4c
chore(ci): retire daily OSS branches in favor of litellm_internal_sta…
yuneng-berri Jul 20, 2026
d4035a0
feat(mcp): migrate client_credentials (M2M) onto the v2 resolver arm
tin-berri Jul 6, 2026
4b1c9d4
test(mcp): update _create_mcp_client graft tests for migrated M2M arm
tin-berri Jul 6, 2026
7705f0b
fix(mcp): bound the M2M lock dict and cap short-lived token TTL at re…
tin-berri Jul 6, 2026
9c191e6
chore(lint): add reasons to the client_credentials noqa suppressions
tin-berri Jul 16, 2026
5b64239
fix(mcp): skip the M2M cache write when the token is already expired …
tin-berri Jul 16, 2026
8bfd8ba
fix(mcp): remember the rotated M2M bearer for later requests in the s…
tin-berri Jul 17, 2026
d234229
fix(mcp): keep the minted M2M bearer authoritative over injected Auth…
tin-berri Jul 17, 2026
51df801
test(e2e): cover key regeneration rotating to a working new key (#34000)
yassin-berriai Jul 20, 2026
72be5a9
test(e2e): cover tag creation persisting for spend categorization (#3…
yassin-berriai Jul 20, 2026
bf04ba8
refactor(mcp): extract the oauth2 spec dispatch to keep to_server_spe…
tin-berri Jul 20, 2026
214945a
test(e2e): cover organization deletion removing it from /organization…
yassin-berriai Jul 20, 2026
0f62ff4
fix(cli): stable port and persisted master key for lite autoroute up
tin-berri Jul 20, 2026
051cdd1
fix(cli): tolerate an unreadable prior config when carrying the autor…
tin-berri Jul 20, 2026
551f0b6
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Jul 20, 2026
0b8817a
perf(bedrock): audio transcription via rust core (py->rust bridge) (#…
devin-ai-integration[bot] Jul 20, 2026
b25d121
Merge pull request #34030 from BerriAI/litellm_/remove-oss-branch-gha…
yuneng-berri Jul 20, 2026
b9c59c3
test(e2e): cover model update persisting to /model/info (#34017)
yassin-berriai Jul 20, 2026
53f5a8c
test(e2e): cover key block persisting to /key/info (#34014)
yassin-berriai Jul 20, 2026
f5dc1a3
test(router): prove request-level bedrock_tags override deployment-le…
mateo-berri Jul 20, 2026
4c77a54
test(e2e): cover created team appearing in /team/list (#34015)
yassin-berriai Jul 20, 2026
4460462
test(proxy): make model_info endpoint tests hermetic to kill an order…
mateo-berri Jul 20, 2026
68be053
test(e2e): cover created user appearing in /user/list (#34016)
yassin-berriai Jul 20, 2026
249e1f8
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Jul 20, 2026
eb27447
test(e2e): cover team update persistence via /team/info (#33997)
yassin-berriai Jul 20, 2026
c2bd869
fix(proxy): require admin opt-in for request-body bedrock_tags
mateo-berri Jul 20, 2026
3819ee5
Merge pull request #33733 from BerriAI/litellm_lit_4162_bedrock_batch…
mateo-berri Jul 20, 2026
7113119
test(e2e): cover model registration persistence in /model/info (#33996)
yassin-berriai Jul 20, 2026
f21704c
test(e2e): cover user update persistence via /user/info (#33998)
yassin-berriai Jul 20, 2026
885a637
Merge pull request #34037 from BerriAI/litellm_fix_model_info_unpack_…
mateo-berri Jul 20, 2026
6db7328
chore(e2e): prune reliability.perf.latency.under_slo coverage cell (#…
yassin-berriai Jul 20, 2026
9ac6cc7
Merge pull request #33885 from BerriAI/litellm_/global-guardrails-dis…
yuneng-berri Jul 20, 2026
61b906f
test(e2e): cover model deletion removing it from the catalog (#34006)
yassin-berriai Jul 20, 2026
5c8e7e6
test(e2e): cover organization update persistence via /organization/in…
yassin-berriai Jul 20, 2026
6f62022
test(e2e): cover team deletion persistence and key revocation (#33999)
yassin-berriai Jul 20, 2026
c208bec
test(e2e): cover user deletion removing it from user inventory (#34007)
yassin-berriai Jul 20, 2026
583ddaf
test(e2e): cover created key appearing in /key/list inventory (#34008)
yassin-berriai Jul 20, 2026
3f712e3
fix(router): stop custom model_info leaking onto shared backend cost …
mateo-berri Jul 20, 2026
432954a
fix(cache): make in-memory and disk cache increments atomic (#34013)
yucheng-berri Jul 20, 2026
3810130
test(e2e): add reliability suite covering fallback, timeout, and cach…
yassin-berriai Jul 20, 2026
28f012b
test(true_rabbit): cover passthrough headers, batch assume-role, gemi…
mubashir1osmani Jul 20, 2026
f9b10eb
Merge pull request #33886 from BerriAI/litellm_lit4582_cache_control_…
tin-berri Jul 20, 2026
43e4af7
Merge pull request #33631 from BerriAI/litellm_lit4517_messages_mcp_g…
tin-berri Jul 20, 2026
f61e16c
Merge pull request #32259 from BerriAI/litellm_mcp_v2_client_credentials
tin-berri Jul 20, 2026
fa59cfa
Merge pull request #34041 from BerriAI/litellm_lit4544_shared_key_mod…
mateo-berri Jul 20, 2026
8e0d3af
Merge origin/litellm_internal_staging into litellm_mcp_walker_consoli…
tin-berri Jul 20, 2026
e906dbe
perf(streaming): build per-chunk Delta directly instead of setattr/de…
yassin-berriai Jul 20, 2026
b086cd3
Merge pull request #33183 from BerriAI/litellm_mcp_walker_consolidation
tin-berri Jul 20, 2026
1e6a348
fix(router): propagate capability flags to shared backend cost map key
mateo-berri Jul 20, 2026
23b5b7d
fix(vertex,azure): model-aware mid-conversation system for Claude /v1…
mateo-berri Jul 18, 2026
335b79d
test(e2e): mark vertex mid-conversation system rows proven after live QA
mateo-berri Jul 18, 2026
8b1a19f
test: give cost-map guard next() a default so a renamed rule fails wi…
mateo-berri Jul 20, 2026
ffe56cf
fix(budget): reset users/teams with NULL budget_reset_at (#33623)
jyeung-r7 Jul 20, 2026
2c99b78
perf(core): fast-path SafeAttributeModel.__delattr__ for declared fie…
yassin-berriai Jul 21, 2026
c06c16b
refactor(ui): migrate credentials table onto shared DataTable
yuneng-berri Jul 21, 2026
25c37f2
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Jul 21, 2026
5e68a00
test(e2e): add live A2A agent e2e suite
yassin-berriai Jul 21, 2026
46a80e1
fix(auth): set budget_reset_at when JWT upsert seeds a budget_duratio…
ryan-crabbe-berri Jul 21, 2026
368bfe1
fix(ui): surface add/update credential failures with an error toast
yuneng-berri Jul 21, 2026
10d2a27
fix(proxy/auth): handle tz-aware temp_budget_expiry (#33840)
devin-ai-integration[bot] Jul 21, 2026
f2ca0a1
build(deps-dev): bump js-yaml to 4.3.0 and brace-expansion to 5.0.7
yuneng-berri Jul 21, 2026
1e74109
Merge pull request #33807 from BerriAI/litellm_vertex_azure_midsys
mateo-berri Jul 21, 2026
c93ccef
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Jul 21, 2026
089de50
fix(auth): apply temp_budget_increase for cache-hit keys (#33841)
devin-ai-integration[bot] Jul 21, 2026
9d6d6c4
fix(agents): allow optional securityScheme fields so /public/agent_hu…
devin-ai-integration[bot] Jul 21, 2026
ea04530
Merge pull request #34056 from BerriAI/litellm_/osv-dependency-vulner…
yuneng-berri Jul 21, 2026
731efaf
Merge pull request #34053 from BerriAI/litellm_/migrate-simple-table-…
yuneng-berri Jul 21, 2026
2ea09a9
Merge pull request #34026 from BerriAI/litellm_lit4608_autoroute_fixe…
tin-berri Jul 21, 2026
20dd0e6
fix(mcp): return the DCR client's own redirect_uris to stop the /call…
tin-berri Jul 17, 2026
3334ee9
fix(mcp): add Google Sheets, Drive, Calendar, and Docs to the OpenAPI…
tin-berri Jul 21, 2026
7df76fc
Merge pull request #33756 from BerriAI/litellm_mcp_dcr_client_redirec…
tin-berri Jul 21, 2026
39cdfbd
test(mcp): pin all four Google registry entries in the shape test
tin-berri Jul 21, 2026
48572c9
fix(mcp): attach resolved OAuth credentials to OpenAPI spec_path tool…
tin-berri Jul 21, 2026
8307e3e
fix(bedrock_mantle): hoist Codex additional_tools input items to top-…
BingBingL Jul 14, 2026
9ad8698
feat: add deepkeep as custom guardrail (#33844)
yucheng-berri Jul 21, 2026
8745f35
fix(bedrock_mantle): log additional_tools hoist at debug level
mateo-berri Jul 21, 2026
040aa9d
fix(mcp): never promote caller oauth2 headers to the resolved credent…
tin-berri Jul 21, 2026
8441ff3
style(mcp): wrap the resolve_openapi_upstream_auth call to the 120 co…
tin-berri Jul 21, 2026
354f397
fix(bedrock_mantle): gate unsupported service_tier on drop_params for…
mateo-berri Jul 21, 2026
d2b573c
feat(proxy): auto-enable drop_params for Codex user agents
mateo-berri Jul 21, 2026
464537a
Merge pull request #34047 from BerriAI/litellm_shared_key_capability_…
mateo-berri Jul 21, 2026
c9b5012
Merge pull request #34059 from BerriAI/litellm_lit4629_google_registry
tin-berri Jul 21, 2026
99f215d
refactor(ui): migrate available teams table onto shared DataTable
yuneng-berri Jul 21, 2026
fe57eed
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Jul 21, 2026
07a355e
Merge pull request #33228 from lyb0307/litellm_bedrock_mantle_codex_a…
mateo-berri Jul 21, 2026
fadec17
Merge origin/litellm_internal_staging into litellm_mantle_codex_addit…
mateo-berri Jul 21, 2026
484cc12
fix(ui): ignore stale available-teams fetch on unmount or token change
yuneng-berri Jul 21, 2026
e3f7019
Merge pull request #34058 from BerriAI/litellm_mantle_codex_additiona…
mateo-berri Jul 21, 2026
7e66f00
Merge pull request #34068 from BerriAI/litellm_codex_auto_drop_params
mateo-berri Jul 21, 2026
c1b6c40
Merge pull request #34070 from BerriAI/litellm_/remaining-table-compl…
yuneng-berri Jul 21, 2026
3a55dda
refactor(ui): migrate memory table onto shared DataTable
yuneng-berri Jul 21, 2026
e3b453f
refactor(ui): migrate audit logs table onto shared DataTable
yuneng-berri Jul 21, 2026
879a287
refactor(ui): migrate organizations table onto shared DataTable
yuneng-berri Jul 21, 2026
ff8d879
test(ui): pin memory table page-size behavior on the last page
yuneng-berri Jul 21, 2026
e411d63
feat(gemini): day-0 pricing for gemini-3.6-flash and gemini-3.5-flash…
mateo-berri Jul 20, 2026
e20d3d4
fix(ui): serve /ui/assets from the nginx image instead of SPA fallbac…
ryan-crabbe-berri Jul 21, 2026
59ebe04
Merge pull request #34106 from BerriAI/litellm_gemini_36_flash_35_lit…
mateo-berri Jul 21, 2026
925beda
Merge pull request #34080 from BerriAI/litellm_/brave-bell-58da35
yuneng-berri Jul 21, 2026
0b4851d
Merge pull request #34081 from BerriAI/litellm_/gallant-kapitsa-a809e0
yuneng-berri Jul 21, 2026
5beb0a7
Merge pull request #34079 from BerriAI/litellm_/wizardly-bardeen-a47430
yuneng-berri Jul 21, 2026
4647f85
Merge pull request #34078 from BerriAI/litellm_/elated-thompson-4a0c84
yuneng-berri Jul 21, 2026
049c683
fix(model_armor): sanitize error details by default (#33908)
yucheng-berri Jul 21, 2026
212a921
refactor(ui): migrate agents table onto the shared DataTable (#34089)
yuneng-berri Jul 21, 2026
01d624e
fix(ui): add tooltip to the Active key status badge (#34109)
ryan-crabbe-berri Jul 21, 2026
fcd2360
fix(interactions): add queued to the Interaction status enum (#34135)
yuneng-berri Jul 21, 2026
ae2f276
ci(image-scan): match Python packages against CPE data (#34136)
yuneng-berri Jul 21, 2026
257ada8
chore(deps): bump pypdf to 6.14.2 and pyasn1 to 0.6.4 (#34148)
yuneng-berri Jul 21, 2026
062e58f
fix(a2a): accept semver protocolVersion values like 0.3.0 in agent cards
mateo-berri Jul 21, 2026
1315ebd
test(e2e): guard 0.3.0-style semver protocolVersion registration
yassin-berriai Jul 21, 2026
2310211
fix(a2a): reject malformed protocolVersion suffixes while keeping sem…
mateo-berri Jul 21, 2026
efa997d
feat(budgets): add configurable budget_reset_time of day (#31007)
ryan-crabbe-berri Jul 21, 2026
ee0028a
feat(ui): surface key budget_reset_at in key info and keys table (#34…
ryan-crabbe-berri Jul 21, 2026
a7e4c83
Merge pull request #34154 from BerriAI/litellm_a2a_protocol_version_s…
mateo-berri Jul 21, 2026
d2819ba
feat(ui): add block/unblock key action to key info page (#34116)
ryan-crabbe-berri Jul 21, 2026
1d36290
Merge pull request #34063 from BerriAI/litellm_lit4629_openapi_oauth_…
tin-berri Jul 21, 2026
930676a
fix(mcp): let an admin-pinned issuer drive OAuth discovery for url-le…
tin-berri Jul 21, 2026
6959d9d
test(mcp): pin the token and register wall messages for url-less servers
tin-berri Jul 21, 2026
30ed840
fix(e2e): use EndpointsClient.proxy after Gateway to ProxyClient rena…
yassin-berriai Jul 21, 2026
76c9eca
refactor(auth): derive temp budget increase without mutating the toke…
ryan-crabbe-berri Jul 21, 2026
ac5b512
test(e2e): add Other suite and Guardrails coverage incl. an MCP tool-…
mubashir1osmani Jul 21, 2026
914079a
Merge pull request #34065 from BerriAI/litellm_lit4629_issuer_discovery
tin-berri Jul 21, 2026
fcaf673
fix(router): stop per-deployment num_retries from double-counting as …
yassin-berriai Jul 21, 2026
f9300d4
fix(e2e): pin harness Python and surface proxy boot crash output (#34…
ryan-crabbe-berri Jul 21, 2026
e9ac84d
fix(proxy): stop save_config from snapshotting environment_variables …
yassin-berriai Jul 21, 2026
b47fe73
fix(ui): stop cloning body-carrying requests into stream uploads in f…
ryan-crabbe-berri Jul 21, 2026
1cc70f8
fix(ui): distinguish response cache from provider prompt caching (#34…
ryan-crabbe-berri Jul 21, 2026
2e8403a
fix(ui): bundle provider logos as static imports and unify fallback i…
ryan-crabbe-berri Jul 21, 2026
e1afc64
refactor(ui): migrate inline provider logo lookups to the shared Logo…
ryan-crabbe-berri Jul 21, 2026
6eb3cf2
test(e2e): cover team management routes for Management/UI coverage (#…
yassin-berriai Jul 21, 2026
c8e0253
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Jul 21, 2026
b3415f4
test(e2e): cover key management routes for Management/UI coverage (#3…
yassin-berriai Jul 21, 2026
7f25826
test(e2e): cover budget, customer, user and org routes for Management…
yassin-berriai Jul 21, 2026
48fdaaa
fix(router): honor request-level num_retries over global litellm_sett…
yassin-berriai Jul 21, 2026
43402b0
test(e2e): register the verbatim a2a-sdk 0.3.x card and guard malform…
mateo-berri Jul 21, 2026
83e147b
feat(mcp): store the enterprise IdP identity assertion at SSO login f…
tin-berri Jul 21, 2026
cfa074d
fix(mcp): make the EMA retention gate authoritative across pods and t…
tin-berri Jul 21, 2026
ddae6ea
fix(mcp): judge EMA retention only against the config and DB authorit…
tin-berri Jul 21, 2026
090c4b8
test(e2e): cover model, tag and access group routes for Management/UI…
yassin-berriai Jul 21, 2026
c2ae527
feat(proxy): make DB config-reload interval configurable via config.y…
yassin-berriai Jul 21, 2026
bc95340
feat(ui): add controlled row selection to the shared DataTable (#34167)
yuneng-berri Jul 21, 2026
fa025fc
chore(tests): replace a customer name and domain with neutral placeho…
mateo-berri Jul 21, 2026
869ef0c
Merge pull request #34072 from BerriAI/litellm_mcp_ema_assertion_store
tin-berri Jul 21, 2026
58ff0e3
chore(deps): bump gitpython to 3.1.52 in uv.lock (#34168)
yuneng-berri Jul 21, 2026
72d458e
feat(ui): add react-hook-form + zod form infrastructure (#34170)
yuneng-berri Jul 21, 2026
9d714b0
Merge pull request #34172 from BerriAI/litellm_scrub_customer_name
mateo-berri Jul 21, 2026
2b2ae4c
refactor(ui): migrate MCP, callback, guardrail, SSO, and search tool …
ryan-crabbe-berri Jul 21, 2026
51f0f40
test(e2e): invoke a real published a2a agent and assert it replies
yassin-berriai Jul 21, 2026
42f269c
fix(ui): stop dashboard key-edit form 403ing on non-budget saves (#34…
ryan-crabbe-berri Jul 21, 2026
02746eb
fix(ui): harden provider logo map typing and bundled asset guard (#34…
ryan-crabbe-berri Jul 21, 2026
e17f3b6
fix(proxy): populate user_email on UserAPIKeyAuth for JWT auth (#34174)
ryan-crabbe-berri Jul 21, 2026
8a56899
test(e2e): cover config and misc management routes for Management/UI …
yassin-berriai Jul 21, 2026
bc374fc
test(e2e): add Azure AI Foundry and Anthropic /v1/messages coverage f…
yassin-berriai Jul 21, 2026
28e93e4
test(ui): run vitest unit tests in GitHub Actions and fix stale key-i…
yuneng-berri Jul 21, 2026
0bfdb37
test(e2e): route external agent card fetch through the typed transport
mateo-berri Jul 21, 2026
560dc6d
ci: run check_e2e_no_raw_requests in make pre-commit for staged tests…
mateo-berri Jul 21, 2026
49c18d4
refactor(ui): migrate users and model health checks tables onto the s…
yuneng-berri Jul 21, 2026
a3248c6
fix(ui): restore guardrail_info_helpers exports in GuardrailsPanel te…
yuneng-berri Jul 21, 2026
20a4666
chore(ui): bump sharp to 0.35.x via npm override (#34193)
yuneng-berri Jul 22, 2026
dfbd098
refactor(ui): migrate Tool Policies table onto the shared DataTable (…
yuneng-berri Jul 22, 2026
7dd0541
bump: litellm-proxy-extras 0.4.79 -> 0.4.80, litellm 1.94.0 -> 1.95.0…
yuneng-berri Jul 22, 2026
e4343eb
feat(rust): honor pre-computed Entra ID auth for Azure /messages (#34…
yassin-berriai Jul 22, 2026
1ea7db2
fix(rust): route agentic-completion-hook /messages requests to Python…
yassin-berriai Jul 22, 2026
06169e8
docs: add TLDR section to PR template
mateo-berri Jul 22, 2026
e7b9357
fix(e2e): drop httpbin.org from passthrough headers test, use real An…
mubashir1osmani Jul 22, 2026
06d2efd
docs: structure PR template TLDR into problem/solution bullets
mateo-berri Jul 22, 2026
e967bc8
test(e2e): cover 12 non-core LLM coverage registry cells (#34123)
ryan-crabbe-berri Jul 22, 2026
4c1f071
docs: cap PR template TLDR bullets at one short line
mateo-berri Jul 22, 2026
5081e0c
test(logging): pin compression_savings in the gcs pubsub spend log fi…
yuneng-berri Jul 22, 2026
b2a73d4
Merge pull request #34203 from BerriAI/litellm_pr_template_tldr
mateo-berri Jul 22, 2026
065faf6
chore(proxy): clean up request parameter validation and provider dest…
yucheng-berri Jul 22, 2026
0326722
docs(issue-template): ask for a numbered list of reproduction steps (…
ryan-crabbe-berri Jul 22, 2026
5b676b9
test(ui): fix key and credential e2e specs after the overflow menu mi…
yuneng-berri Jul 22, 2026
cc33a31
Merge pull request #34052 from BerriAI/litellm_a2a_e2e_tests
mateo-berri Jul 22, 2026
82d3116
fix(ui): reflect REDIS_* env cache config and stop the UI overwriting…
yassin-berriai Jul 22, 2026
1aba849
fix(ui): surface env-var-sourced theme and logging-callback settings …
yassin-berriai Jul 22, 2026
a780d4e
test(musty_leopard): cover customer chat/messages cost + streaming pa…
mubashir1osmani Jul 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ body:
id: steps-to-reproduce
attributes:
label: Steps to Reproduce
description: Please provide detailed steps to reproduce this bug(A curl/python code to reproduce the bug)
description: Please provide a numbered list of the exact steps to reproduce this bug (include a curl/python snippet to reproduce it). Number each step (1., 2., 3., ...) in the order you performed them.
placeholder: |
1. config.yaml file/ .env file/ etc.
2. Run the following code...
Expand Down
15 changes: 15 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
## TLDR

<!-- Fill in the bullets below and keep each one short and concrete: one line per bullet, roughly 10 words max
This section must be extremely human parsable, comprehensible, and readable: its target audience is humans, not AI agents -->

Problem this solves:

- <blah>
- ...

How it solves it:

- <blah>
- ...

## Relevant issues

<!-- e.g., "Fixes #000" -->
Expand Down
61 changes: 0 additions & 61 deletions .github/workflows/create_daily_oss_branch.yml

This file was deleted.

4 changes: 2 additions & 2 deletions .github/workflows/guard-main-branch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@ jobs:
echo "PR head repo: $HEAD_REPO"
echo "PR head branch: $HEAD_REF"
if [ "$HEAD_REPO" != "$BASE_REPO" ]; then
echo "::error::PRs to main must originate from the canonical repository ($BASE_REPO), not a fork ($HEAD_REPO). External contributors should open PRs against the current daily OSS branch (named litellm_oss_daily_YYYY_MM_DD; a fresh one is cut each weekday, so target the most recent) instead."
echo "::error::PRs to main must originate from the canonical repository ($BASE_REPO), not a fork ($HEAD_REPO). External contributors should open PRs against 'litellm_internal_staging' instead."
exit 1
fi
if [ "$HEAD_REF" = "litellm_internal_staging" ] || [[ "$HEAD_REF" == litellm_hotfix_?* ]]; then
echo "Allowed source branch."
exit 0
fi
echo "::error::PRs to main must originate from 'litellm_internal_staging' or a 'litellm_hotfix_*' branch. Got: '$HEAD_REF'. If this is a contribution, retarget the PR against the current daily OSS branch (named litellm_oss_daily_YYYY_MM_DD; a fresh one is cut each weekday, so target the most recent) instead."
echo "::error::PRs to main must originate from 'litellm_internal_staging' or a 'litellm_hotfix_*' branch. Got: '$HEAD_REF'. If this is a contribution, retarget the PR against 'litellm_internal_staging' instead."
exit 1
2 changes: 2 additions & 0 deletions .github/workflows/image-scan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ jobs:
# free OSS, run as a pinned, checksum-verified binary; no GitHub Action
# dependency and no vendor SaaS callout.
- name: Scan image for fixable HIGH/CRITICAL CVEs
env:
GRYPE_MATCH_PYTHON_USING_CPES: "true"
run: |
"$RUNNER_TEMP/grype" litellm-image-scan:${{ github.sha }} \
--only-fixed \
Expand Down
50 changes: 0 additions & 50 deletions .github/workflows/oss_daily_guardrails.yml

This file was deleted.

3 changes: 3 additions & 0 deletions .github/workflows/test-code-quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,9 @@ jobs:
- name: check_fastuuid_usage
run: uv run --no-sync python ./tests/code_coverage_tests/check_fastuuid_usage.py

- name: check_e2e_no_raw_requests
run: uv run --no-sync python ./tests/code_coverage_tests/check_e2e_no_raw_requests.py

- name: memory_test
run: uv run --no-sync python ./tests/code_coverage_tests/memory_test.py

Expand Down
57 changes: 57 additions & 0 deletions .github/workflows/test-litellm-ui-unit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: UI Unit Tests
permissions:
contents: read

on:
pull_request:
branches:
- main
- litellm_internal_staging
- litellm_oss_staging
- "litellm_**"
push:
branches:
- litellm_internal_staging

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
ui-unit-tests:
runs-on: ubuntu-latest
timeout-minutes: 20
defaults:
run:
working-directory: ui/litellm-dashboard

steps:
- name: Checkout repository
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
fetch-depth: 0
persist-credentials: false

- name: Setup Node.js
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: "20"
cache: "npm"
cache-dependency-path: ui/litellm-dashboard/package-lock.json

- name: Install dependencies
run: npm ci

- name: Run UI unit tests (Vitest)
env:
CI: "true"
BASE_SHA: ${{ github.event.pull_request.base.sha }}
run: |
if [ -n "$BASE_SHA" ]; then
echo "Pull request: running only tests related to changes since $BASE_SHA"
npm run test -- --run --changed "$BASE_SHA" --passWithNoTests \
--pool forks --poolOptions.forks.maxForks=4
else
echo "Push to $GITHUB_REF_NAME: running the full suite"
npm run test -- --run --pool forks --poolOptions.forks.maxForks=4
fi
6 changes: 6 additions & 0 deletions .github/workflows/test-rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,5 +61,11 @@ jobs:
- name: Run Clippy
run: cargo clippy --workspace --all-targets --locked -- -D warnings

- name: Run Clippy with Bedrock auth
run: cargo clippy -p litellm-core --all-targets --features bedrock-auth --locked -- -D warnings

- name: Run Rust tests
run: cargo test --workspace --locked

- name: Run core tests with Bedrock auth
run: cargo test -p litellm-core --features bedrock-auth --locked
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Same thing for bug fixes. The tests should make it so that this specific bug can

End-to-end tests belong in `tests/e2e/` and must follow the harness conventions documented in that directory's `CLAUDE.md`

When creating PRs, don't set base to `main`. `litellm_internal_staging` serves that purpose for internal contributors; external / OSS contributions target the current daily OSS branch instead, named `litellm_oss_daily_YYYY_MM_DD` (a fresh one is cut each weekday, so use the most recent)
When creating PRs, don't set base to `main`. `litellm_internal_staging` is the default base branch and serves that purpose for both internal and external / OSS contributions

When writing a PR body, treat the comments and imperative instructions inside @.github/pull_request_template.md as rules to follow, not just layout. Agent harnesses may strip HTML comments from copies of that file injected into context, so read .github/pull_request_template.md from disk before writing a PR body to make sure you see every comment rule

Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ npm run build
## Submitting Your PR

1. **Push your branch**: `git push origin your-feature-branch`
2. **Create a PR**: Go to GitHub and open a pull request against the current daily OSS branch, named `litellm_oss_daily_YYYY_MM_DD`. A fresh one is cut each weekday, so pick the most recent from the [branch list](https://github.com/BerriAI/litellm/branches/all?query=litellm_oss_daily). Do not target `main`.
2. **Create a PR**: Go to GitHub and open a pull request against [`litellm_internal_staging`](https://github.com/BerriAI/litellm/tree/litellm_internal_staging), which is the default base branch. Do not target `main`.
3. **Fill out the PR template**: Provide clear description of changes
4. **Wait for review**: Maintainers will review and provide feedback
5. **Address feedback**: Make requested changes and push updates
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
-- AlterTable
ALTER TABLE "LiteLLM_DailyUserSpend" ADD COLUMN IF NOT EXISTS "compression_saved_tokens" BIGINT NOT NULL DEFAULT 0;

-- AlterTable
ALTER TABLE "LiteLLM_DailyOrganizationSpend" ADD COLUMN IF NOT EXISTS "compression_saved_tokens" BIGINT NOT NULL DEFAULT 0;

-- AlterTable
ALTER TABLE "LiteLLM_DailyEndUserSpend" ADD COLUMN IF NOT EXISTS "compression_saved_tokens" BIGINT NOT NULL DEFAULT 0;

-- AlterTable
ALTER TABLE "LiteLLM_DailyAgentSpend" ADD COLUMN IF NOT EXISTS "compression_saved_tokens" BIGINT NOT NULL DEFAULT 0;

-- AlterTable
ALTER TABLE "LiteLLM_DailyTeamSpend" ADD COLUMN IF NOT EXISTS "compression_saved_tokens" BIGINT NOT NULL DEFAULT 0;

-- AlterTable
ALTER TABLE "LiteLLM_DailyTagSpend" ADD COLUMN IF NOT EXISTS "compression_saved_tokens" BIGINT NOT NULL DEFAULT 0;
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
-- AlterTable
ALTER TABLE "LiteLLM_DailyUserSpend" ADD COLUMN IF NOT EXISTS "compression_savings_spend" DOUBLE PRECISION NOT NULL DEFAULT 0.0;
ALTER TABLE "LiteLLM_DailyUserSpend" ADD COLUMN IF NOT EXISTS "prompt_caching_savings_spend" DOUBLE PRECISION NOT NULL DEFAULT 0.0;

-- AlterTable
ALTER TABLE "LiteLLM_DailyOrganizationSpend" ADD COLUMN IF NOT EXISTS "compression_savings_spend" DOUBLE PRECISION NOT NULL DEFAULT 0.0;
ALTER TABLE "LiteLLM_DailyOrganizationSpend" ADD COLUMN IF NOT EXISTS "prompt_caching_savings_spend" DOUBLE PRECISION NOT NULL DEFAULT 0.0;

-- AlterTable
ALTER TABLE "LiteLLM_DailyEndUserSpend" ADD COLUMN IF NOT EXISTS "compression_savings_spend" DOUBLE PRECISION NOT NULL DEFAULT 0.0;
ALTER TABLE "LiteLLM_DailyEndUserSpend" ADD COLUMN IF NOT EXISTS "prompt_caching_savings_spend" DOUBLE PRECISION NOT NULL DEFAULT 0.0;

-- AlterTable
ALTER TABLE "LiteLLM_DailyAgentSpend" ADD COLUMN IF NOT EXISTS "compression_savings_spend" DOUBLE PRECISION NOT NULL DEFAULT 0.0;
ALTER TABLE "LiteLLM_DailyAgentSpend" ADD COLUMN IF NOT EXISTS "prompt_caching_savings_spend" DOUBLE PRECISION NOT NULL DEFAULT 0.0;

-- AlterTable
ALTER TABLE "LiteLLM_DailyTeamSpend" ADD COLUMN IF NOT EXISTS "compression_savings_spend" DOUBLE PRECISION NOT NULL DEFAULT 0.0;
ALTER TABLE "LiteLLM_DailyTeamSpend" ADD COLUMN IF NOT EXISTS "prompt_caching_savings_spend" DOUBLE PRECISION NOT NULL DEFAULT 0.0;

-- AlterTable
ALTER TABLE "LiteLLM_DailyTagSpend" ADD COLUMN IF NOT EXISTS "compression_savings_spend" DOUBLE PRECISION NOT NULL DEFAULT 0.0;
ALTER TABLE "LiteLLM_DailyTagSpend" ADD COLUMN IF NOT EXISTS "prompt_caching_savings_spend" DOUBLE PRECISION NOT NULL DEFAULT 0.0;
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
-- CreateTable
CREATE TABLE IF NOT EXISTS "LiteLLM_SSOIdentityAssertion" (
"user_id" TEXT NOT NULL,
"assertion_b64" TEXT NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,

CONSTRAINT "LiteLLM_SSOIdentityAssertion_pkey" PRIMARY KEY ("user_id")
);
27 changes: 27 additions & 0 deletions litellm-proxy-extras/litellm_proxy_extras/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,15 @@ model LiteLLM_MCPServerOAuthClient {
updated_at DateTime @default(now()) @updatedAt @map("updated_at")
}

// The enterprise IdP identity assertion captured at SSO login, one row per user.
// assertion_b64 is an encrypted JSON payload: {id_token, refresh_token?, issuer?, expires_at?}.
model LiteLLM_SSOIdentityAssertion {
user_id String @id
assertion_b64 String
created_at DateTime @default(now()) @map("created_at")
updated_at DateTime @default(now()) @updatedAt @map("updated_at")
}

// Generate Tokens for Proxy
model LiteLLM_VerificationToken {
token String @id
Expand Down Expand Up @@ -736,6 +745,9 @@ model LiteLLM_DailyUserSpend {
completion_tokens BigInt @default(0)
cache_read_input_tokens BigInt @default(0)
cache_creation_input_tokens BigInt @default(0)
compression_saved_tokens BigInt @default(0)
compression_savings_spend Float @default(0.0)
prompt_caching_savings_spend Float @default(0.0)
spend Float @default(0.0)
api_requests BigInt @default(0)
successful_requests BigInt @default(0)
Expand Down Expand Up @@ -767,6 +779,9 @@ model LiteLLM_DailyOrganizationSpend {
completion_tokens BigInt @default(0)
cache_read_input_tokens BigInt @default(0)
cache_creation_input_tokens BigInt @default(0)
compression_saved_tokens BigInt @default(0)
compression_savings_spend Float @default(0.0)
prompt_caching_savings_spend Float @default(0.0)
spend Float @default(0.0)
api_requests BigInt @default(0)
successful_requests BigInt @default(0)
Expand Down Expand Up @@ -798,6 +813,9 @@ model LiteLLM_DailyEndUserSpend {
completion_tokens BigInt @default(0)
cache_read_input_tokens BigInt @default(0)
cache_creation_input_tokens BigInt @default(0)
compression_saved_tokens BigInt @default(0)
compression_savings_spend Float @default(0.0)
prompt_caching_savings_spend Float @default(0.0)
spend Float @default(0.0)
api_requests BigInt @default(0)
successful_requests BigInt @default(0)
Expand Down Expand Up @@ -828,6 +846,9 @@ model LiteLLM_DailyAgentSpend {
completion_tokens BigInt @default(0)
cache_read_input_tokens BigInt @default(0)
cache_creation_input_tokens BigInt @default(0)
compression_saved_tokens BigInt @default(0)
compression_savings_spend Float @default(0.0)
prompt_caching_savings_spend Float @default(0.0)
spend Float @default(0.0)
api_requests BigInt @default(0)
successful_requests BigInt @default(0)
Expand Down Expand Up @@ -858,6 +879,9 @@ model LiteLLM_DailyTeamSpend {
completion_tokens BigInt @default(0)
cache_read_input_tokens BigInt @default(0)
cache_creation_input_tokens BigInt @default(0)
compression_saved_tokens BigInt @default(0)
compression_savings_spend Float @default(0.0)
prompt_caching_savings_spend Float @default(0.0)
spend Float @default(0.0)
api_requests BigInt @default(0)
successful_requests BigInt @default(0)
Expand Down Expand Up @@ -890,6 +914,9 @@ model LiteLLM_DailyTagSpend {
completion_tokens BigInt @default(0)
cache_read_input_tokens BigInt @default(0)
cache_creation_input_tokens BigInt @default(0)
compression_saved_tokens BigInt @default(0)
compression_savings_spend Float @default(0.0)
prompt_caching_savings_spend Float @default(0.0)
spend Float @default(0.0)
api_requests BigInt @default(0)
successful_requests BigInt @default(0)
Expand Down
Loading
Loading