Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
360 commits
Select commit Hold shift + click to select a range
a72203e
fix(terraform): add soft_budget, tags, and soft_budget_alerting_email…
yuneng-berri Aug 24, 2026
5f56be3
fix(ui): theme the created-key box so it follows dark mode (#37985)
yuneng-berri Aug 24, 2026
6db5a5d
fix(ui): restore the public model name tooltip layout in the add mode…
yuneng-berri Aug 24, 2026
5b1c142
fix(ui): render team and org tpm/rpm limits of 0 as 0 instead of Unli…
yuneng-berri Aug 24, 2026
7113685
fix(ui): repoint the key detail URL to the rotated hash after regener…
yuneng-berri Aug 24, 2026
3fb1009
fix(ui): make playground chat bubbles theme-aware (#37978)
yuneng-berri Aug 24, 2026
4913b2a
Merge pull request #33514 from ozolam/litellm_fix_skills_marketplace_…
ryan-crabbe-berri Aug 24, 2026
20a82ca
fix: read a wrapped group before VALUES can end the search, and blank…
mateo-berri Aug 24, 2026
28b433a
Merge pull request #37966 from BerriAI/litellm_1787426863_strategy_ro…
mateo-berri Aug 24, 2026
3122600
Merge pull request #37975 from BerriAI/litellm_databricks_cache_token…
mateo-berri Aug 24, 2026
e0511e9
Merge branch 'litellm_internal_staging' into litellm_bedrock_converse…
mateo-berri Aug 24, 2026
91b2a9c
fix(proxy): keep video reference normalization within lint budgets
mateo-berri Aug 24, 2026
fe567bd
fix(a2a): speak the 0.3 dialect to servers with mis-cased protocol bi…
mateo-berri Aug 24, 2026
ddf4c8e
Merge pull request #37953 from BerriAI/litellm_fix_24985_thinking_rou…
mateo-berri Aug 24, 2026
b9e5eec
test(e2e): pin require_managed_files enforcement behind a marker-gate…
mateo-berri Aug 24, 2026
d0dd24e
fix(health): apply model_info.health_check_params to health check probes
mateo-berri Aug 24, 2026
3337a0a
fix: match OpenAI SDK wire format on image/video routes (#36493)
mateo-berri Aug 24, 2026
03a6769
feat(search): add Grounding with Bing Search (bing_grounding) as a se…
mateo-berri Aug 24, 2026
dd2e1cf
fix: read a single-quoted DO body for routine calls, not only dollar-…
mateo-berri Aug 24, 2026
fef5f41
fix(anthropic): keep legacy thinking budget_tokens on Claude 4.6 models
mateo-berri Aug 24, 2026
10b42a8
Merge pull request #37917 from BerriAI/litellm_a2a_protocol_binding_c…
mateo-berri Aug 24, 2026
d23069e
fix(passthrough): attribute spend and release budget reservation on r…
mateo-berri Aug 24, 2026
9bcc00b
Merge pull request #33310 from BerriAI/litellm_google_interactions_cost
mateo-berri Aug 24, 2026
e6eb6a4
fix(passthrough): stop leaking the caller's virtual key on credential…
mateo-berri Aug 24, 2026
6407a66
fix(runwayml): route every generation endpoint and fix video cost tra…
mateo-berri Aug 24, 2026
bf4069a
fix(proxy): authorize health test-connection on final probe params
mateo-berri Aug 24, 2026
603d335
Merge origin/litellm_internal_staging into bugfix/video-edits-form-bo…
mateo-berri Aug 24, 2026
531aafd
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 24, 2026
a7cd2cd
Merge branch 'litellm_internal_staging' into litellm_fix_46_thinking_…
mateo-berri Aug 24, 2026
37f8b96
Merge origin/litellm_internal_staging into litellm_azure_ai_entra_auth
mateo-berri Aug 24, 2026
a626170
Merge pull request #36806 from BerriAI/litellm_bedrock_converse_no_tr…
mateo-berri Aug 24, 2026
b117190
chore(pricing): regenerate model prices schema for new video cost tie…
mateo-berri Aug 24, 2026
b36f348
fix(anthropic): reconcile enum with declared type in output_format sc…
dkindlund Aug 24, 2026
e43b496
fix: undouble single-quoted payloads before reading them for routine …
mateo-berri Aug 24, 2026
25b379f
test: register supports_legacy_thinking in model-prices schema
mateo-berri Aug 24, 2026
4bc0977
fix(passthrough): strip virtual key from all headers on credential-le…
mateo-berri Aug 24, 2026
0322107
fix(images): flatten nested image-edit params to SDK multipart form
mateo-berri Aug 24, 2026
671a454
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 24, 2026
51ab4c7
test(videos): lock AzureVideoConfig inherited file-less multipart beh…
mateo-berri Aug 24, 2026
33c51e8
Merge pull request #35415 from BerriAI/litellm_azure_ai_entra_auth
mateo-berri Aug 24, 2026
a113475
fix(ui): boot the UI image as an arbitrary uid by anchoring nginx wri…
devin-ai-integration[bot] Aug 24, 2026
4ddf1e5
test: guard the restore padding against a long escaped-quote run befo…
mateo-berri Aug 24, 2026
b00afc0
Merge origin/litellm_internal_staging into litellm_fix_36493_image_vi…
mateo-berri Aug 24, 2026
458a639
test(health): guard that test_connection authorizes on post-merge pro…
mateo-berri Aug 24, 2026
79d0d7a
chore(codeowners): drop ryan-crabbe-berri from ui infra and generated…
ryan-crabbe-berri Aug 24, 2026
088a700
test(passthrough): cover virtual key echoed in api-key and x-api-key
mateo-berri Aug 24, 2026
f818a48
Merge pull request #36513 from Souravrajvi0/bugfix/video-edits-form-b…
mateo-berri Aug 24, 2026
5ed8394
chore(codeowners): unown ui container plumbing entirely
ryan-crabbe-berri Aug 24, 2026
e7c2ede
fix(vertex-passthrough): never forward proxy auth headers to Google
mateo-berri Aug 24, 2026
7f0c1c7
chore(videos): mark multi-branch video-create response as rebind-ok
mateo-berri Aug 24, 2026
6975b8e
fix(utils): make prompt_token_calculator count claude models again
ryan-crabbe-berri Aug 24, 2026
37b659e
Merge pull request #38108 from BerriAI/litellm_fix_46_thinking_budget
mateo-berri Aug 24, 2026
3030e97
fix(runwayml): skip progress scaling when Runway returns a null progress
mateo-berri Aug 24, 2026
fdae930
Merge pull request #38130 from BerriAI/litellm_missing_raise_anthropi…
ryan-crabbe-berri Aug 24, 2026
a0c3198
fix(search): harden bing_grounding auth, result cap, status, and cost
mateo-berri Aug 24, 2026
26e47ae
fix(auto-router): list configured auto-routers in the usage picker be…
tin-berri Aug 24, 2026
4eb09ad
refactor: trim multipart form helper docstrings to the non-obvious ra…
mateo-berri Aug 24, 2026
ee03632
fix(vertex-passthrough): strip virtual key sent via custom key header
mateo-berri Aug 24, 2026
776b585
Merge pull request #37908 from BerriAI/litellm_ruff_dead_test_code
ryan-crabbe-berri Aug 24, 2026
09f4096
Merge pull request #38101 from BerriAI/litellm_health_test_connection…
mateo-berri Aug 24, 2026
1c18d3e
fix(router): stop copying forwarded credentials into retry breadcrumbs
mateo-berri Aug 24, 2026
b103536
fix(passthrough): thread router-model attribution on the litellm_meta…
mateo-berri Aug 24, 2026
d0da90e
Merge pull request #38115 from BerriAI/litellm_fix_runwayml_video_pro…
mateo-berri Aug 24, 2026
422b240
fix: undouble an executed literal before scanning, so a doubled-quote…
mateo-berri Aug 24, 2026
ac29505
feat(proxy): enforce vector-store upload security controls on /v1/rag…
mateo-berri Aug 24, 2026
ab93636
fix(vertex-passthrough): derive credential-header drop set from Speci…
mateo-berri Aug 24, 2026
a703378
fix(images): forward scalar-array edit params as repeated multipart f…
mateo-berri Aug 24, 2026
3ffec65
test(images): pin scalar-array edit params survive as repeated multip…
mateo-berri Aug 24, 2026
ec47bba
feat(e2e): record and replay streamed provider responses chunk-for-chunk
mateo-berri Aug 24, 2026
aef7424
fix(azure/search): reject bool and non-positive max_results for bing_…
mateo-berri Aug 24, 2026
15d8f0b
refactor: drop the output-neutral pad on the executed-literal recursion
mateo-berri Aug 24, 2026
721227e
refactor(router): scrub retry-breadcrumb credentials by pattern, not …
mateo-berri Aug 24, 2026
a1f1aa9
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 24, 2026
0e96491
feat(router): per-group supported reasoning efforts with max and ultr…
tin-berri Aug 21, 2026
764a112
fix(map): keep flag-thin gpt-5.6 entries unflagged
tin-berri Aug 21, 2026
a5dd020
fix: keep ultra plumbed but unasserted, and stop the bridge forwardin…
tin-berri Aug 21, 2026
b0fee55
fix(router): resolve the none reasoning effort as opt-in on azure
Aug 22, 2026
6ec49ea
fix(map): stop claiming max reasoning effort for gpt-5.6 on chat comp…
mateo-berri Aug 22, 2026
18528b1
fix(reasoning): keep the chat gate on xhigh and stop empty groups zer…
mateo-berri Aug 22, 2026
96acac1
fix(router): tell an unknown deployment apart from a known non-reason…
mateo-berri Aug 22, 2026
6648ebe
fix(router): always compute a group's reasoning efforts rather than s…
mateo-berri Aug 22, 2026
5b5f000
revert(ui): drop the team-path join against /model_group/info
mateo-berri Aug 22, 2026
67f3cf0
fix(router): abstain on unknown reasoning efforts instead of guessing
mateo-berri Aug 23, 2026
b71b574
ci: raise three unit shard job timeouts to satisfy the startup safety…
tin-berri Aug 24, 2026
ca32321
Merge pull request #38111 from BerriAI/litellm_fix_passthrough_router…
mateo-berri Aug 24, 2026
f3dc339
fix(vertex-passthrough): value-strip the key by full auth precedence
mateo-berri Aug 24, 2026
9a0c541
fix(ci): preserve offsets when re-lexing executed SQL literals
mateo-berri Aug 24, 2026
a91cac7
Merge pull request #38104 from BerriAI/litellm_fix_36493_image_video_…
mateo-berri Aug 24, 2026
6afe0d7
fix(rag): tighten shebang and ASCII-magic content classification
cursoragent Aug 24, 2026
5d8286c
fix(vertex-passthrough): normalize caller key via canonical _get_bear…
mateo-berri Aug 24, 2026
f1f6d83
fix(ci): give three unit shards a job deadline that outlasts their py…
tin-berri Aug 24, 2026
b2f7216
fix(e2e): record a streamed chunk only after its downstream write lands
mateo-berri Aug 24, 2026
85d5ac2
feat(ui): add Gemini Family auto-router preset (#38138)
tin-berri Aug 24, 2026
b7aefba
fix(files): decode x-litellm-model encoded file_id in chat + responses
hclsys Jun 6, 2026
2a4e5fc
fix: catch a prisma routine called through a double-quoted identifier
mateo-berri Aug 24, 2026
a8f24c8
test(vertex-passthrough): send the virtual key via x-litellm-api-key …
mateo-berri Aug 24, 2026
12a34a1
fix(logging_worker): carry queued tasks across event-loop change inst…
mateo-berri Aug 24, 2026
2fe1e7e
fix(vertex-passthrough): cover operator-configured pass-through key h…
mateo-berri Aug 24, 2026
e46c722
fix: restore only quoted routine call sites, not like-named identifiers
mateo-berri Aug 24, 2026
fcc047b
fix(vertex-passthrough): match get_api_key precedence for configured …
mateo-berri Aug 24, 2026
b756092
fix: skip comments when detecting a quoted routine call site
mateo-berri Aug 24, 2026
2802f62
Merge pull request #38144 from BerriAI/litellm_fix_logging_worker_loo…
mateo-berri Aug 24, 2026
1e9cecd
Merge pull request #38135 from BerriAI/litellm_lit_5704_vectorstore_u…
mateo-berri Aug 24, 2026
463261d
Merge pull request #38117 from BerriAI/litellm_lit5902_managed_files_e2e
mateo-berri Aug 24, 2026
47c988e
refactor(ui): move the dashboard onto class-variance-authority (#38125)
yuneng-berri Aug 24, 2026
380338c
refactor(utils)!: delete prompt_token_calculator (#38132)
ryan-crabbe-berri Aug 24, 2026
5d34b12
fix(ci): ignore-list recursive form-field flatteners in recursive_det…
mateo-berri Aug 24, 2026
e018b9c
fix: don't read a quoted table's column list as a routine call site
mateo-berri Aug 24, 2026
0f596a5
Merge pull request #38129 from BerriAI/litellm_autorouter_dropdown_re…
mateo-berri Aug 24, 2026
6147b3c
refactor(ui): install the shadcn field primitive (#38126)
yuneng-berri Aug 24, 2026
16a81c9
fix(vertex-passthrough): cover the mapped-route litellm_user_api_key …
mateo-berri Aug 24, 2026
40246f4
fix(complexity_router): keep both ends of a clipped classifier contex…
tin-berri Aug 24, 2026
90a3101
fix: read through a schema qualifier when telling a table from a rout…
mateo-berri Aug 24, 2026
ccb03f5
Merge pull request #38149 from BerriAI/litellm_fix_recursive_detector…
mateo-berri Aug 24, 2026
46c2328
Merge pull request #38114 from BerriAI/litellm_fix_5997_vertex_pt_key…
mateo-berri Aug 24, 2026
fbb46b3
Merge pull request #38133 from BerriAI/litellm_harden_retry_breadcrum…
mateo-berri Aug 24, 2026
25ec682
Merge pull request #38136 from BerriAI/litellm_lit_5742_streaming_replay
mateo-berri Aug 24, 2026
c9d1b94
fix: read through a spaced schema qualifier when telling a table from…
mateo-berri Aug 24, 2026
7d0df4a
fix(videos): forward uploaded source file on /v1/videos/edits to the …
mateo-berri Aug 24, 2026
0de0e1c
feat(ui): add error-code drilldown for failed requests on caching page
ryan-crabbe-berri Aug 24, 2026
fde3075
fix: tolerate stream chunks without a choices key in stream_chunk_bui…
AkshaySasi Aug 24, 2026
eb00f46
refactor(videos): make video upload param keyword-only on public edit…
SwiftWinds Aug 24, 2026
a527275
fix: keep a schema-qualified call inside an index expression from rea…
mateo-berri Aug 24, 2026
a28f075
Merge pull request #29832 from hclsys/fix/files-decode-encoded-id-in-…
mateo-berri Aug 25, 2026
a5c81e5
refactor(ui): derive drilldown validity and drop Map mutation in buck…
ryan-crabbe-berri Aug 25, 2026
82b0069
Merge pull request #38155 from BerriAI/litellm_forward_video_edit_sou…
mateo-berri Aug 25, 2026
8f6de53
fix(s3_v2): percent-encode object keys once so signed and sent URLs m…
devin-ai-integration[bot] Aug 25, 2026
891b23d
Merge pull request #38156 from BerriAI/litellm_caching_error_drilldown
ryan-crabbe-berri Aug 25, 2026
da91d4b
Merge pull request #38119 from BerriAI/litellm_bing_grounding_search_…
mateo-berri Aug 25, 2026
8e7ad14
chore: make it more concise
mateo-berri Aug 25, 2026
539ba9f
Merge pull request #37899 from BerriAI/litellm_ban_data_migrations
mateo-berri Aug 25, 2026
ee68813
fix(langsmith): keep root-run ids self-consistent so batch ingest sto…
yucheng-berri Aug 25, 2026
53c9d48
ci(e2e): record the e2e suite weekly and replay it on weekdays with z…
mateo-berri Aug 25, 2026
5745313
Merge pull request #38124 from BerriAI/litellm_codeowners_ui_infra_ex…
ryan-crabbe-berri Aug 25, 2026
a9c7b84
fix(logging): skip parsing redacted tool call arguments (#38169)
devin-ai-integration[bot] Aug 25, 2026
31a6756
feat(complexity_router): bound the classifier context block, not each…
tin-berri Aug 25, 2026
9dabd72
refactor(repositories): type prisma table access with one generic pro…
mateo-berri Aug 25, 2026
bb27bfd
fix(http_handler): dispose aiohttp session when AsyncHTTPHandler is f…
anmolg1997 Aug 25, 2026
fc81048
Revert "ci: raise three unit shard job timeouts to satisfy the startu…
mateo-berri Aug 25, 2026
7dc5a16
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 25, 2026
a73f11a
fix(completion_extras): forward reasoning_effort=max through the Resp…
mateo-berri Aug 25, 2026
1d695a7
fix(proxy): reset a stuck team member's budget (#37971)
yassin-berriai Aug 25, 2026
9224b2c
fix(router): freeze reasoning effort flag mappings
mateo-berri Aug 25, 2026
f583151
fix(model_prices): raise bedrock_mantle gpt-5.6 max_input_tokens to M…
mateo-berri Aug 25, 2026
530dab3
feat(vertex_ai): add native Vertex AI Interactions API support
mateo-berri Aug 25, 2026
ed28581
fix(bedrock_mantle): normalize Codex input item types Mantle rejects
mateo-berri Aug 25, 2026
9dff9cd
Merge pull request #37979 from BerriAI/litellm_lit5714_adaptive_think…
mateo-berri Aug 25, 2026
92fe358
Merge pull request #38222 from BerriAI/litellm_fix_mantle_reasoning_e…
mateo-berri Aug 25, 2026
44c7cb2
feat(models): add missing Together AI serverless models to the cost map
mateo-berri Aug 25, 2026
68ad575
fix(bedrock_mantle): register a Bedrock runtime passthrough config so…
mateo-berri Aug 25, 2026
b46f17f
fix(together_ai): default endpoints to api.together.ai instead of api…
mateo-berri Aug 25, 2026
fd1dca0
fix(bedrock_mantle): type the codex item dispatcher without Any
mateo-berri Aug 25, 2026
6be000f
test(bedrock_mantle): type _repo_cost_map return instead of bare dict
mateo-berri Aug 25, 2026
db8c493
test: type the cost map fixture instead of bare dict
mateo-berri Aug 25, 2026
0bd4d32
fix(router): resolve provider from api_base in deployment validation …
mateo-berri Aug 25, 2026
367a6e5
test(router): pin the guard that keeps a junk-typed operator effort v…
mateo-berri Aug 25, 2026
5e6b6c6
fix(together_ai): let an explicit api_key beat the Together env key o…
mateo-berri Aug 25, 2026
751976d
Merge pull request #38229 from BerriAI/litellm_vertex_ai_interactions
mateo-berri Aug 25, 2026
0ea6f5e
fix(azure_ai): stamp the model router's selected model instead of mat…
ryan-crabbe-berri Aug 25, 2026
c3bcb6f
test(mcp): drain the logging worker after each test so queued callbac…
ryan-crabbe-berri Aug 25, 2026
65c0521
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
milan-berri Aug 25, 2026
c04b5db
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
ryan-crabbe-berri Aug 25, 2026
e8bdbcd
fix(bedrock_mantle): parse converse passthrough bodies with the conve…
mateo-berri Aug 25, 2026
5470c1b
fix(ui): forward OAuth issuer/authorization/token/registration URLs f…
yassin-berriai Aug 25, 2026
7a4567b
chore: merge branch updates and resolve test conflicts
milan-berri Aug 25, 2026
dacb147
chore: merge remote branch and resolve test conflicts
milan-berri Aug 25, 2026
41aa1ca
Merge pull request #38233 from BerriAI/litellm_together_api_host
mateo-berri Aug 25, 2026
559588a
fix(azure_ai): remove new LIT002 violations to satisfy type-disciplin…
milan-berri Aug 25, 2026
77f22be
style: apply ruff format to common_utils
milan-berri Aug 25, 2026
6cd1fcd
test: drop unneeded proxy_server patches and ratchet lint budgets
milan-berri Aug 25, 2026
62ec3b6
fix(together_ai): route chat completions through a dedicated Together…
mateo-berri Aug 25, 2026
18108ec
Merge pull request #38231 from BerriAI/litellm_fix_bedrock_mantle_pas…
mateo-berri Aug 25, 2026
76e1105
Merge pull request #38235 from BerriAI/litellm_router_api_base_resolu…
mateo-berri Aug 25, 2026
c543461
Merge pull request #38225 from BerriAI/litellm_fix_bedrock_mantle_gpt…
mateo-berri Aug 25, 2026
636ae5d
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 25, 2026
32ebfba
refactor(together_ai): build the trimmed supported-params list withou…
mateo-berri Aug 25, 2026
a9f42f0
Merge pull request #38227 from BerriAI/litellm_mantle_codex_input_items
mateo-berri Aug 25, 2026
5b2d187
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 25, 2026
17845b4
fix(anthropic): translate tool_result document blocks in the /v1/mess…
mateo-berri Aug 25, 2026
2bd2c13
docs(pr-template): split Caveats bullets into severity tiers and call…
mateo-berri Aug 25, 2026
d749b18
docs(pr-template): make intent the severe-vs-high discriminator
mateo-berri Aug 25, 2026
3db6c5a
Merge pull request #37770 from BerriAI/litellm_fix_model_router_spend…
ryan-crabbe-berri Aug 25, 2026
c6082c5
Merge pull request #37897 from BerriAI/litellm_reasoning_effort_capab…
mateo-berri Aug 25, 2026
e25ce85
fix(proxy): stop expected 4xx responses from saturating worker CPU on…
devin-ai-integration[bot] Aug 25, 2026
896e259
fix(caching): keep upstream RedisCluster on redis-py with per-connect…
devin-ai-integration[bot] Aug 25, 2026
0458acc
perf(auth): drop guaranteed-miss internal-cache Redis read from team …
devin-ai-integration[bot] Aug 25, 2026
8829b32
docs(pr-template): group caveats under severity subheadings and promo…
mateo-berri Aug 25, 2026
ece03ce
Merge pull request #38248 from BerriAI/litellm_together_chat_config
mateo-berri Aug 25, 2026
27ca05a
fix(ui): read reasoning tokens from Responses API output_tokens_detai…
yassin-berriai Aug 25, 2026
104fe73
fix(dashboard): don't show a stale provider prompt-cache chip on a re…
yassin-berriai Aug 25, 2026
e5adf7d
Merge pull request #37493 from BerriAI/devin_ai_lit5815_guardrail_tag…
ryan-crabbe-berri Aug 25, 2026
5998c0d
fix(anthropic): carry tool_result document blocks through the /v1/mes…
mateo-berri Aug 25, 2026
b1f9037
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
ryan-crabbe-berri Aug 25, 2026
6d0cc14
fix(scim): return user_id as Group members[].value on transformed gro…
devin-ai-integration[bot] Aug 25, 2026
c96245d
fix(scim): preserve existing team memberships when POST /Users adopti…
devin-ai-integration[bot] Aug 25, 2026
c70b911
fix(router): support mid-stream fallback for anthropic_messages route…
yassin-berriai Aug 25, 2026
02cba40
Merge pull request #37756 from BerriAI/litellm_jwt_team_allowed_route…
ryan-crabbe-berri Aug 25, 2026
e1a0920
refactor(anthropic): bind tool_result file parts once instead of seed…
mateo-berri Aug 25, 2026
c3c9e3a
test(anthropic): pin dropped file-id and empty-url document sources t…
mateo-berri Aug 25, 2026
d8d384e
Merge pull request #38230 from BerriAI/litellm_together_models_backfill
mateo-berri Aug 25, 2026
75c4565
fix(cerebras): add max_retries and extra_headers to get_supported_ope…
deepanshululla Aug 25, 2026
ec365a3
fix(together_ai): pass tools through for models missing from the regi…
mateo-berri Aug 25, 2026
99c1b33
chore: humanize the CLAUDE.md
mateo-berri Aug 25, 2026
d61ccd0
chore: make it more clear
mateo-berri Aug 25, 2026
a40157c
chore: make it more concise
mateo-berri Aug 25, 2026
9962f4f
Merge pull request #38251 from BerriAI/litellm_fix_tool_result_docume…
mateo-berri Aug 25, 2026
6c0c91c
fix(team): serialize member_add, member_delete, and delete under the …
yassin-berriai Aug 25, 2026
61ee2f5
fix(anthropic): carry user-content document blocks through the /v1/me…
mateo-berri Aug 25, 2026
296ebc1
Merge pull request #38252 from BerriAI/litellm_pr_template_caveat_sev…
mateo-berri Aug 25, 2026
dc40377
Merge pull request #38261 from BerriAI/litellm_fix_responses_tool_res…
mateo-berri Aug 25, 2026
e4ff44f
Merge pull request #38265 from BerriAI/litellm_together_tools_passthr…
mateo-berri Aug 25, 2026
04818a3
Merge pull request #38267 from BerriAI/litellm_fix_responses_user_doc…
mateo-berri Aug 25, 2026
3ebd18b
fix(ui): stack policy flow builder below the popup layer so guardrail…
devin-ai-integration[bot] Aug 25, 2026
8298cbe
test: gate the test tree on B003 so a test cannot swap os.environ for…
ryan-crabbe-berri Aug 25, 2026
1ba66b1
fix(together_ai): strip internal thinking fields from outbound messag…
mateo-berri Aug 25, 2026
bb22742
fix(rerank): emit latency and cost headers on /rerank (#35419)
devin-ai-integration[bot] Aug 25, 2026
8a61b28
test(together_ai): annotate preserved-thinking test helper and captur…
mateo-berri Aug 25, 2026
4ab654c
merge: litellm_internal_staging into litellm_fix_headroom_stream_leak
mateo-berri Aug 25, 2026
6684bb3
perf(streaming): add shared JSONFragmentAccumulator for Vertex and An…
deepanshululla Aug 25, 2026
1ff615c
Merge pull request #38275 from BerriAI/litellm_together_chat_template…
mateo-berri Aug 25, 2026
4582496
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 25, 2026
d16afd2
fix(memory): return 404 when the memory row vanishes before delete
mateo-berri Aug 25, 2026
75bf9f9
fix(router): persist attempted_fallbacks and original_model_group int…
yucheng-berri Aug 25, 2026
1bc441c
fix(proxy): detect held-back provider output through the anthropic st…
mateo-berri Aug 25, 2026
ba8d8b6
fix(logging): redact tool call arguments to valid JSON and preserve n…
yucheng-berri Aug 25, 2026
1b37397
fix(router): forward the hold-back keepalive ping live and carry the …
mateo-berri Aug 25, 2026
1aca5a9
Merge remote-tracking branch 'origin/litellm_fix_headroom_stream_leak…
mateo-berri Aug 25, 2026
50a42ba
Merge pull request #38273 from BerriAI/litellm_fix_flow_builder_guard…
ryan-crabbe-berri Aug 25, 2026
98b04de
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
mateo-berri Aug 25, 2026
7965cfd
fix(proxy): keep listing a keyless user's own models when their user …
mateo-berri Aug 25, 2026
434add7
Merge pull request #38274 from BerriAI/litellm_test_lint_os_environ
ryan-crabbe-berri Aug 25, 2026
64d8b24
fix(router): deliver the hold-back retrieval error to the client inst…
mateo-berri Aug 26, 2026
99e1eaa
Merge pull request #38205 from BerriAI/litellm_decrease_anys_opus5_ro…
mateo-berri Aug 26, 2026
8d87798
fix(caching): carry has_buffered_provider_output through the anthropi…
mateo-berri Aug 26, 2026
7c3da42
test(together_ai): regression suite across chat, responses, and messa…
mateo-berri Aug 26, 2026
602bf1c
test(together_ai): close the injected async client after the streamin…
mateo-berri Aug 26, 2026
d0c527f
Merge pull request #36245 from BerriAI/litellm_fix_headroom_stream_leak
mateo-berri Aug 26, 2026
ea6ac3d
Merge pull request #38283 from BerriAI/litellm_together_regression_tests
mateo-berri Aug 26, 2026
a543b03
test(e2e): cover Together AI reasoning, tool calls, template kwargs, …
mateo-berri Aug 26, 2026
cc6b378
test(e2e): price Together cached tokens at the registry cache read rate
mateo-berri Aug 26, 2026
55e3a97
test(e2e): trim docstrings that restate the Together tests
mateo-berri Aug 26, 2026
893482d
test(e2e): drop docstrings on the cost map model and its client accessor
mateo-berri Aug 26, 2026
d16c4da
feat(logging): add async_post_call_failure_deployment_hook (#36657)
deepanshululla Aug 26, 2026
72b8b47
bump: litellm-enterprise 0.1.59 -> 0.1.60, litellm 1.99.0 -> 1.100.0 …
yuneng-berri Aug 26, 2026
68f5cbd
fix(logging): keep tracebacks for provider-originated 4xx errors
mateo-berri Aug 26, 2026
273b01a
Merge pull request #38286 from BerriAI/litellm_together_e2e_coverage
mateo-berri Aug 26, 2026
ac6deec
fix(logging): keep tracebacks for unmapped provider exceptions too
mateo-berri Aug 26, 2026
a6e1708
fix(logging): keep proxy-side rate limits as expected client errors
mateo-berri Aug 26, 2026
514cae1
fix(logging): keep the proxy's own budget rejection an expected clien…
mateo-berri Aug 26, 2026
3e2927d
Merge pull request #38296 from BerriAI/litellm_fix_otel_provider_erro…
mateo-berri Aug 26, 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
  •  
  •  
  •  
195 changes: 16 additions & 179 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,7 @@ jobs:
--verbose \
--command="tr ' ' '\\n' | awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv \
--cov=./litellm \
--cov=./litellm --cov=./enterprise/litellm_enterprise \
--cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=20 \
Expand Down Expand Up @@ -504,7 +504,7 @@ jobs:
--verbose \
--command="tr ' ' '\\n' | awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv \
--cov=./litellm \
--cov=./litellm --cov=./enterprise/litellm_enterprise \
--cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=20 \
Expand Down Expand Up @@ -631,7 +631,7 @@ jobs:
--verbose \
--command="tr ' ' '\\n' | awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-v -x \
--cov=./litellm --cov-report=xml \
--cov=./litellm --cov=./enterprise/litellm_enterprise --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 \
-n 2"
Expand All @@ -651,126 +651,6 @@ jobs:
- auth_ui_unit_tests_coverage.xml
- auth_ui_unit_tests_coverage

proxy_behavior_tests:
docker:
- *python312_image
- image: cimg/postgres:16.0@sha256:b125148bc76e8e8eee5eb3ad6020a3a14110a14e8192f1c645128afebe2e2f84
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: litellm_test
working_directory: ~/project
environment:
DATABASE_URL: "postgresql://postgres:postgres@localhost:5432/litellm_test"
steps:
- checkout
- skip_if_unrelated_changes
- setup_google_dns
- install_uv
- install_rust
- run:
name: Install Dependencies
command: |
uv sync --frozen --all-groups --all-extras --python 3.12
- wait_for_service:
url: tcp://localhost:5432
timeout: "60"
- run:
name: Seed DB schema via prisma db push
command: |
uv run --no-sync prisma db push --schema litellm/proxy/schema.prisma --accept-data-loss
- run:
name: Generate Prisma Client
command: uv run --no-sync python -m prisma generate
- run:
name: Run proxy management behavior tests
command: |
mkdir -p test-results
uv run --no-sync python -m pytest tests/proxy_behavior \
-v --junitxml=test-results/junit.xml --durations=10
no_output_timeout: 15m
- store_test_results:
path: test-results

proxy_security_tests:
docker:
- *python312_image
- image: cimg/postgres:16.0@sha256:b125148bc76e8e8eee5eb3ad6020a3a14110a14e8192f1c645128afebe2e2f84
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: litellm_test
working_directory: ~/project
environment:
DATABASE_URL: "postgresql://postgres:postgres@localhost:5432/litellm_test"
steps:
- checkout
- skip_if_unrelated_changes
- setup_google_dns
- install_uv
- install_rust
- run:
name: Install Dependencies
command: |
uv sync --frozen --all-groups --all-extras --python 3.12
- wait_for_service:
url: tcp://localhost:5432
timeout: "60"
- run:
name: Seed DB schema via prisma db push
command: |
uv run --no-sync prisma db push --schema litellm/proxy/schema.prisma --accept-data-loss
- run:
name: Generate Prisma Client
command: uv run --no-sync python -m prisma generate
- run:
name: Run proxy security tests
command: |
mkdir -p test-results
uv run --no-sync python -m pytest tests/proxy_security_tests \
-v --junitxml=test-results/junit.xml --durations=10
no_output_timeout: 15m
- store_test_results:
path: test-results

schema_migration_check:
docker:
- *python312_image
- image: cimg/postgres:16.0@sha256:b125148bc76e8e8eee5eb3ad6020a3a14110a14e8192f1c645128afebe2e2f84
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: litellm_test
working_directory: ~/project
environment:
# An empty database; the test applies every committed migration itself.
DATABASE_URL: "postgresql://postgres:postgres@localhost:5432/litellm_test"
steps:
- checkout
- skip_if_unrelated_changes
- setup_google_dns
- install_uv
- install_rust
- run:
name: Install Dependencies
command: |
uv sync --frozen --all-groups --all-extras --python 3.12
- wait_for_service:
url: tcp://localhost:5432
timeout: "60"
- run:
name: Generate Prisma Client
command: uv run --no-sync python -m prisma generate
- run:
name: Check schema.prisma is in sync with committed migrations
command: |
mkdir -p test-results
uv run --no-sync python -m pytest tests/proxy_migration_tests \
-v --junitxml=test-results/junit.xml --durations=10
no_output_timeout: 15m
- store_test_results:
path: test-results

litellm_router_testing: # Runs all tests with the "router" keyword
docker:
- *python312_image
Expand Down Expand Up @@ -858,7 +738,7 @@ jobs:
--verbose \
--command="tr ' ' '\\n' | awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-v -x \
--cov=./litellm --cov-report=xml \
--cov=./litellm --cov=./enterprise/litellm_enterprise --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 \
-n 4"
Expand Down Expand Up @@ -985,7 +865,7 @@ jobs:
--verbose \
--command="tr ' ' '\\n' | awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv \
--cov=./litellm --cov-report=xml \
--cov=./litellm --cov=./enterprise/litellm_enterprise --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=20 \
-n 4 \
Expand Down Expand Up @@ -1030,7 +910,7 @@ jobs:
--verbose \
--command="tr ' ' '\\n' | awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv -x -s \
--cov=./litellm --cov-report=xml \
--cov=./litellm --cov=./enterprise/litellm_enterprise --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5"
no_output_timeout: 15m
Expand Down Expand Up @@ -1074,7 +954,7 @@ jobs:
--verbose \
--command="tr ' ' '\\n' | awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv \
--cov=./litellm --cov-report=xml \
--cov=./litellm --cov=./enterprise/litellm_enterprise --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 \
-n 2 \
Expand Down Expand Up @@ -1120,7 +1000,7 @@ jobs:
--verbose \
--command="tr ' ' '\\n' | awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv -x -s \
--cov=./litellm --cov-report=xml \
--cov=./litellm --cov=./enterprise/litellm_enterprise --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 \
--retries 3 --retry-delay 5"
Expand Down Expand Up @@ -1211,7 +1091,7 @@ jobs:
--verbose \
--command="tr ' ' '\\n' | awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv -x \
--cov=./litellm --cov-report=xml \
--cov=./litellm --cov=./enterprise/litellm_enterprise --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 \
-n 4"
Expand Down Expand Up @@ -1255,7 +1135,7 @@ jobs:
--verbose \
--command="tr ' ' '\\n' | awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv -x \
--cov=./litellm --cov-report=xml \
--cov=./litellm --cov=./enterprise/litellm_enterprise --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 \
-n 4"
Expand All @@ -1274,40 +1154,6 @@ jobs:
paths:
- search_coverage.xml
- search_coverage
litellm_mapped_enterprise_tests:
docker:
- *python312_image
working_directory: ~/project
resource_class: large

steps:
- checkout
- skip_if_unrelated_changes
- setup_google_dns
- install_uv
- install_rust
- run:
name: Install Dependencies
command: |
uv sync --frozen --all-groups --all-extras --python 3.12
- setup_litellm_enterprise_pip
- run:
name: Run enterprise tests
command: |
uv run --no-sync python -m prisma generate
mkdir -p test-results
TEST_FILES=$(circleci tests glob "tests/enterprise/**/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 \
-v -x \
--junitxml=test-results/junit-enterprise.xml \
--durations=10 \
-n 4"
no_output_timeout: 15m
# Store test results
- store_test_results:
path: test-results
batches_testing:
docker:
- *python312_image
Expand All @@ -1333,7 +1179,7 @@ jobs:
--verbose \
--command="tr ' ' '\\n' | awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv -x -s \
--cov=./litellm --cov-report=xml \
--cov=./litellm --cov=./enterprise/litellm_enterprise --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 \
-n 2"
Expand Down Expand Up @@ -1377,7 +1223,7 @@ jobs:
--verbose \
--command="tr ' ' '\\n' | awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv -x -s \
--cov=./litellm --cov-report=xml \
--cov=./litellm --cov=./enterprise/litellm_enterprise --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 \
-n 2"
Expand Down Expand Up @@ -1422,7 +1268,7 @@ jobs:
--verbose \
--command="tr ' ' '\\n' | awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv -x \
--cov=./litellm --cov-report=xml \
--cov=./litellm --cov=./enterprise/litellm_enterprise --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 \
-n 4"
Expand Down Expand Up @@ -1501,7 +1347,7 @@ jobs:
--verbose \
--command="tr ' ' '\\n' | awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv \
--cov=./litellm --cov-report=xml \
--cov=./litellm --cov=./enterprise/litellm_enterprise --cov-report=xml \
-n 4 \
--junitxml=test-results/junit.xml \
--durations=5 \
Expand Down Expand Up @@ -1546,7 +1392,7 @@ jobs:
--verbose \
--command="tr ' ' '\\n' | awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv -x -s \
--cov=./litellm --cov-report=xml \
--cov=./litellm --cov=./enterprise/litellm_enterprise --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5"
no_output_timeout: 15m
Expand Down Expand Up @@ -1599,7 +1445,7 @@ jobs:
--verbose \
--command="tr ' ' '\\n' | awk '/\\.py/ {print; next} {sub(/\\.[A-Z][^.]*$/, \"\"); gsub(/\\./, \"/\"); print \$0 \".py\"}' | xargs uv run --no-sync python -m pytest \
-vv -x -s \
--cov=./litellm --cov-report=xml \
--cov=./litellm --cov=./enterprise/litellm_enterprise --cov-report=xml \
--junitxml=test-results/junit.xml \
--durations=5 -n 2 \
--reruns 2 --reruns-delay 1"
Expand Down Expand Up @@ -3105,12 +2951,6 @@ workflows:
filters: *main_branches
- auth_ui_unit_tests:
filters: *main_branches
- proxy_behavior_tests:
filters: *main_branches
- proxy_security_tests:
filters: *main_branches
- schema_migration_check:
filters: *main_branches
- build_docker_database_image:
filters: *main_branches
- e2e_ui_testing:
Expand Down Expand Up @@ -3167,8 +3007,6 @@ workflows:
filters: *main_branches
- search_testing:
filters: *main_branches
- litellm_mapped_enterprise_tests:
filters: *main_branches
- batches_testing:
filters: *main_branches
- litellm_utils_testing:
Expand All @@ -3191,7 +3029,6 @@ workflows:
- guardrails_testing
- ocr_testing
- search_testing
- litellm_mapped_enterprise_tests
- batches_testing
- litellm_utils_testing
- pass_through_unit_testing
Expand Down
3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
/ui/ @yuneng-berri @ryan-crabbe-berri
/litellm/proxy/_experimental/out/ @yuneng-berri @ryan-crabbe-berri
/ui/Dockerfile
/ui/nginx.conf
/ui/litellm-dashboard/src/lib/http/schema.d.ts
/ui/litellm-dashboard/tsconfig.tsbuildinfo
/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
Expand Down
Loading
Loading