Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2183 commits
Select commit Hold shift + click to select a range
f5ccc4e
feat(lint): exempt TypedDict-annotated dict literals from LIT002
mateo-berri Aug 14, 2026
316732b
fix(scripts): unwrap PEP 604 unions in LIT002 TypedDict detection
mateo-berri Aug 14, 2026
59eeae3
fix(mcp): expose client HTTP headers to logging callbacks and hooks (…
devin-ai-integration[bot] Aug 14, 2026
a36ba05
test(proxy): stop monkeypatch.undo re-planting fixture-mocked prisma_…
mateo-berri Aug 14, 2026
0a25756
fix(ptu): stop per-token billing on a PTU-configured deployment (#36829)
yucheng-berri Aug 14, 2026
1918469
fix(batches): mark terminal batch with no output file as processed in…
devin-ai-integration[bot] Jul 31, 2026
784259b
Merge pull request #36769 from BerriAI/litellm_nvidia_riva_ui_provider
mateo-berri Aug 14, 2026
3c57e9f
Merge pull request #36864 from BerriAI/litellm_make_check_run_summary
mateo-berri Aug 14, 2026
7a519e2
fix(proxy): track spend for OpenAI passthrough /v1/embeddings (#36660)
lostmartian Aug 14, 2026
c278455
test(proxy): stop monkeypatch.undo re-planting fixture-mocked prisma_…
mateo-berri Aug 14, 2026
3120f26
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 14, 2026
eacea13
fix(batches): persist real terminal status when billing expired batches
mateo-berri Aug 14, 2026
6704a10
fix(access groups): sync assigned_team_ids from the team write paths …
yassin-berriai Aug 14, 2026
9a9e7a5
fix(spend): give a batch's cost row a primary key of its own
marty-sullivan Aug 13, 2026
363e3f3
test(spend): annotate the batch cost row constants as Final
marty-sullivan Aug 14, 2026
c99a1ab
fix(bedrock): resolve the managed-batch output bucket on the model-ro…
marty-sullivan Aug 12, 2026
460f0d2
test(files): capture routed retrieval calls immutably
marty-sullivan Aug 12, 2026
60fe4e4
fix(bedrock): resolve the managed-batch output bucket on the inline a…
marty-sullivan Aug 14, 2026
d7afc17
refactor(batches): share the trusted-credentials helper across both c…
marty-sullivan Aug 14, 2026
5649098
fix(batches): account a managed batch's cost exactly once
marty-sullivan Aug 13, 2026
ec52858
fix(batches): only hand accounting to the poller once it can mark bat…
marty-sullivan Aug 14, 2026
c9e9c27
fix(batches): decide batch cost ownership once per retrieve
marty-sullivan Aug 14, 2026
a0c27b3
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Aug 14, 2026
26c5ec3
ci: drop the CircleCI ui_build and ui_unit_tests jobs (#36893)
yuneng-berri Aug 14, 2026
423b791
fix(langfuse): source the emitted metadata blob from StandardLoggingP…
yucheng-berri Aug 14, 2026
0cb48cf
refactor(ui): migrate Navbar off antd to shadcn
yuneng-berri Aug 14, 2026
03d2b16
refactor(ui): migrate log details drawer off antd to shadcn
yuneng-berri Aug 14, 2026
81c27fc
fix: report real token usage on guardrail-blocked /v1/responses replies
guptaishaan Aug 14, 2026
9b8f9c6
refactor(ui): migrate AI Hub off antd and tremor to shadcn
yuneng-berri Aug 14, 2026
0749231
fix(ui): announce the account popover as a dialog, not a menu
yuneng-berri Aug 14, 2026
c344b9a
fix(ui): give the request details drawer an accessible name
yuneng-berri Aug 14, 2026
a98f238
refactor(ui): migrate shared common_components off antd and tremor
yuneng-berri Aug 14, 2026
fbc56c3
test(ui): assert the publish button is disabled while submitting
yuneng-berri Aug 14, 2026
617ad81
refactor(ui): migrate key info and permissions views off antd and tremor
yuneng-berri Aug 14, 2026
3465ba4
refactor(ui): migrate router settings and shared badges off antd and …
yuneng-berri Aug 14, 2026
3a537cc
refactor(ui): move the model hub and model select onto shadcn primitives
yuneng-berri Aug 14, 2026
26e0552
refactor(ui): give MemberTable its own extra-column type
yuneng-berri Aug 14, 2026
afff1b0
refactor(ui): move the shared dropdowns and selectors onto shadcn pri…
yuneng-berri Aug 14, 2026
b066ed3
fix(model_prices): correct Gemini 2.5 shutdown dates and DeepSeek V4 …
devin-ai-integration[bot] Aug 14, 2026
0ee47a0
test(ui): cover appending a second model in ModelSelect
yuneng-berri Aug 14, 2026
d7ec4d9
test(ui): spread the real lucide-react module in the KeyInfoView mock
yuneng-berri Aug 14, 2026
362875a
fix(ui): hold the delete dialog open mid-deletion and keep unmatched …
yuneng-berri Aug 14, 2026
15a331f
refactor(ui): move the root-level dashboard components onto shadcn pr…
yuneng-berri Aug 14, 2026
4544f7d
revert(ui): keep the onboarding link modal on antd
yuneng-berri Aug 14, 2026
ce66cbc
fix(databricks): surface prompt-cache token counts in streaming usage
pokepoke81 Aug 14, 2026
3170fff
refactor(ui): move the settings page and bulk user invite onto shadcn…
yuneng-berri Aug 14, 2026
732e23a
Remove comment about prompt-cache usage in test
pokepoke81 Aug 14, 2026
035f8d5
refactor(ui): move the cost tracking components onto shadcn primitives
yuneng-berri Aug 14, 2026
5374e0b
Merge pull request #36902 from BerriAI/litellm_shadcn_navbar_0814
yuneng-berri Aug 14, 2026
5ab91b3
Merge pull request #36904 from BerriAI/litellm_shadcn_viewlogs_0814
yuneng-berri Aug 14, 2026
de57ebb
Merge pull request #36908 from BerriAI/litellm_shadcn_aihub_0814
yuneng-berri Aug 14, 2026
cb33d20
Merge pull request #36924 from BerriAI/litellm_shadcn_dropdowns_0814
yuneng-berri Aug 14, 2026
8c16817
Merge pull request #36927 from BerriAI/litellm_shadcn_rootcomponents_…
yuneng-berri Aug 14, 2026
48a3423
Merge pull request #36936 from BerriAI/litellm_shadcn_rootbig_0814
yuneng-berri Aug 14, 2026
b77923f
Merge pull request #36955 from BerriAI/litellm_shadcn_next_0814
yuneng-berri Aug 14, 2026
7e375ed
chore: retrigger e2e gate
yuneng-berri Aug 14, 2026
da339a7
Merge branch 'litellm_internal_staging' into litellm_shadcn_common_0814
yuneng-berri Aug 14, 2026
e897e2b
Merge branch 'litellm_internal_staging' into litellm_shadcn_permissio…
yuneng-berri Aug 14, 2026
30c1b97
Merge branch 'litellm_internal_staging' into litellm_shadcn_settings_…
yuneng-berri Aug 14, 2026
693683c
Merge branch 'litellm_internal_staging' into litellm_shadcn_modelhub_…
yuneng-berri Aug 14, 2026
609ecf0
Merge pull request #36866 from BerriAI/litellm_/remove-test-migrate-g…
yuneng-berri Aug 14, 2026
10df18b
Merge pull request #36910 from BerriAI/litellm_shadcn_common_0814
yuneng-berri Aug 14, 2026
3d35cff
Merge pull request #36913 from BerriAI/litellm_shadcn_permissions_0814
yuneng-berri Aug 14, 2026
e1f3d6e
feat(proxy): serve Anthropic-native /v1/models for Claude Code gatewa…
Ar-maan05 Aug 14, 2026
5156bf0
Merge pull request #36915 from BerriAI/litellm_shadcn_settings_0814
yuneng-berri Aug 14, 2026
c9917cb
Merge pull request #36918 from BerriAI/litellm_shadcn_modelhub_0814
yuneng-berri Aug 14, 2026
4974290
fix(ui): keep the cost tracking removal confirmation open until it se…
yuneng-berri Aug 14, 2026
62b072d
Merge branch 'litellm_internal_staging' into litellm_cost_tracking_re…
yuneng-berri Aug 14, 2026
7da8a3b
test(ui): build the deferred removal with Promise.withResolvers
yuneng-berri Aug 14, 2026
fe61fa1
refactor(ui): declare DateRangePickerValue locally instead of importi…
yuneng-berri Aug 14, 2026
caf305f
refactor(ui): move MCP permission panels onto shadcn primitives
yuneng-berri Aug 14, 2026
1241bd5
feat(proxy): add per-component response cost headers
erensh27 Aug 14, 2026
aa09398
refactor(ui): migrate ten small dashboard files off antd and tremor
yuneng-berri Aug 14, 2026
387ad0b
Merge pull request #36960 from BerriAI/litellm_cost_tracking_removal_…
yuneng-berri Aug 14, 2026
2bc9bb4
Merge pull request #36962 from BerriAI/litellm_shadcn_daterange_type_…
yuneng-berri Aug 14, 2026
538f5b3
refactor(ui): drop explanatory comments from the migration tests
yuneng-berri Aug 14, 2026
c51c5f1
refactor(ui): drop narration comments from the MCP permission panels
yuneng-berri Aug 14, 2026
e1ef777
fix(main): an explicit provider outranks a known OpenAI model name (#…
FahimaGold Aug 14, 2026
b9d2fd0
fix(exception_mapping): bare 429 in an error body no longer outranks …
FahimaGold Aug 14, 2026
e659147
Merge pull request #36964 from BerriAI/litellm_/cranky-jepsen-f831e1
yuneng-berri Aug 14, 2026
f03df1b
Merge pull request #36966 from BerriAI/litellm_shadcn_smallfiles_0814
yuneng-berri Aug 14, 2026
3838969
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
shivamrawat1 Aug 14, 2026
ae2a5e1
fix(ui): distinguish hosted and local vLLM in the provider dropdown
mateo-berri Aug 14, 2026
aaa6194
chore: merge litellm_internal_staging into litellm_lit_4868_cache_wri…
mateo-berri Aug 14, 2026
0a81e1b
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 14, 2026
d330b64
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 14, 2026
08966c8
test(vector_stores): drop redundant route-map comment
mateo-berri Aug 14, 2026
865ed96
fix(proxy): force prisma recreate on postgres cached-plan error (#36428)
devin-ai-integration[bot] Aug 14, 2026
29fe342
fix(transcription): stop a zero output rate from zeroing transcriptio…
hMED22 Aug 14, 2026
5212e8c
refactor(caching): accept read-only sequences for redis rpush pipelin…
shivamrawat1 Aug 14, 2026
9592a54
Revert "fix(auth): stop the team fallback from widening model access …
yuneng-berri Aug 14, 2026
2fc39cd
fix(langfuse): gate update_trace_keys behind an operator setting (#36…
yucheng-berri Aug 14, 2026
652f4cb
Merge pull request #36982 from BerriAI/litellm_/revert-36837-ui-regre…
yuneng-berri Aug 14, 2026
3b2ed3c
fix(fireworks_ai): let extra_body thinking/reasoning_effort take prec…
mateo-berri Aug 14, 2026
3783bbf
fix(ui): show zeroed auto-router usage stats when a window has no ses…
tin-berri Aug 14, 2026
40d999b
fix(mcp): keep admin-entered oauth endpoints in management reads (#36…
devin-ai-integration[bot] Aug 14, 2026
870a8cf
Merge pull request #36974 from BerriAI/litellm_vllm_dropdown_labels
mateo-berri Aug 14, 2026
61334ec
fix(ui): match the MCP servers count badge to its sibling permission …
yuneng-berri Aug 14, 2026
f9f016d
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Aug 14, 2026
94e9431
refactor(ui): drop the explanatory comment from the badge variant test
yuneng-berri Aug 14, 2026
0ab23f5
fix(anthropic): bill undetailed iteration cache writes at the 5m rate
mateo-berri Aug 14, 2026
e94a97f
fix(cost_calculator): mirror the anthropic geo uplift in the token-ty…
mateo-berri Aug 14, 2026
9027ab9
Merge remote-tracking branch 'origin/litellm_internal_staging' into f…
mateo-berri Aug 14, 2026
2959465
fix(openai,azure): return a length-truncated 200 when the output budg…
yassin-berriai Aug 14, 2026
eb4b847
fix(proxy): always emit the Anthropic /v1/models token limits, null w…
yassin-berriai Aug 14, 2026
f970449
feat(helm): add startupProbe and hpa.behavior to the componentized ch…
Louis-Vauterin Aug 14, 2026
b14c4a8
fix(vector_stores): classify write endpoints before reads on substrin…
mateo-berri Aug 14, 2026
48de810
fix(router): stop get_router_model_info from wiping cached pricing
devin-ai-integration[bot] Aug 14, 2026
80c37bf
fix(bedrock): resolve aliases in batch file records
daleselaji-dev Aug 15, 2026
9a1e63c
fix(caching): tolerate SSE chunk splits in anthropic stream cache writer
mateo-berri Aug 15, 2026
9079e4c
fix(proxy): return cost breakdown header values as a named tuple
mateo-berri Aug 15, 2026
e4f2ea1
fix(responses_api): map bridged chat usage on guardrail-blocked replies
mateo-berri Aug 15, 2026
d4d6bc2
fix(proxy): serve aggregate MCP endpoint on bare /mcp instead of 307-…
tin-berri Aug 15, 2026
2f6f5c4
fix(cost): reach tiered pricing for models without top-level per-toke…
mateo-berri Aug 15, 2026
4193445
Merge remote-tracking branch 'origin/litellm_internal_staging' into d…
mateo-berri Aug 15, 2026
0e0c3ce
Merge remote-tracking branch 'origin/litellm_internal_staging' into d…
mateo-berri Aug 15, 2026
2d3c3e3
feat(shadow_eval): add reverse-direction shadow eval jobs (#36865)
tin-berri Aug 15, 2026
b3729c5
fix(fireworks_ai): move top-level thinking into extra_body on the tex…
mateo-berri Aug 15, 2026
e06e2e6
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 15, 2026
4110812
Merge pull request #33881 from BerriAI/litellm_fix_redis_spend_buffer…
shivamrawat1 Aug 15, 2026
f99d0a4
feat(search): add Nimble as a search provider (#36347)
ilchemla Aug 15, 2026
e8c1fe8
fix(bedrock): fall back to the batch deployment model for unmapped re…
mateo-berri Aug 15, 2026
f2a10f6
merge: litellm_internal_staging into litellm_vertex_batch_embeddings_…
mateo-berri Aug 15, 2026
ff547be
fix(cost-tracking): count dict-shaped web_search_call output items
mateo-berri Aug 15, 2026
f9f5c03
fix(mcp): drop caller host and configured upstream headers from logge…
yucheng-berri Aug 15, 2026
c9685b2
fix(router): honor tiered_pricing set in a deployment's litellm_params
mateo-berri Aug 15, 2026
eafddaa
feat(scripts): queue heavy gates behind a machine-wide slot lock
mateo-berri Aug 15, 2026
d74cb6d
Merge pull request #36798 from BerriAI/litellm_azure_ai_docs_index_wr…
mateo-berri Aug 15, 2026
7562445
test(proxy): assert production nesting semantics for component cost h…
mateo-berri Aug 15, 2026
b9d70b5
Merge pull request #34860 from BerriAI/litellm_lit_4868_cache_write_s…
mateo-berri Aug 15, 2026
a503866
Merge pull request #34850 from BerriAI/litellm_lit_4866_anthropic_geo…
mateo-berri Aug 15, 2026
688575e
fix(cost): bill reasoning tokens at the selected tier's reasoning rate
mateo-berri Aug 15, 2026
0f2566e
Merge pull request #36984 from BerriAI/litellm_/key-info-badge-stylin…
yuneng-berri Aug 15, 2026
0d0c712
fix(vertex_ai): fail an embeddings batch entry whose fan-out came bac…
milan-berri Aug 15, 2026
87765fc
fix(router): merge model_info without new mutable constructions
devin-ai-integration[bot] Aug 15, 2026
7e53940
fix(cost-tracking): price web search on dated search-preview map entries
mateo-berri Aug 15, 2026
05beb7a
fix(proxy): emit uncached input cost so component headers sum to the …
mateo-berri Aug 15, 2026
2de3195
refactor(ui): re-sync badge and skeleton onto the base-vega shadcn style
yuneng-berri Aug 15, 2026
0da672c
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Aug 15, 2026
dc92749
Merge pull request #35360 from BerriAI/devin_ai_fix_batch_cost_comple…
mateo-berri Aug 15, 2026
118523e
Merge pull request #34581 from BerriAI/litellm_anthropic_messages_res…
mateo-berri Aug 15, 2026
de77711
test(vertex_ai): cover duplicated fan-out rows in embeddings batch re…
mateo-berri Aug 15, 2026
b1696b3
test(ui): assert cache and retry tags by text instead of class name
yuneng-berri Aug 15, 2026
5219658
fix(ui): stop the models tab strip from scrolling vertically
yuneng-berri Aug 15, 2026
2c6409c
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 15, 2026
691c7fd
fix(anthropic_messages): make tool_result images visible to OpenAI-co…
hMED22 Aug 15, 2026
40a4184
Merge pull request #35969 from milesadkins/fireworks_nim_vllm_compat
mateo-berri Aug 15, 2026
a0e5c7e
fix(ui): anchor chips-combobox popups to the field instead of the inn…
yuneng-berri Aug 15, 2026
654fab2
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Aug 15, 2026
6e38e94
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Aug 15, 2026
c7084c0
test(ui): assert which element the chips-combobox popup anchors to
yuneng-berri Aug 15, 2026
0176e4b
refactor(cost): make the shared token-details parsers public
mateo-berri Aug 15, 2026
5970754
fix(ptu): clear a PTU deployment's tiered_pricing instead of zeroing it
mateo-berri Aug 15, 2026
491e2ff
Merge pull request #36993 from BerriAI/litellm_/scrollable-tabs-layou…
yuneng-berri Aug 15, 2026
9079844
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 15, 2026
a4aab2e
Merge pull request #36995 from BerriAI/litellm_/playground-config-sel…
yuneng-berri Aug 15, 2026
3f64cbe
fix(ptu): empty a PTU deployment's tiered_pricing instead of dropping it
mateo-berri Aug 15, 2026
cba2bea
Merge pull request #36965 from erensh27/feat/per-component-cost-headers
mateo-berri Aug 15, 2026
70d51a1
Merge pull request #35286 from BerriAI/devin_ai_lit_5013_web_search_cost
mateo-berri Aug 15, 2026
1a183ef
Merge pull request #36159 from daleselaji-dev/codex/bedrock-alias-36156
mateo-berri Aug 15, 2026
c3e38a0
fix(cost): fall back to the model output rate when a tier omits one
mateo-berri Aug 15, 2026
6c2dcb8
Merge pull request #36907 from guptaishaan/fix/issue-36880-8933
mateo-berri Aug 15, 2026
34918d3
fix(cost): inherit the backend output rate when a deployment's tiers …
mateo-berri Aug 15, 2026
e46f2ca
fix(dashscope): honor the model reasoning rate when a tier omits outp…
mateo-berri Aug 15, 2026
6e7984e
fix(proxy): requeue spend logs when the DB write fails with a transpo…
devin-ai-integration[bot] Aug 15, 2026
18752c8
fix(cost): honor explicit zero tier rates and skip synthesized backen…
mateo-berri Aug 15, 2026
17f5c90
fix(make): acquire the gate slot before lint setup deps
mateo-berri Aug 15, 2026
1abde19
docs(claude): require ReadOnly on every TypedDict field (LIT012)
mateo-berri Aug 15, 2026
89f233a
Merge pull request #36720 from BerriAI/litellm_tiered_pricing_cache_c…
mateo-berri Aug 15, 2026
d70cc14
Merge pull request #35092 from BerriAI/litellm_vertex_batch_embedding…
mateo-berri Aug 15, 2026
de25e19
fix(ui): de-duplicate the reset budget option and polish shadcn surfaces
yuneng-berri Aug 15, 2026
926e4eb
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Aug 15, 2026
3798df3
chore: make it more concise
mateo-berri Aug 15, 2026
7a5b98e
Merge pull request #37005 from BerriAI/litellm_claudemd_lit012
mateo-berri Aug 15, 2026
16e6aa2
fix(model_prices): correct deprecation dates flagged in review
mateo-berri Aug 15, 2026
30b1459
fix(model_prices): revert unverified Gemini deprecation dates
devin-ai-integration[bot] Aug 15, 2026
32917b0
fix(model_prices): drop xai/grok-4.6-latest, xAI does not serve that …
mateo-berri Aug 15, 2026
aacab94
fix(ui): rename models table Status column to Source
ryan-crabbe-berri Aug 15, 2026
1b2f05d
feat(ui): link user detail team names to team pages
ryan-crabbe-berri Aug 15, 2026
8c99107
refactor(ui): migrate access group create modal to RHF + zod + shadcn
ryan-crabbe-berri Aug 15, 2026
759cb4f
Merge pull request #37033 from BerriAI/litellm_access_group_create_rhf
yuneng-berri Aug 15, 2026
0974174
test(ui): follow the models table Status to Source column rename
yuneng-berri Aug 15, 2026
d4a52f9
Merge pull request #36991 from BerriAI/litellm_/blocked-badge-styling…
yuneng-berri Aug 15, 2026
f1acd6d
Merge pull request #37022 from BerriAI/litellm_user_teams_walkable
yuneng-berri Aug 15, 2026
87abb87
Merge pull request #36925 from BerriAI/litellm_model_registry_lifecyc…
mateo-berri Aug 15, 2026
487da4d
Merge pull request #37021 from BerriAI/litellm_models_source_column
yuneng-berri Aug 15, 2026
f07eafb
bump: litellm-enterprise 0.1.55 -> 0.1.56, litellm-proxy-extras 0.4.8…
yuneng-berri Aug 15, 2026
3840970
Merge pull request #37045 from BerriAI/litellm_bump_0815
yuneng-berri Aug 15, 2026
5a50fe0
feat(proxy): gate the Global Control Plane worker registry on an ente…
yassin-berriai Aug 15, 2026
b84dd69
fix(bedrock): stop leaking managed-batch litellm_params to the provider
marty-sullivan Aug 12, 2026
0c5c9c7
fix(bedrock): carry s3_output_bucket_name and bedrock_tags through cr…
marty-sullivan Aug 12, 2026
2e33eab
chore(ui): regenerate dashboard api types for the new bedrock batch p…
marty-sullivan Aug 14, 2026
1f0d9c8
style(batches): apply ruff format to batch cost ownership helper
mateo-berri Aug 15, 2026
2a75381
style(batches): sort the common_utils import block
mateo-berri Aug 15, 2026
e46ff74
fix(types): make bedrock_batch_litellm_params a tuple to satisfy the …
mateo-berri Aug 15, 2026
abd4813
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 15, 2026
fb3459d
Merge pull request #36788 from BerriAI/litellm_model_map_deprecation_…
mateo-berri Aug 15, 2026
fe9451c
fix(panw_prisma_airs): surface scan_id on allowed requests (#37037)
devin-ai-integration[bot] Aug 15, 2026
0059b49
fix(model_map): flag native structured outputs on Anthropic-direct cl…
anmolg1997 Aug 15, 2026
7d62e3b
Merge pull request #36985 from BerriAI/devin_ai_fix_36980_model_info_…
mateo-berri Aug 15, 2026
592564d
fix(redis): unwrap decorated __init__s when deriving the from_url kwa…
anmolg1997 Aug 15, 2026
33e9f54
fix(proxy): reserve the larger declared output budget for TPM limits …
yassin-berriai Aug 15, 2026
5871ba2
Merge pull request #36943 from weigandconstruction/fix_databricks_str…
mateo-berri Aug 15, 2026
71d951b
chore(types): drop redundant comments around the bedrock batch params
mateo-berri Aug 15, 2026
3ac2fbe
Merge pull request #36876 from cu-aaii/litellm_fix_batch_spend_log_co…
mateo-berri Aug 15, 2026
1524880
fix(batches): sign the retrieve-path output read with the deployment'…
mateo-berri Aug 15, 2026
f930980
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 15, 2026
f338cfb
feat: shadow eval samples /v1/messages and /v1/responses traffic (#36…
tin-berri Aug 15, 2026
8732155
fix(ptu): stop a PTU deployment billing for grounded search (#37043)
yucheng-berri Aug 15, 2026
a10669b
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 15, 2026
abddd64
Merge pull request #34257 from heathriel/litellm_fireworks_router_slu…
mateo-berri Aug 15, 2026
4e1d504
fix(batches): persist the creating key and tags on managed batches cr…
mateo-berri Aug 15, 2026
d9e377f
fix(batches): confirm poller batch_processed support at startup so no…
mateo-berri Aug 15, 2026
2962f12
Merge pull request #37048 from BerriAI/litellm_internal_copy_36633
mateo-berri Aug 15, 2026
5e9adb9
Merge pull request #37047 from BerriAI/litellm_bedrock_batch_output_b…
mateo-berri Aug 15, 2026
8035fb3
Merge pull request #36988 from BerriAI/litellm_make_check_slot_lock
mateo-berri Aug 15, 2026
2e996a1
docs(claude): tell agents to let heavy gates queue for machine-wide s…
mateo-berri Aug 15, 2026
8e588ce
docs(claude): correct which gate entrypoints are slot-aware
mateo-berri Aug 15, 2026
c9697cb
refactor(make): stop queueing bootstrap for a machine-wide gate slot
mateo-berri Aug 15, 2026
4eadf92
feat(mcp): scope gateway session bearers to the RFC 8707 resource (#3…
tin-berri Aug 15, 2026
d0be6ee
fix(passthrough): stop forwarding client Accept-Encoding upstream
mateo-berri Aug 15, 2026
540caa6
feat(ui): direction picker and reverse-mode display for shadow evals …
tin-berri Aug 15, 2026
d7d10be
fix(guardrails): return the full PANW AIRS scan response on blocked r…
devin-ai-integration[bot] Aug 15, 2026
90493a2
fix(passthrough): protect accept-encoding from x-pass- forwarding
mateo-berri Aug 15, 2026
edc1d65
test(e2e/ui): address the migrated dashboard controls by role, not an…
yuneng-berri Aug 15, 2026
6de68f1
test: refresh three suites that drifted from the code they cover
yuneng-berri Aug 15, 2026
9a96b93
Merge pull request #37058 from BerriAI/litellm_passthrough_accept_enc…
mateo-berri Aug 15, 2026
45ea07c
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Aug 15, 2026
bb1c336
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 15, 2026
bf93483
test(e2e): assert provider error shape instead of pinned prose
yuneng-berri Aug 15, 2026
481ab07
test(e2e): skip the bedrock web search cell the stack cannot provision
yuneng-berri Aug 15, 2026
a41c45a
Merge pull request #37050 from BerriAI/litellm_batch_cost_accounted_once
mateo-berri Aug 15, 2026
74a1bed
fix(panw_prisma_airs): scan tool call args as plain text, not a tool_…
devin-ai-integration[bot] Aug 15, 2026
13d94ec
Merge pull request #36869 from BerriAI/litellm_lit002_typeddict_dict_…
mateo-berri Aug 15, 2026
83335c2
docs(github): proof-of-fix template shows only the latest run as Befo…
mateo-berri Aug 15, 2026
082469f
chore: make it more concise
mateo-berri Aug 15, 2026
db5c846
chore: add more clarity
mateo-berri Aug 15, 2026
7b60504
docs(github): numbered steps are required under every proof case
mateo-berri Aug 15, 2026
26113da
Merge pull request #37057 from BerriAI/litellm_claude_md_gate_slot_locks
mateo-berri Aug 15, 2026
4df93c7
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Aug 15, 2026
1968562
Merge pull request #37059 from BerriAI/litellm_/circleci-pipeline-tri…
yuneng-berri Aug 16, 2026
dddee7d
Merge pull request #37063 from BerriAI/litellm_pr_template_proof_format
mateo-berri Aug 16, 2026
91aee78
Merge pull request #37065 from BerriAI/litellm_/nice-wilson-9fbed6
yuneng-berri Aug 16, 2026
992a812
Merge pull request #37010 from BerriAI/litellm_shadcn_next_0814
yuneng-berri Aug 16, 2026
b3077c9
chore: update Next.js build artifacts (2026-08-16 00:22 UTC, node v24…
yuneng-berri Aug 16, 2026
ae8afec
Merge pull request #37066 from BerriAI/litellm_/release-ui-build-1e15d9
yuneng-berri Aug 16, 2026
de2b220
test(e2e/ui): assert the log drawer chevrons by their lucide classes
yuneng-berri Aug 16, 2026
973329e
Merge pull request #37069 from BerriAI/litellm_/frosty-goldwasser-93a2a1
yuneng-berri Aug 16, 2026
bc6e7df
Merge pull request #37042 from BerriAI/litellm_internal_staging
yuneng-berri Aug 16, 2026
7f644ab
Merge remote-tracking branch 'upstream/main' into litellm_hotfix_upst…
github-actions[bot] Aug 17, 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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
290 changes: 175 additions & 115 deletions .circleci/config.yml

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .circleci/scripts/classify_changes.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ has_backend=false
while IFS= read -r file || [ -n "$file" ]; do
[ -n "$file" ] || continue
case "$file" in
ui/*) has_client=true ;;
ui/* | tests/e2e/ui/*) has_client=true ;;
docs/* | *.md | *.mdx) : ;;
*) has_backend=true ;;
esac
Expand Down
46 changes: 0 additions & 46 deletions .flake8

This file was deleted.

21 changes: 21 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,24 @@

# style: unify ruff format width on 120 (#31518)
48b5a5a0cc5a694a11219416ee0b6eb6e620e74e

# refactor(imports): move collections.abc names out of typing (#35495)
397e8e4918777e4e60a7f5e88699e0a9a7dabb3d

# refactor(lint): apply every safe ruff autofix and zero 28 strict-rule budgets (#35495)
b604e2b20c6db2099085a2f0e59b7e99e87eed6f

# refactor(logging): drop redundant !s conversion flags from f-strings (#35546)
7b2d3440cba3160277470f7a0180098ae9b87864

# perf: build log messages lazily so filtered-out log records cost nothing (#35703)
c9887a1f94bc1e7e4bdfe64d640f0509a0bc19dd

# feat(lint): enforce Final on locals and freeze function parameters (#35807)
2708620d6a599cc73c1950a942d26ac26a7ed3d4

# chore(lint): remove litellm/types from the ruff lint exclusion (#35926)
4e32a8bf6a1e1af1e04b67c759841ccef44b2235

# chore(lint): strip inert type: ignore comments and zero LIT009/LIT010/LIT011 headroom (#35928)
338e411103ad5d7003e97f34f04fa36bca542dbe
56 changes: 41 additions & 15 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,30 +23,56 @@ body:
label: What happened?
description: Also tell us, what did you expect to happen?
placeholder: Tell us what you see!
value: "A bug happened!"
validations:
required: true
- type: textarea
id: steps-to-reproduce
id: user-flow
attributes:
label: Steps to Reproduce
description: Please provide detailed steps to reproduce this bug(A curl/python code to reproduce the bug)
label: User Flow
description: |
Two ordered lists, "Before a (hypothetical) fix" and "After a (hypothetical) fix", walking the same end user through the same task, written strictly from that user's seat. Every rule below applies.

- Describe the real application and the routes its users actually hit, not a generic scenario
- Lead each list with one plain sentence saying where the flow fails (before) or would succeed (after), then number the steps
- Every step is something the user does or observes: the HTTP method and full URL they hit, what they sent, and what visibly came back (status code, error text, the shape of an ID). UI steps name the page URL and what is on screen
- No LiteLLM internals: never name functions, files, DB tables, config classes, hooks, callbacks, or code paths. "The upload hands back an ID that looks like OpenAI's own `file-abc123` instead of the scrambled one the gateway returned" is right, "no managed-file row was registered" is wrong
- Keep the two lists step-for-step identical until they diverge, so the broken step is obvious
- If the bug has a security or authorization consequence, end each list with what another user can do that they shouldn't be able to, and what they could no longer do after a fix
placeholder: |
1. config.yaml file/ .env file/ etc.
2. Run the following code...
3. Observe the error...
value: |
1.
2.
3.
Before a (hypothetical) fix: a developer whose app streams chat completions gets no token counts back, so their cost dashboard reads zero

1. They send POST https://litellm-domain/v1/chat/completions with "stream": true and no stream_options
2. The last SSE chunk arrives with "usage": null, so their app records 0 prompt and 0 completion tokens
3. They open https://litellm-domain/ui/?page=logs and see the request logged at $0 spend

After a (hypothetical) fix: the same request comes back with real token counts, so the dashboard shows real spend

1. The proxy admin sets always_include_stream_usage: true and restarts the proxy
2. The developer sends the same POST https://litellm-domain/v1/chat/completions with "stream": true and no stream_options
3. The last SSE chunk now carries a usage object with real prompt and completion token counts
4. https://litellm-domain/ui/?page=logs shows that request at non-zero spend
validations:
required: true
- type: textarea
id: logs
id: proof-of-bug
attributes:
label: Relevant log output
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
render: shell
label: Proof the bug occurs
description: |
The commands (e.g., curl) and their full output, screenshots, or a screen recording demonstrating that the bug happens. Every rule below applies.

- The proof must be completely e2e with no mocks, against a live proxy you ran yourself (e.g., `litellm --config config.yaml --detailed_debug` on localhost:4000), hitting real LLM provider APIs, costing real $ if needed, where the bug involves a provider call. `pytest` commands are not enough
- Show exactly what the end user sees or does, matching the User Flow above step for step
- Start with the config.yaml (or SDK setup) and any env vars the proxy ran with, then the exact version or commit hash the proof was captured at, so a maintainer can stand up the same proxy before running your commands. Keep the real values for env vars that aren't sensitive, they are often the reason the bug happens, and redact only the secrets: never paste a real API key, virtual key, database URL, or other credential, here or anywhere else in the issue
- If the bug applies to more than one of the LLM endpoints (/v1/responses, /v1/chat/completions, /v1/messages), include proof for every one of them, not just one
- For UI bugs: include screenshots and the page URLs you were on. Scrub keys and tokens out of screenshots too (for example, the virtual key is briefly shown in the panel right after you create a virtual key)
placeholder: |
Config / setup the proxy ran with:

Version or commit:

Commands and their full output:
validations:
required: true
- type: dropdown
id: component
attributes:
Expand Down
49 changes: 46 additions & 3 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,53 @@ body:
validations:
required: true
- type: textarea
id: motivation
id: user-flow
attributes:
label: Motivation, pitch
description: Please outline the motivation for the proposal. Is your feature request related to a specific problem? e.g., "I'm working on X and would like Y to be possible". If this is related to another GitHub issue, please link here too.
label: User Flow
description: |
Two ordered lists, "Before this feature (today)" and "After this feature (ideal user flow)", walking the same end user through the same task, written strictly from that user's seat. Every rule below applies.

- Describe the real application and the routes its users actually hit, not a generic scenario. Link any related GitHub issue or provider API docs
- Lead each list with one plain sentence saying where the flow dead-ends today and what it would let them do instead, then number the steps
- Every step is something the user does or observes: the HTTP method and full URL they hit, what they sent, and what visibly came back (status code, error text, the shape of an ID). UI steps name the page URL and what is on screen
- No LiteLLM internals: never name functions, files, DB tables, config classes, hooks, callbacks, or code paths. Ask for the behavior you need, not the implementation you imagine
- Keep the two lists step-for-step identical until they diverge, so the missing capability is obvious
- "Before this feature" is also where you show the workaround you're living with, which is what tells us how badly this is needed
placeholder: |
Before this feature (today): a developer batching nightly summaries has no way to mark those calls as low priority, so they compete with live traffic for the same rate limit

1. They send POST https://litellm-domain/v1/chat/completions for 500 documents in a loop
2. Around document 120 they start getting 429s naming the rpm limit, and their user-facing chat app starts getting them too
3. Their workaround is a hand-rolled sleep between calls, which stretches the batch to 3 hours and still collides at peak

After this feature (ideal user flow): the same batch runs as background work that yields to live traffic

1. The developer sends the same POST with "service_tier": "flex"
2. Batch calls queue behind interactive ones instead of 429ing, and the response comes back with the tier it was served at
3. The live chat app keeps returning 200s throughout the batch
4. https://litellm-domain/ui/?page=logs shows the batch requests tagged with that tier
validations:
required: true
- type: textarea
id: how-far-you-got
attributes:
label: How far you got
description: |
Run as many steps of the "After this feature (ideal user flow)" list as you can against a live proxy you ran yourself (e.g., `litellm --config config.yaml --detailed_debug` on localhost:4000), then paste the commands (e.g., curl) and their full output, ending at the step that dead-ends. Every rule below applies.

- Say plainly what stopped you there, in user terms: the option you passed came back ignored, the response 400'd naming an unsupported field, there is no button on the page for it. This is what proves the feature is genuinely missing rather than undocumented
- No mocks. Where the flow involves a provider call, hit the real provider API, even if it costs real $. `pytest` commands are not enough
- Include the config.yaml (or SDK setup) and env vars the proxy ran with, plus the version or commit you were on. Keep the real values for env vars that aren't sensitive, and redact only the secrets: never paste a real API key, virtual key, database URL, or other credential, here or anywhere else in the issue
- If the provider already supports this, link their API docs and paste a direct call to them succeeding, so we can see the shape LiteLLM should be sending
- For UI asks: include screenshots of the page you got stuck on and its URL. Scrub keys and tokens out of screenshots too (for example, the virtual key is briefly shown in the panel right after you create a virtual key)
placeholder: |
Config / setup the proxy ran with:

Version or commit:

Commands and their full output, up to the step that dead-ends:

What stopped me there:
validations:
required: true
- type: dropdown
Expand Down
40 changes: 40 additions & 0 deletions .github/actions/cache-prisma-binaries/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: "Cache Prisma binaries"
description: >-
Cache the Prisma CLI and engine binaries that `prisma generate` downloads, so
only the first job on a given prisma-client-py version pays for the download.

prisma-client-py shells out to `npm install prisma@<version>` whenever its
binary cache directory has no CLI entrypoint, which pulls ~85 MB of query and
schema engines over the network. That normally takes a few seconds, but it is
unbounded: one shard of a proxy-db run took 5m18s on that single step versus
3.8s on its eleven siblings, which pushed the job past its timeout and got a
fully passing test run cancelled.

Callers must not set PRISMA_BINARY_CACHE_DIR. The prisma-client-py default
(~/.cache/prisma-python/binaries/<prisma-version>/<engine-version>) is already
keyed by both versions, so a cache entry can never be served to a run that
expects different binaries.

runs:
using: composite
steps:
- name: Resolve prisma-client-py version
id: version
shell: bash
run: |
version="$(grep -A1 '^name = "prisma"$' uv.lock | sed -n 's/^version = "\(.*\)"$/\1/p' | head -1)"
if [ -z "${version}" ]; then
echo "could not resolve the prisma package version from uv.lock" >&2
exit 1
fi
echo "version=${version}" >> "$GITHUB_OUTPUT"

- name: Restore Prisma binaries
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
# ~/.cache/prisma-python holds the npm install tree prisma-client-py
# drives; ~/.cache/prisma is where @prisma/engines stages its downloads.
path: |
~/.cache/prisma-python
~/.cache/prisma
key: ${{ runner.os }}-prisma-binaries-${{ steps.version.outputs.version }}
Loading
Loading