Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
420 commits
Select commit Hold shift + click to select a range
efbdb69
fix(access groups): sync assigned_key_ids from the key write paths (#…
yassin-berriai Aug 14, 2026
ea4316b
fix(ui): resolve provider dropdown enum keys in getPlaceholder
mateo-berri Aug 14, 2026
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
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
  •  
  •  
  •  
84 changes: 0 additions & 84 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2744,84 +2744,6 @@ jobs:
file: ./coverage.xml
flags: circleci

ui_build:
docker:
- image: cimg/node:24.19@sha256:8966565f07189a67d64d6808a2b127f31dafae566508e3547f55640e1070bfad
auth:
username: ${DOCKERHUB_USERNAME}
password: ${DOCKERHUB_PASSWORD}
resource_class: medium+
working_directory: ~/project
steps:
- checkout
- skip_if_unrelated_changes:
category: client
- setup_google_dns
- restore_cache:
keys:
- ui-build-deps-v1-{{ checksum "ui/litellm-dashboard/package-lock.json" }}
- ui-build-deps-v1-
- restore_cache:
keys:
- ui-nextjs-cache-v1-{{ checksum "ui/litellm-dashboard/package-lock.json" }}
- ui-nextjs-cache-v1-
- run:
name: Install dependencies
command: |
cd ui/litellm-dashboard
npm ci
- save_cache:
key: ui-build-deps-v1-{{ checksum "ui/litellm-dashboard/package-lock.json" }}
paths:
- ui/litellm-dashboard/node_modules
- run:
name: Build UI
command: |
cd ui/litellm-dashboard
source ./build_ui.sh
- save_cache:
key: ui-nextjs-cache-v1-{{ checksum "ui/litellm-dashboard/package-lock.json" }}
paths:
- ui/litellm-dashboard/.next/cache
- persist_to_workspace:
root: .
paths:
- litellm/proxy/_experimental/out

ui_unit_tests:
docker:
- image: cimg/node:24.19@sha256:8966565f07189a67d64d6808a2b127f31dafae566508e3547f55640e1070bfad
auth:
username: ${DOCKERHUB_USERNAME}
password: ${DOCKERHUB_PASSWORD}
resource_class: xlarge
working_directory: ~/project
steps:
- checkout
- skip_if_unrelated_changes:
category: client
- setup_google_dns
- restore_cache:
keys:
- ui-unit-deps-v1-{{ checksum "ui/litellm-dashboard/package-lock.json" }}
- ui-unit-deps-v1-
- run:
name: Install dependencies
command: |
cd ui/litellm-dashboard
npm ci
- save_cache:
key: ui-unit-deps-v1-{{ checksum "ui/litellm-dashboard/package-lock.json" }}
paths:
- ui/litellm-dashboard/node_modules
- run:
name: Run UI unit tests (Vitest)
command: |
cd ui/litellm-dashboard

CI=true npm run test -- --run \
--pool forks --poolOptions.forks.maxForks=6

e2e_ui_testing:
docker:
- image: cimg/python:3.12-browsers@sha256:b432899af01c9a311bf74f4f22e9ada2e5306d4b1b4383f8d29e1228a5844ef2
Expand Down Expand Up @@ -3181,12 +3103,6 @@ workflows:
filters: *main_branches
- litellm_router_unit_testing:
filters: *main_branches
- ui_build:
filters: *main_branches
- ui_unit_tests:
requires:
- ui_build
filters: *main_branches
- auth_ui_unit_tests:
filters: *main_branches
- proxy_behavior_tests:
Expand Down
36 changes: 30 additions & 6 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,12 +64,36 @@ If you're seeing a delay in your PR being merged, ping the LiteLLM Team on [Slac
## Screenshots / Proof of Fix

<!-- Include screenshots, screen recordings, or command (e.g., curl) + output demonstrating that your changes work as expected
The proof must be completely e2e with no mocks, using, for example, actual LLM calls costing real $. `pytest` commands are not enough
For bug fixes: show reproduction before the fix and passing behavior after
Include the commit hash each proof was captured at, for both the before and the after runs
If the change applies to all three LLM endpoints (/v1/responses, /v1/chat/completions, /v1/messages), include proof for every single one of them, not just one
For new features: show the feature working end-to-end
For UI changes: include before/after screenshots -->
The proof must be completely e2e with no mocks, using actual LLM calls costing real $$$ if applicable. `pytest` commands are not enough
Show ONLY the latest run: capture Before at the merge base and After at the PR's current tip, and when new commits change behavior, replace this whole section with the fresh run instead of stacking it on top of older ones. The run must be up to date. As soon as a new commit is made and it makes this PR description's after sha stale (it's no longer tip of PR), you must re-run the QA
Structure the section exactly as below: Before and After one heading level below this section, each naming the commit hash it was captured at, one lower-level heading per case inside each, the same case names in the same order on both sides, and numbered steps (command, observed output) under every case, never loose prose; shared setup (config, payloads) goes above Before, and with a single case, drop the case headings and number the steps directly

### Before (<hash>)

#### <case 1>

1. ...
2. ...

#### <case 2>

1. ...

### After (<hash>)

#### <case 1>

1. ...
2. ...

#### <case 2>

1. ...

For bug fixes: Before shows the reproduction, After shows the same steps passing
For new features: Before shows the capability missing, After shows it working end-to-end
If the change applies to all three LLM endpoints (/v1/responses, /v1/chat/completions, /v1/messages), make each endpoint its own case, not just one
For UI changes: before/after screenshots under the same headings -->

## Type

Expand Down
106 changes: 0 additions & 106 deletions .github/workflows/test-unit-proxy-legacy.yml

This file was deleted.

5 changes: 4 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ When you fix violations gated by `ruff-strict-budget.json`, `type-discipline-bud

`make check` (f.k.a. `make pre-commit`, which still works identically as an alias) saves its complete output to a log file in .git (overwriting previous logs) and prints that path as its first and last output lines. To inspect a run, read or grep that log instead of re-running the multi-minute checks just to see a different slice

`make check`, `make lint`, `scripts/pre_commit_lint.sh`, and the standalone budget gates (`scripts/ruff_strict_gate.py`, `scripts/type_discipline_gate.py`, `scripts/type_check_gate.py`) each hold one of 2 machine-wide slots, so when other sessions or worktrees on the same box are already running heavy work, yours prints "all N machine-wide slots are busy; queueing" and then stays quiet until a slot frees. Give the command a long timeout and let it wait rather than killing it, retrying it, or assuming it hung. Don't change the # of machine-wide slots or make it unlimited by setting `LITELLM_GATE_SLOTS=0`

If you're trying to create a new function that relies on untyped stuff, instead of adding more Any's and pushing `reportAny` / `reportExplicitAny` closer to their basedpyright ceilings, just validate it in the caller with Pydantic (a model or `TypeAdapter` that returns the typed thing or raises will do) and then pass the now typed variable in

If you get an LIT001 or LIT002 fail, refactor the code to follow functional programming best practices rather than introducing mutable data structures. For example, build values in one shot with comprehensions or generators wrapped in `tuple()` / `MappingProxyType()` / `frozenset()` instead of seeding an empty `list`/`dict`/`set` and mutating it over time. Ideally, `# mutable-ok` is never used; reach for it only as a genuine last resort when an immutable rewrite is truly impossible, and always pair it with a real reason
Expand Down Expand Up @@ -83,7 +85,8 @@ Follow these coding conventions for new/updated code (a three-line fix in a lega
- Never-nester: early returns over deep nesting
- Don't throw; model failures as values (One function (e.g., raise_public) maps error union to existing public exception contracts via exhaustive match + assert_never)
- No mutation; don't reassign variables, global or local. Instead of mutable lists and dicts, prefer tuples, frozen dataclasses (with slots=True), `MappingProxyType`, etc.
- Annotate every variable with `: Final` (LIT010). Unpacking and walrus targets cannot carry the annotation, so they are implicitly final. Don't rebind them. Never rebind or mutate function parameters (LIT011); `self`/`cls` attribute stores are the exception. If rebinding or in-place mutation is truly unavoidable, suppress with `# rebind-ok: <reason>` explaining why
- Annotate every variable with `: Final` (LIT010). Unpacking and walrus targets cannot carry the annotation, so they are implicitly final. Don't rebind them. Never rebind or mutate function parameters (LIT011); `self`/`cls` attribute stores are the exception. If rebinding or in-place mutation is truly unavoidable, suppress with `# rebind-ok: <reason>`
- Qualify every TypedDict field with `ReadOnly[...]` (LIT012), which nests freely with `Required` / `NotRequired` / `Annotated` in any order. If making the key writable is truly unavoidable, suppress with `# writable-ok: <reason>`
- Use dependency injection
- Fully typed; no `Any` or coarse types like `dict[str, Any]` or just `dict`. Every function parameter must be strongly typed
- Use tagged unions + match
Expand Down
23 changes: 19 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
.PHONY: help test test-unit test-unit-llms test-unit-proxy-guardrails test-unit-proxy-core test-unit-proxy-misc \
test-unit-integrations test-unit-core-utils test-unit-other test-unit-root \
test-proxy-unit-a test-proxy-unit-b test-integration test-unit-helm \
info lint lint-dev lint-checks format \
info lint lint-inner lint-dev lint-checks format \
lint-basedpyright lint-e2e-basedpyright lint-basedpyright-budget-update lint-type-discipline lint-type-discipline-budget-update \
lint-ruff-budget lint-ruff-budget-update lint-budget-update lint-gate \
install-dev install-proxy-dev install-test-deps install-hooks \
install-helm-unittest check-circular-imports check-import-safety check pre-commit \
install-helm-unittest check-circular-imports check-import-safety check check-inner pre-commit \
lint-install lint-fetch-base bootstrap

# Default target
Expand Down Expand Up @@ -52,10 +52,17 @@ help:
@echo " make test-proxy-unit-b - Run proxy_unit_tests (p-z, ~28 files)"
@echo " make test-integration - Run integration tests"
@echo " make test-unit-helm - Run helm unit tests"
@echo ""
@echo "Heavy targets (check, lint) queue for LITELLM_GATE_SLOTS machine-wide"
@echo "slots (default 2; 0 disables) so parallel sessions don't thrash one machine."

UV := uv
UV_RUN := $(UV) run --no-sync

# Machine-wide slot queue for the heavy targets below; python3 + stdlib only, so
# it runs before any venv exists. See scripts/gate_slot_lock.py.
GATE_SLOT_LOCK := python3 scripts/gate_slot_lock.py

LINT_DEP_INSTALL ?= install-dev
LINT_E2E_DEP_INSTALL ?= lint-install
LINT_DEP_BASE ?= lint-fetch-base
Expand All @@ -73,6 +80,8 @@ info:
install-dev:
$(UV) sync --inexact --frozen

# Deliberately unqueued: provisioning is I/O bound, so it doesn't need one of the
# machine-wide slots the CPU-bound gates below share.
bootstrap:
$(UV) sync --inexact --frozen --extra proxy --group proxy-dev --group e2e-dev
$(UV_RUN) python scripts/prisma_generate_if_needed.py
Expand Down Expand Up @@ -229,7 +238,10 @@ check-import-safety: $(LINT_DEP_INSTALL)
# does (merge-base with origin/litellm_internal_staging). Setup (env sync, Prisma client,
# base fetch) runs once up front; the checks themselves are independent, so a sub-make
# fans them out with -j and the fast ones finish under basedpyright's shadow.
lint: lint-install lint-fetch-base
lint:
@$(GATE_SLOT_LOCK) $(MAKE) lint-inner

lint-inner: lint-install lint-fetch-base
$(MAKE) -j $(LINT_JOBS) $(LINT_OUTPUT_SYNC) LINT_DEP_INSTALL= LINT_E2E_DEP_INSTALL= LINT_DEP_BASE= lint-checks

lint-checks: lint-format-check-changed lint-ruff lint-gate lint-type-discipline lint-basedpyright lint-e2e-basedpyright check-circular-imports check-import-safety
Expand All @@ -244,7 +256,10 @@ lint-dev: lint-format-changed check-circular-imports check-import-safety
# test-linting.yml (Python), test-litellm-ui-build.yml's frontend-lint (dashboard), and
# check-ui-api-types.yml (API-type drift), skipping any whose files aren't in scope.
# Not auto-installed as a git hook so it never slows an unrelated human commit.
check: bootstrap
check:
@$(GATE_SLOT_LOCK) $(MAKE) check-inner

check-inner: bootstrap
./scripts/pre_commit_lint.sh

pre-commit:
Expand Down
2 changes: 2 additions & 0 deletions backend/routes/allowlist.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,11 +146,13 @@
"/docs/oauth2-redirect",
"/redoc",
"/fallback/login",
"/mcp", # bare spelling of the aggregate MCP endpoint; /mcp/ prefix covers the rest
}
)

BACKEND_MOUNT_PATHS: frozenset[str] = frozenset(
{
"/swagger", # API documentation static assets belong to the backend
"/mcp", # lazily-mounted MCP sub-app serves on the backend component
}
)
Loading
Loading