Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
616 commits
Select commit Hold shift + click to select a range
39bdacb
fix(cli): revoke the previous login's refresh token when lite login r…
mateo-berri Aug 20, 2026
44d3fc7
fix(cli): name lite login --pkce and the refresh failure when a key c…
mateo-berri Aug 20, 2026
36e9e81
fix(cli): renew the key once per lite auth print-token run
mateo-berri Aug 20, 2026
a20cfc5
fix(cli): let lite up trust the key the group already renewed
mateo-berri Aug 20, 2026
238609e
fix(mcp): answer 503 when a refresh-token burn cannot be recorded
mateo-berri Aug 20, 2026
64e7ab1
fix(cli): keep the login record when the proxy cannot record a logout…
mateo-berri Aug 20, 2026
fad8116
Merge pull request #37615 from BerriAI/litellm_autorouter_marker_regi…
mateo-berri Aug 20, 2026
68deda3
refactor(ci): fold the nine thin unit-shard callers into one matrix (…
yuneng-berri Aug 20, 2026
5b1a956
chore(ci): close the test-census blind spots and move scripts out of …
yuneng-berri Aug 20, 2026
7de8f45
test: retire tests/old_proxy_tests, which holds no tests (#37605)
yuneng-berri Aug 20, 2026
ffab5a3
feat(ci): ratchet the test suite's zero-assert, mock-echo and global-…
yuneng-berri Aug 20, 2026
ec81069
Merge pull request #37626 from BerriAI/litellm_lit5874_native_cli_oau…
mateo-berri Aug 20, 2026
e51addb
Merge pull request #37628 from BerriAI/litellm_lit5876_openai_prompt_…
mateo-berri Aug 20, 2026
5bee64c
Merge pull request #37604 from BerriAI/litellm_lit5867_realtime_silen…
mateo-berri Aug 20, 2026
80d878f
Merge pull request #37623 from BerriAI/litellm_lit_5875_anthropic_pro…
mateo-berri Aug 20, 2026
0904d58
Merge pull request #37602 from BerriAI/litellm_vertex_live_db_credent…
mateo-berri Aug 20, 2026
b091158
Merge pull request #37575 from BerriAI/litellm_fix_prompt_hooks_witho…
mateo-berri Aug 20, 2026
76aa13c
test: remove the five test functions a later definition shadows (#37591)
yuneng-berri Aug 20, 2026
d7e4b1b
feat(ci): guard shard assignment across every sharded test tree (#37593)
yuneng-berri Aug 20, 2026
d2d158f
feat(ui): multi-key shadow eval picker and per-key breakdown (#37389)
tin-berri Aug 20, 2026
4fac887
fix(mistral): correct zai-glm-5-2 limits, add cached-input price and …
mateo-berri Aug 20, 2026
5f7c0e1
Merge origin/litellm_internal_staging into litellm_cli_refresh_tokens
mateo-berri Aug 20, 2026
e12833e
fix(ui): make dark-mode form controls visible (#37648)
yuneng-berri Aug 20, 2026
c794dcb
fix(ui): give status colours a readable foreground and drop the muted…
yuneng-berri Aug 20, 2026
5cd6347
fix(ui): make inline styles and code blocks follow the theme (#37651)
yuneng-berri Aug 20, 2026
0e7e640
fix(ui): move the policy flow builder onto theme tokens (#37654)
yuneng-berri Aug 20, 2026
9b00fd9
test: settle three allowlist entries that were open questions (#37598)
yuneng-berri Aug 20, 2026
569dcf4
feat(ci): ratchet tests that skip themselves when a credential is abs…
yuneng-berri Aug 20, 2026
a48baef
feat(ci): catch files a -k expression deselects from every job (#37601)
yuneng-berri Aug 20, 2026
3357ec8
test: run the 30 test files stranded in the second mirror (#37595)
yuneng-berri Aug 20, 2026
10829ff
Merge remote-tracking branch 'origin/litellm_internal_staging' into p…
mateo-berri Aug 20, 2026
7ac95b1
fix(ui): make hardcoded palette surfaces theme-aware (#37650)
yuneng-berri Aug 20, 2026
8672cd4
Merge pull request #37566 from BerriAI/litellm_cli_refresh_tokens
mateo-berri Aug 20, 2026
b7017a7
fix(model_prices): consolidate nine open registry audits into one cha…
devin-ai-integration[bot] Aug 20, 2026
c164944
fix(ui): draw one Per Day savings bar per date on Cost Optimization (…
tin-berri Aug 20, 2026
5d45d20
Merge pull request #37110 from mubashir1osmani/litellm_add_zai_glm_5_…
mateo-berri Aug 20, 2026
059aec8
Merge remote-tracking branch 'origin/litellm_internal_staging' into p…
Aug 20, 2026
282bcda
feat(complexity_router): add business classification rubric preset (#…
devin-ai-integration[bot] Aug 20, 2026
e1ff8b2
test: satisfy test-quality gate in consolidated registry tests
devin-ai-integration[bot] Aug 20, 2026
edbb342
feat(ui): serve a dark-mode variant of the LiteLLM logo (#37656)
yuneng-berri Aug 20, 2026
b469294
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
devin-ai-integration[bot] Aug 20, 2026
a95a1d0
fix(model_prices): drop duplicate zai-glm-5-2 entry superseded by sta…
devin-ai-integration[bot] Aug 20, 2026
d542c82
fix(otel): route Phoenix traces to per-key/team projects under otel v…
mubashir1osmani Aug 20, 2026
0f1e09b
fix(cli): keep the refresh token in the OS keychain, not in token.json
mateo-berri Aug 20, 2026
4873567
test: replace blind sleeps with deadline waits in callback and cachin…
ryan-crabbe-berri Aug 20, 2026
5c21312
feat(proxy): authenticate to Azure Postgres with Microsoft Entra ID t…
mateo-berri Aug 20, 2026
50bf99a
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 20, 2026
46d783b
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
devin-ai-integration[bot] Aug 20, 2026
bdd4c8e
fix(model_prices): add Gemini live-translate, Voyage 4 series, Perple…
devin-ai-integration[bot] Aug 20, 2026
ba4a355
fix(model_prices): add tpm/rpm to gemini live-translate preview entry
devin-ai-integration[bot] Aug 20, 2026
d491a3d
Merge pull request #37665 from BerriAI/litellm_cli_keychain_refresh_t…
mateo-berri Aug 20, 2026
79cac36
fix(ui): keep keyword tier rules that target operator-defined tiers w…
tin-berri Aug 20, 2026
135f234
feat(proxy): add POST /auto_router/validate_complexity_router_config …
tin-berri Aug 20, 2026
0bdaa98
fix(perplexity): correct glm-5.2 cache read rate to the published cat…
Aug 20, 2026
88ef473
fix(utils): resolve model ids that repeat the litellm provider prefix
Aug 20, 2026
122675c
feat(ui): let admins supply a dark-mode variant of their custom logo …
yuneng-berri Aug 20, 2026
3a31331
fix(proxy): run pre-call guardrails on batch input file uploads (#37519)
yucheng-berri Aug 20, 2026
933e28d
feat(ui): add a light/dark/system theme toggle to the top bar (#37669)
ryan-crabbe-berri Aug 20, 2026
80cb655
test(e2e): pin query params and multipart form fields as replay match…
mubashir1osmani Aug 20, 2026
4eb7bf3
fix(proxy): keep token-auth URLs, toggles, and refresh sleeps safe
mateo-berri Aug 20, 2026
a369cb0
fix(bridge): keep the provider's own model prefix on chat-to-response…
Aug 20, 2026
e07a712
feat(proxy): redact or drop individual batch records instead of rejec…
yucheng-berri Aug 20, 2026
787edb1
refactor(ui): mark dark as beta in the theme menu, not the toolbar (#…
ryan-crabbe-berri Aug 20, 2026
4af59d7
ci: lint the test tree for undefined names and fix all 30 (#37671)
ryan-crabbe-berri Aug 20, 2026
6bd21fa
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
web-flow Aug 20, 2026
fc042a2
fix(azure): prefer workload identity over managed identity
web-flow Aug 20, 2026
fc3b160
Merge pull request #37565 from BerriAI/litellm_lit_5745_provider_edge…
mateo-berri Aug 20, 2026
affe2b4
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 20, 2026
abc6ebf
fix(responses_bridge): map incomplete responses to finish_reason leng…
mateo-berri Aug 20, 2026
50a346d
fix(model_prices): restore supports_vision on Mistral Small 4.0 entries
mateo-berri Aug 20, 2026
c551a5c
fix(proxy): treat explicit zero non-token prices as priced
mateo-berri Aug 20, 2026
9c29e11
Merge branch 'litellm_block_unpriced_models' of https://git-manager.d…
mateo-berri Aug 20, 2026
f3639a6
fix(mcp): let a salt-key-orphaned OAuth credential be replaced by re-…
yassin-berriai Aug 20, 2026
2f23cf5
fix(mcp): normalize auth schemes so MCP egress emits exactly one pref…
yassin-berriai Aug 20, 2026
21e9632
test: add six ruff rules that catch tests which cannot fail (#37709)
ryan-crabbe-berri Aug 20, 2026
1c1b3c5
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 20, 2026
861140b
perf(ci): measure unit-shard coverage with the sys.monitoring core (#…
yuneng-berri Aug 20, 2026
8a18e24
test: merge three stranded twins into the files that shadow them (#37…
yuneng-berri Aug 20, 2026
cde1344
test(ci): reject coverage-allowlist entries that no longer match a fi…
yuneng-berri Aug 20, 2026
21891b4
fix(proxy): count explicit zero prices on any billed metric as config…
mateo-berri Aug 20, 2026
2996a18
fix(model_prices): document 262k input limit on fireworks qwen3p8-max
mateo-berri Aug 20, 2026
648c6e7
feat(ci): assert .github/workflows holds only workflows, correctly na…
yuneng-berri Aug 20, 2026
7f539e3
Merge branch 'litellm_block_unpriced_models' of https://github.com/Be…
mateo-berri Aug 20, 2026
4af6665
feat(ci): freeze the conftest save/restore inventory so it can only s…
yuneng-berri Aug 20, 2026
996693f
fix(a2a): accept the whole JSON-RPC id union the spec defines (#37704)
yassin-berriai Aug 20, 2026
5301872
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 20, 2026
abdde94
fix(ptu): refuse an incomplete config.yaml reservation the way the en…
yucheng-berri Aug 20, 2026
6bb677d
fix(model-costs): correct gpt-5.6 input token cap
mateo-berri Aug 20, 2026
9432f40
bump: litellm-enterprise 0.1.57 -> 0.1.58, litellm-proxy-extras 0.4.8…
yuneng-berri Aug 20, 2026
d556fac
Merge pull request #37112 from mubashir1osmani/litellm_add_perplexity…
mateo-berri Aug 20, 2026
ab79b8d
fix: count tiered_pricing as a cost mapping when blocking unpriced mo…
mateo-berri Aug 20, 2026
60e03be
fix(ui): surface the paginated fallback on Cost Optimization (#37659)
tin-berri Aug 20, 2026
2dcd453
feat(shadow_eval)!: gate the per-key budget on dollar spend instead o…
tin-berri Aug 20, 2026
eb8d402
test(proxy): cover a registry model priced only via tiered_pricing
mateo-berri Aug 20, 2026
cb4eb82
feat(ui): per-model reasoning effort in the complexity tier editor (#…
tin-berri Aug 20, 2026
5c89490
Merge litellm_internal_staging into litellm_fix_responses_bridge_inco…
mateo-berri Aug 20, 2026
60706d5
feat(fal_ai): add gpt-image-2 image generation support
devin-ai-integration[bot] Aug 20, 2026
f3896c0
test(fal_ai): use monkeypatch for the gpt-image-2 cost map fixture
devin-ai-integration[bot] Aug 20, 2026
1d7f675
Merge pull request #37663 from BerriAI/litellm_azure_postgres_entra_auth
mateo-berri Aug 20, 2026
2b2d6d7
fix(proxy): apply DB-persisted safe litellm settings on every worker'…
mateo-berri Aug 20, 2026
3672fa9
fix(proxy): log block_requests_for_models_without_pricing updates lazily
mateo-berri Aug 20, 2026
a3b6762
fix(streaming): price partial-stream spend rows at the real model and…
mateo-berri Aug 20, 2026
cba4fa4
fix(redis): keep Azure AD and GCP IAM auth on URL and pool clients
mateo-berri Aug 20, 2026
bfe54eb
docs(redis): say why async paths cannot reuse redis_connect_func
mateo-berri Aug 20, 2026
3c44f8d
fix(ui): surface toggle failures on the block-unpriced-models setting
mateo-berri Aug 20, 2026
307ca1b
fix(redis): say when an async client drops an unusable connect func
mateo-berri Aug 20, 2026
df00c33
fix(proxy): reload the unpriced-model toggle regardless of supported_…
mateo-berri Aug 20, 2026
387a948
fix(scim): keep the matched user_id on POST /Users email match (#37701)
devin-ai-integration[bot] Aug 20, 2026
a030b33
fix(scim): fail group sync when a member add or user creation fails (…
devin-ai-integration[bot] Aug 20, 2026
3ea1c16
fix(auth): cache team member default budget as a typed model (#37695)
devin-ai-integration[bot] Aug 20, 2026
22e8b45
feat(proxy): add maximum_health_check_retention_period to bound the h…
devin-ai-integration[bot] Aug 20, 2026
d8a57a1
fix(reset_budget_job): reconnect and retry on transient DB transport …
devin-ai-integration[bot] Aug 20, 2026
bc52dd5
fix(proxy): split agent inference and management routes so admin node…
ryan-crabbe-berri Aug 20, 2026
a07b2c3
feat(helm): compose DATABASE_URL_READ_REPLICA from a reader host secr…
devin-ai-integration[bot] Aug 20, 2026
cacfc95
fix(datadog): normalize alias and request tag values before submissio…
devin-ai-integration[bot] Aug 20, 2026
18242ae
fix(router): isolate deployment model info (#37687)
devin-ai-integration[bot] Aug 20, 2026
618d907
fix(fal_ai): price gpt-image-2 unprefixed alias and edit endpoint
devin-ai-integration[bot] Aug 20, 2026
7bcdc6c
fix(logging): bound the shared logging executor backlog (#37694)
devin-ai-integration[bot] Aug 20, 2026
035a322
fix(proxy): capture requester IP in 401 and auth-time 429 failure log…
devin-ai-integration[bot] Aug 20, 2026
a974464
fix(logging): bound oversized error payloads written to stdout (#37684)
devin-ai-integration[bot] Aug 20, 2026
ebdbb31
perf(budget_reservation): tokenize each request once, off the event l…
devin-ai-integration[bot] Aug 20, 2026
3d39460
perf(prometheus): render /metrics off the event loop and coalesce con…
devin-ai-integration[bot] Aug 20, 2026
8c42d8b
fix(token_counter): stop large token counts from blocking the proxy e…
devin-ai-integration[bot] Aug 20, 2026
4773130
fix(caching): bound the semantic cache embedding lookup
mateo-berri Aug 20, 2026
33bafd0
fix(router): make prompt caching affinity aware of auto-injected cach…
devin-ai-integration[bot] Aug 20, 2026
14faec9
fix(redis): keep a coroutine redis_connect_func on async clients
mateo-berri Aug 20, 2026
8f68bc6
Merge pull request #37607 from BerriAI/litellm_lit_5869_cost_e2e_pins
mateo-berri Aug 20, 2026
bf59b7e
feat(rust): route /chat/completions through the Rust core for anthrop…
yassin-berriai Aug 20, 2026
d40aea8
Merge pull request #37679 from mubashir1osmani/litellm_lit5890_replay…
mateo-berri Aug 20, 2026
7003525
test: cover the qdrant semantic cache embedding deadline
mateo-berri Aug 20, 2026
3207014
fix(a2a): return SSE (text/event-stream) for message/stream instead o…
devin-ai-integration[bot] Aug 20, 2026
7b20828
fix(proxy): fail the standalone prisma migration entrypoint on migrat…
devin-ai-integration[bot] Aug 20, 2026
5c9ed89
fix: mark daybreak-blue-latest and gpt-5.6-sol as supporting computer…
mateo-berri Aug 20, 2026
bcf9e53
feat(sso): source generic OIDC user claims from ID/access token when …
devin-ai-integration[bot] Aug 20, 2026
b2aff8b
fix(proxy): claim batch cost rows atomically so multi-pod polling can…
devin-ai-integration[bot] Aug 20, 2026
2417613
refactor(redis): build the async auth kwargs instead of mutating them…
mateo-berri Aug 20, 2026
756a5fa
test(responses_bridge): type the incomplete-response test helpers
mateo-berri Aug 20, 2026
308c906
fix(redis): drop a connect func the async cluster client cannot accept
mateo-berri Aug 20, 2026
c73480c
fix(proxy): block every unpriced model a request names
mateo-berri Aug 20, 2026
52403d7
fix(jwt): retry JWKS fetches, serve stale keys, and return 503 when t…
devin-ai-integration[bot] Aug 20, 2026
cb89c7a
fix(ui): stop the Add Model mapping table from looping the page (#37741)
yuneng-berri Aug 20, 2026
09b391d
fix(redis): keep the credential provider off the Sentinel monitors
mateo-berri Aug 20, 2026
2a863f8
fix(containers): surface provider errors from container file content …
yuneng-berri Aug 20, 2026
c09643a
fix(redis): never hand a data-node credential provider to the Sentine…
mateo-berri Aug 20, 2026
0c2e404
test(ci): serve /moderations from the canned OpenAI mock (#37739)
yuneng-berri Aug 20, 2026
7d23d41
Merge branch 'litellm_internal_staging' of https://github.com/BerriAI…
mateo-berri Aug 20, 2026
6d66567
fix(fal_ai): stop advertising /v1/images/edits for gpt-image-2 edit
mateo-berri Aug 21, 2026
cc812cd
test: point the live web search, groq and vertex image suites at mode…
yuneng-berri Aug 21, 2026
e003017
feat(cognition): give Cognition its own provider identity
mateo-berri Aug 21, 2026
7b25ee1
fold the two reasoning-item casts into one shared helper
mateo-berri Aug 21, 2026
fb3dd0f
Merge pull request #37722 from BerriAI/litellm_gpt56_max_input_tokens
mateo-berri Aug 21, 2026
43995bc
fix(db): apply the configured connection params to the read replica U…
devin-ai-integration[bot] Aug 21, 2026
286c75f
Merge pull request #37729 from BerriAI/devin_ai_fal_gpt_image_2
mateo-berri Aug 21, 2026
c008d5e
fix(scim): propagate team roster write failures on group and user wri…
devin-ai-integration[bot] Aug 21, 2026
987478a
Merge pull request #37740 from BerriAI/litellm_redis_url_pool_credent…
mateo-berri Aug 21, 2026
e98b9fd
test: assert the prefixed model the responses bridge now hands back (…
yuneng-berri Aug 21, 2026
66a89f5
perf(reset_budget_job): elect one sweeper per tick and bound the wind…
yassin-berriai Aug 21, 2026
02e67cd
Merge pull request #35181 from BerriAI/litellm_block_unpriced_models
mateo-berri Aug 21, 2026
94239d2
test(e2e): name the pinned GitHub issue in each passthrough test docs…
mateo-berri Aug 21, 2026
d924226
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 21, 2026
332a0f1
fix(cognition): price swe-1.7 from the published standard tier
mateo-berri Aug 21, 2026
16bba15
require an incomplete reason before overriding finish_reason
mateo-berri Aug 21, 2026
211b399
Merge pull request #37658 from BerriAI/litellm_model_registry_consoli…
mateo-berri Aug 21, 2026
1a9e995
fix(cognition): restore Lightning SWE pricing and declare responses s…
mateo-berri Aug 21, 2026
de7dcbb
Carry real cache counts up instead of zeroing them on partial rows
mateo-berri Aug 21, 2026
c74e9e7
feat(ui): support project input and output TPM limits (#37676)
devin-ai-integration[bot] Aug 21, 2026
6eacdbf
Merge pull request #37541 from ljogeiger/litellm_vertex_parallel_fc_t…
mateo-berri Aug 21, 2026
27c3f87
fix(fal_ai): price gpt-image-2 per size and quality from request params
mateo-berri Aug 21, 2026
6742637
docs(cognition): tick the responses column in the provider table
mateo-berri Aug 21, 2026
680bcfd
test(lint): ban blind pytest.raises(Exception) with ruff B017 (#37731)
ryan-crabbe-berri Aug 21, 2026
dad4c1a
Merge pull request #37710 from BerriAI/litellm_fix_responses_bridge_i…
mateo-berri Aug 21, 2026
d57715b
chore(constants): drop the redundant comment on the semantic cache de…
mateo-berri Aug 21, 2026
12ed364
Merge branch 'litellm_internal_staging' into litellm_fix_messages_str…
mateo-berri Aug 21, 2026
2471e85
chore(lint): note why the streamed cost fallback swallows pricing errors
mateo-berri Aug 21, 2026
d5e6a0c
fix(fal_ai): strip provider prefix before keyed cost lookup
github-actions[bot] Aug 21, 2026
66a6a09
Merge pull request #37743 from BerriAI/litellm_cognition_provider_ide…
mateo-berri Aug 21, 2026
03a253a
Keep the model Azure Model Router recovered from later chunks
mateo-berri Aug 21, 2026
101ef7e
test(cost): cover the chat.completion.chunk and raising-pricer branches
mateo-berri Aug 21, 2026
4e02e7e
Merge pull request #37742 from BerriAI/litellm_lit5879_semantic_cache…
mateo-berri Aug 21, 2026
60225ab
test: assert the prefixed model the azure responses bridge now hands …
yuneng-berri Aug 21, 2026
35416c7
test: point the live together_ai suites at a model together still ser…
yuneng-berri Aug 21, 2026
655d107
fix(cost): keep mid-stream pricing from leaking a breakdown into the …
mateo-berri Aug 21, 2026
c010bd6
Only keep the builder's model when the client did not ask for it
mateo-berri Aug 21, 2026
65b4ac0
Merge pull request #37618 from BerriAI/litellm_lit_5870_passthrough_e…
mateo-berri Aug 21, 2026
0801493
Match the client-name check to the name the proxy actually stamps
mateo-berri Aug 21, 2026
f1c4145
fix(scim): resolve group members by SSO identity or email before crea…
devin-ai-integration[bot] Aug 21, 2026
a4dd1be
Merge pull request #35114 from BerriAI/litellm_fix_messages_stream_co…
mateo-berri Aug 21, 2026
a112ba5
test: enforce PT012 so a pytest.raises block cannot hide dead asserti…
ryan-crabbe-berri Aug 21, 2026
7d999a1
fix(cognition): price swe-1.7 at the standard tier, add swe-1.7-light…
mateo-berri Aug 21, 2026
16cd080
fix: populate team member emails missing from the roster snapshot
ryan-crabbe-berri Aug 21, 2026
722c650
test: cover generic HTTP streaming provider header forwarding
mateo-berri Aug 21, 2026
a66a10b
Merge pull request #37734 from BerriAI/litellm_fix_partial_stream_spe…
mateo-berri Aug 21, 2026
8a40aff
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
devin-ai-integration[bot] Aug 21, 2026
58c4fa6
chore: merge litellm_internal_staging into litellm_forward_bedrock_re…
devin-ai-integration[bot] Aug 21, 2026
354f497
Merge pull request #37751 from BerriAI/litellm_fal_gpt_image_2_keyed_…
mateo-berri Aug 21, 2026
2ea633d
fix(sagemaker_chat): send the inference component header and honor hf…
mateo-berri Aug 21, 2026
b76def0
test: require a `match=` on broad pytest.raises, and drop duplicate p…
ryan-crabbe-berri Aug 21, 2026
b64f180
Merge pull request #37759 from BerriAI/litellm_team_info_member_email
ryan-crabbe-berri Aug 21, 2026
4b29702
Merge pull request #37003 from BerriAI/litellm_forward_bedrock_respon…
mateo-berri Aug 21, 2026
ecd18c5
Merge pull request #37763 from BerriAI/litellm_fix_cognition_swe_1_7_…
mateo-berri Aug 21, 2026
e17988f
Merge pull request #37766 from BerriAI/litellm_sagemaker_chat_inferen…
mateo-berri Aug 21, 2026
2f40eb5
Merge litellm_internal_staging into litellm_fix_raw_key_log_persistence
mateo-berri Aug 21, 2026
471b6a4
Merge remote-tracking branch 'origin/litellm_internal_staging' into p…
mateo-berri Aug 21, 2026
9697748
test: gate the already-hashed pass-through on the provenance flag
mateo-berri Aug 21, 2026
fb417a5
fix(spend-tracking): tie the already-hashed pass-through to provenance
mateo-berri Aug 21, 2026
c7b34da
test(proxy): keep a leaked llm_router out of the next test in the worker
mateo-berri Aug 21, 2026
a50590f
fix(spend-tracking): keep the master key alias readable in spend logs
mateo-berri Aug 21, 2026
ff02d5c
Merge pull request #30736 from nitishagar/litellm_fix_raw_key_log_per…
mateo-berri Aug 21, 2026
aef09ac
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
bhuvan2134686 Aug 21, 2026
7d9e375
fix(scx-ai): use the published scx.ai rates and the scx_ai docs url
bhuvan2134686 Aug 21, 2026
7da34e8
fix(proxy): make per-model budgets track spend, enforce, and report t…
yassin-berriai Aug 21, 2026
40b8300
fix(spend): bound each spend-log write statement by row count as well…
yassin-berriai Aug 21, 2026
f9a8c96
feat(proxy): add router_model_name to auto-routed response bodies (#3…
tin-berri Aug 21, 2026
c166225
fix(responses): preserve Bedrock Mantle validation status (#36580)
uuzzrm Aug 21, 2026
4307b34
fix: omit thinking.type=disabled for always-on thinking Claude models…
tin-berri Aug 21, 2026
ae1eea1
test(lint): clear the two PT011/PT012 violations left on the test tre…
tin-berri Aug 21, 2026
01a32a3
fix(proxy): read batch records the same way the upload validation doe…
yucheng-berri Aug 21, 2026
d4a3277
fix(proxy): scan batch records with the content hooks that are not gu…
yucheng-berri Aug 21, 2026
8122cfc
fix(ptu): require an operator-declared id on a config.yaml reservatio…
yucheng-berri Aug 21, 2026
34c0c70
revert(spend-logs): drop the endTime backfill migration for spend log…
yuneng-berri Aug 21, 2026
0a5fa4f
fix(ptu): never retract a flat charge for a deployment the run cannot…
yucheng-berri Aug 21, 2026
cce6562
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Aug 21, 2026
6f73e5f
chore(codeowners): own the proxy-extras migrations directory
yuneng-berri Aug 21, 2026
247eaaa
Merge pull request #37876 from BerriAI/litellm_/migrations-code-owner…
yuneng-berri Aug 21, 2026
e9d40a8
test: enforce F811 so a duplicate definition cannot silently replace …
ryan-crabbe-berri Aug 21, 2026
f6c19ea
Merge pull request #37875 from BerriAI/litellm_/revert-pr-37554-migra…
yuneng-berri Aug 21, 2026
6a75bbd
fix(mcp): deny the interactive dcr_bridge authorize for a user withou…
tin-berri Aug 21, 2026
bb99f57
fix(responses): map Bedrock Mantle context overflow to ContextWindowE…
yassin-berriai Aug 21, 2026
ed02a12
Merge pull request #37878 from BerriAI/litellm_ruff_no_duplicate_defi…
ryan-crabbe-berri Aug 21, 2026
f48d219
fix(guardrails): run policy pipelines when the caller sends its own m…
devin-ai-integration[bot] Aug 21, 2026
52e181d
fix(vertex_ai): convert messages to contents in gemini count_tokens (…
sailikhithk Aug 21, 2026
243ed43
test: reject assertions on a caught error inside except (ruff PT017)
ryan-crabbe-berri Aug 21, 2026
04113aa
fix(router): don't log 'Could not identify azure model' when the depl…
tin-berri Aug 21, 2026
4d8346a
test: wrap the raising call, not the print that follows it
ryan-crabbe-berri Aug 21, 2026
9821b45
fix(ui): drive auto-router usage from the shared cost-optimization ti…
tin-berri Aug 21, 2026
02fd2e5
chore(ci): ratchet TQ004 to the 757 raw env writes this branch leaves
ryan-crabbe-berri Aug 21, 2026
6266b3d
test: keep a real assertion where the tolerance handler lost its last…
ryan-crabbe-berri Aug 21, 2026
277ed88
Merge remote-tracking branch 'origin/litellm_internal_staging' into d…
mateo-berri Aug 21, 2026
0c50286
feat(ui): add per-key Savings tab to key detail page (#37693)
tin-berri Aug 21, 2026
91f2382
fix(redis): reset only the failed node on a cluster client timeout, n…
yassin-berriai Aug 21, 2026
dd64331
Merge pull request #37887 from BerriAI/litellm_ruff_no_assert_in_except
ryan-crabbe-berri Aug 21, 2026
d193c7a
fix(mcp): strip root_path before matching the per-server MCP route sp…
tin-berri Aug 21, 2026
4e88ab6
feat(spend): surface per-request auto-router savings to logging callb…
tin-berri Aug 21, 2026
fa2186f
fix(proxy): group Codex turns under one session id (#37895)
mubashir1osmani Aug 21, 2026
66b930b
fix(logging): preserve uvicorn color_message args during secret redac…
mubashir1osmani Aug 21, 2026
9c558df
Merge pull request #37552 from BerriAI/litellm_add_kimi_k3_pricing
mateo-berri Aug 21, 2026
dc63c72
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 22, 2026
3029f7e
Merge pull request #34752 from SouthernCrossAI/litellm_scx_ai_provider
mateo-berri Aug 22, 2026
e917e4b
fix(model_cost): dedupe gemini-3.1-flash-lite-image and correct its c…
mateo-berri Aug 22, 2026
ce11d39
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 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 .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1025,7 +1025,7 @@ jobs:
name: Run tests
command: |
mkdir -p test-results
TEST_FILES=$(circleci tests glob "tests/agent_tests/**/test_*.py" | grep -v "^tests/agent_tests/local_only_agent_tests/")
TEST_FILES=$(circleci tests glob "tests/agent_tests/test_*.py")
echo "$TEST_FILES" | circleci tests run \
--verbose \
--command="tr ' ' '\\n' | awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
Expand Down
7 changes: 6 additions & 1 deletion .circleci/scripts/classify_changes.sh
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
#!/usr/bin/env bash
set -uo pipefail

category="${1:?usage: classify_changes.sh <backend|client>}"
category="${1:?usage: classify_changes.sh <backend|client|ui>}"

has_client=false
has_backend=false
has_ci=false
while IFS= read -r file || [ -n "$file" ]; do
[ -n "$file" ] || continue
case "$file" in
ui/* | tests/e2e/ui/*) has_client=true ;;
docs/* | *.md | *.mdx) : ;;
.github/* | .circleci/*) has_ci=true; has_backend=true ;;
*) has_backend=true ;;
esac
done
Expand All @@ -21,6 +23,9 @@ case "$category" in
client)
{ [ "$has_client" = true ] || [ "$has_backend" = true ]; } && echo run || echo skip
;;
ui)
{ [ "$has_client" = true ] || [ "$has_ci" = true ]; } && echo run || echo skip
;;
*)
echo run
;;
Expand Down
7 changes: 5 additions & 2 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
/ui/ @yuneng-jiang @ryan-crabbe-berri
/litellm/proxy/_experimental/out/ @yuneng-jiang @ryan-crabbe-berri
/ui/ @yuneng-berri @ryan-crabbe-berri
/litellm/proxy/_experimental/out/ @yuneng-berri @ryan-crabbe-berri
/ui/litellm-dashboard/src/lib/http/schema.d.ts
/model_prices_and_context_window.json @mateo-berri
/litellm/model_prices_and_context_window_backup.json @mateo-berri
/litellm-proxy-extras/litellm_proxy_extras/migrations/ @yuneng-berri @ryan-crabbe-berri
48 changes: 0 additions & 48 deletions .github/actions/detect-backend-changes/action.yml

This file was deleted.

41 changes: 41 additions & 0 deletions .github/actions/detect-changes/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: "Detect relevant changes"
description: >-
Classify the pull request's changed files with .circleci/scripts/classify_changes.sh
and expose decision=run|skip for one category. backend means anything outside ui/,
docs/ and markdown; ui means the dashboard sources alone. decision=skip lets callers
short-circuit expensive steps while the job still completes successfully and satisfies
its required status check, which a paths: filter cannot do because a workflow that
never starts never reports. The file list comes from the pull request itself rather
than from a git diff, because the checked-out merge ref is recomputed as the base
branch advances and would otherwise attribute the base branch's own commits to the
pull request. The decision defaults to run for any non pull_request event or whenever
the changed set cannot be resolved, so jobs are never skipped when the classification
is uncertain.

inputs:
category:
description: "Which classification to apply: backend, client or ui"
required: false
default: backend
github-token:
description: "Token used to list the pull request's files; needs pull-requests: read"
required: false
default: ${{ github.token }}

outputs:
decision:
description: "run when category-relevant files changed, otherwise skip"
value: ${{ steps.classify.outputs.decision }}

runs:
using: composite
steps:
- id: classify
shell: bash
env:
GH_TOKEN: ${{ inputs.github-token }}
CATEGORY: ${{ inputs.category }}
REPO: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
CHANGED_FILE_COUNT: ${{ github.event.pull_request.changed_files }}
run: bash "${GITHUB_ACTION_PATH}/../../scripts/detect_changes.sh"
117 changes: 48 additions & 69 deletions .github/ci-coverage-allowlist.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,25 @@ description: >-
by a job nor listed here, so every entry below is a decision on the record.

test_paths:
- reason: >-
The caching suite in tests/local_testing, which runs nowhere. Every job that globs that
directory either deselects it (local_testing_part1 and part2 carry `-k "... and not caching
and not cache"`) or keeps only another keyword (langfuse, router, assistants), and no job
names these files the way redis_caching_unit_tests names test_dual_cache.py. Measured
2026-08-20 by collecting the directory under each job's own selector: 118 tests across
these eight files are selected by none of them. Listed so the gap is a decision rather
than an accident, and so the --slices guard has a baseline to ratchet down from. Revisit
when tests/local_testing is ported off CircleCI, where the keyless part of this suite
belongs in a real job
paths:
- tests/local_testing/test_cache_preset_key.py
- tests/local_testing/test_caching.py
- tests/local_testing/test_caching_handler.py
- tests/local_testing/test_disk_cache_unit_tests.py
- tests/local_testing/test_gcs_cache_unit_tests.py
- tests/local_testing/test_prompt_caching.py
- tests/local_testing/test_responses_stream_cache_keys.py
- tests/local_testing/test_unit_test_caching.py
- reason: >-
The end-to-end suite runs against a deployed proxy from its own in-cluster rig rather than
from a pull request; it needs a live gateway and provider credentials no PR job holds
Expand All @@ -21,72 +40,24 @@ test_paths:
- tests/documentation_tests/test_requests_lib_usage.py
- tests/documentation_tests/test_standard_logging_payload.py
- reason: >-
Sibling files here are executed by name from the code-quality workflow; this one is referenced
by no job
Named like a test but shaped like a benchmark: it fetches live image URLs, times aiohttp
against httpx, prints the ratio, and asserts nothing, so pytest cannot collect it (its
functions take arguments, not fixtures) and running it beside its siblings in the
code-quality workflow would add a network dependency for a number nothing reads. Exempt
as a script rather than as an unresolved gap; revisit by deleting it once the aiohttp
choice it informed is settled
paths:
- tests/code_coverage_tests/test_aio_http_image_conversion.py
- reason: >-
A second mirror of the package tree living beside tests/test_litellm, which is the mirror the
repo convention names; only test_no_hardcoded_secrets.py is invoked, from the linting
workflow, and whether this directory should exist at all is unresolved
The last file of a second mirror that sat beside tests/test_litellm and ran nowhere. Its
other 33 files landed in the real mirror during August 2026, 30 as moves and 3 by merging
their bodies into the live file of the same name. This one cannot follow either route yet:
its live twin was rewritten from 1268 lines to 9434, and of the 19 tests here 5 have no
counterpart while 25 assertions fail against today's code, so what survives that rewrite
is a judgement about the endpoints, not a merge. Revisit by deciding which of the five
behaviours still hold
paths:
- tests/litellm/a2a_protocol/providers/pydantic_ai_agents/test_pydantic_ai_agent_headers.py
- tests/litellm/a2a_protocol/providers/pydantic_ai_agents/test_pydantic_ai_agent_transformation.py
- tests/litellm/integrations/helicone/test_helicone_gemini.py
- tests/litellm/litellm_core_utils/test_json_schema_validation.py
- tests/litellm/llms/anthropic/test_anthropic_reasoning_effort.py
- tests/litellm/llms/anthropic/test_anthropic_schema_filter.py
- tests/litellm/llms/azure/test_azure_embedding.py
- tests/litellm/llms/bedrock/embed/test_embedding.py
- tests/litellm/llms/bedrock/test_nova_imported_models.py
- tests/litellm/llms/deepseek/chat/test_deepseek_chat_transformation.py
- tests/litellm/llms/gradient_ai/chat/test_gradient_ai_chat_transformation.py
- tests/litellm/llms/oci/chat/test_oci_chat_transformation.py
- tests/litellm/llms/openai_like/test_abliteration_provider.py
- tests/litellm/llms/openai_like/test_assemblyai_provider.py
- tests/litellm/llms/openai_like/test_empiriolabs_provider.py
- tests/litellm/llms/vertex_ai/agent_engine/test_transformation.py
- tests/litellm/llms/vertex_ai/gemini/test_transformation.py
- tests/litellm/llms/vertex_ai/text_to_speech/test_transformation.py
- tests/litellm/proxy/_experimental/mcp_server/test_discoverable_endpoints.py
- tests/litellm/proxy/agent_endpoints/test_agent_rbac.py
- tests/litellm/proxy/common_utils/test_rbac_utils.py
- tests/litellm/proxy/management_endpoints/test_common_utils.py
- tests/litellm/proxy/management_endpoints/test_cost_estimate_endpoint.py
- tests/litellm/proxy/test_claude_code_marketplace.py
- tests/litellm/proxy/test_init_litellm_callbacks.py
- tests/litellm/proxy/test_prisma_engine_watchdog.py
- tests/litellm/proxy/vector_store_endpoints/test_vector_store_rbac.py
- tests/litellm/test_bedrock_extended_beta_models.py
- tests/litellm/test_bedrock_nemotron_super.py
- tests/litellm/test_proxy_auth.py
- tests/litellm/test_router_retry_backoff_headers.py
- tests/litellm/test_sambanova_model_metadata.py
- tests/litellm/test_stream_chunk_builder_images.py
- reason: >-
Legacy proxy suite superseded by the proxy shards; no job invokes it and whether it still
describes supported behaviour is unresolved
paths:
- tests/old_proxy_tests/tests/test_anthropic_context_caching.py
- tests/old_proxy_tests/tests/test_anthropic_sdk.py
- tests/old_proxy_tests/tests/test_async.py
- tests/old_proxy_tests/tests/test_gemini_context_caching.py
- tests/old_proxy_tests/tests/test_langchain_embedding.py
- tests/old_proxy_tests/tests/test_langchain_request.py
- tests/old_proxy_tests/tests/test_llamaindex.py
- tests/old_proxy_tests/tests/test_mistral_sdk.py
- tests/old_proxy_tests/tests/test_openai_embedding.py
- tests/old_proxy_tests/tests/test_openai_exception_request.py
- tests/old_proxy_tests/tests/test_openai_request.py
- tests/old_proxy_tests/tests/test_openai_request_with_traceparent.py
- tests/old_proxy_tests/tests/test_openai_simple_embedding.py
- tests/old_proxy_tests/tests/test_openai_tts_request.py
- tests/old_proxy_tests/tests/test_pass_through_langfuse.py
- tests/old_proxy_tests/tests/test_q.py
- tests/old_proxy_tests/tests/test_simple_traceparent_openai.py
- tests/old_proxy_tests/tests/test_vertex_sdk_forward_headers.py
- tests/old_proxy_tests/tests/test_vtx_embedding.py
- tests/old_proxy_tests/tests/test_vtx_sdk_embedding.py
- reason: >-
No job invokes this suite and its files mix pure transformation tests with ones driving live
vendor vector stores, so assigning them needs a per-file decision
Expand Down Expand Up @@ -116,6 +87,14 @@ test_paths:
- tests/load_tests/test_otel_load_test.py
- tests/load_tests/test_vertex_embeddings_load_test.py
- tests/load_tests/test_vertex_load_tests.py
- reason: >-
A local-only agent rig: test_a2a_completion_bridge.py needs a LangGraph server on
localhost:2024 and test_a2a.py drives a live A2A endpoint, so neither can run in a
pull request job. Until 2026-08-20 the CircleCI agent job hid them behind a grep -v
that this census could not see; the glob now excludes them structurally and this entry
is the decision on the record. Revisit when the A2A bridge gets a recorded-wire fixture
paths:
- tests/agent_tests/local_only_agent_tests
- reason: >-
Third-party integration tests that skip themselves without OCI configuration or sandbox
credentials, neither of which a pull request job holds
Expand All @@ -124,14 +103,14 @@ test_paths:
- tests/integration/test_oci_integration.py
- tests/integration/test_oci_proxy_integration.py
- reason: >-
Two prompt-factory tests sitting at the top level of tests/ instead of under the
tests/test_litellm mirror the shards enumerate; they need moving rather than a shard entry
paths:
- tests/litellm_core_utils/test_anthropic_dedup_factory.py
- tests/litellm_core_utils/test_bedrock_converse_dedup_factory.py
- reason: >-
A unit test for the proxy-extras package that no job invokes, while the package's other tests
live under tests/proxy_migration_tests
A unit test for the proxy-extras package that no job invokes, while the package's other
tests live under tests/proxy_migration_tests. Measured 2026-08-20: 24 of its 28 tests pass
and the 4 in TestMigrationSQLIdempotency fail, because 13 migrations from 2026-03 onward use
bare CREATE TABLE, ADD COLUMN, CREATE INDEX and ADD CONSTRAINT rather than the guarded forms
this file requires. It also matches those keywords inside SQL comments, so two further
migrations are reported that are in fact fine. Wiring it up means deciding what to do about
the 13 first, and they cannot simply be edited: Prisma checksums an applied migration, so a
changed one breaks migrate deploy for existing installs
paths:
- tests/litellm-proxy-extras/test_litellm_proxy_extras_utils.py

Expand Down
3 changes: 2 additions & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ After: the same request comes back with real token counts, so the dashboard show
**Please complete all items before asking a LiteLLM maintainer to review your PR**

- [ ] I have added meaningful tests
- [ ] My PR passes all CI/CD checks (e.g., lint, format, unit tests)
- [ ] The handful of test files covering my change pass locally, e.g. `uv run pytest tests/test_litellm/<your_test_file>.py -v`. Leave the suites (`make test-unit-*`, `make test-unit`) to CI: it finishes in ~15 minutes where a laptop takes an hour or more
- [ ] My PR passes all required CI/CD checks (e.g., lint, schema.d.ts sync check, etc.)
- [ ] My PR's scope is as isolated as possible; it only solves 1 specific problem
- [ ] I have received a Greptile **Confidence Score of at least 4/5** before requesting a maintainer review (Greptile reviews automatically once the PR is opened; only comment `@greptileai` to re-request a review after pushing changes)

Expand Down
Loading
Loading