Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
365 commits
Select commit Hold shift + click to select a range
86ae627
Fix litellm/tests/test_litellm/proxy/_experimental/mcp_server/test_se…
Sameerlite Feb 3, 2026
b379fb6
Fix code quality tests
Sameerlite Feb 3, 2026
ecb6413
Revert "add missing indexes on VerificationToken table (#20040)"
Sameerlite Feb 3, 2026
a92a0fa
Add support for delete via only file_id
Sameerlite Feb 3, 2026
cad15e2
Add support for delete via only file_id
Sameerlite Feb 3, 2026
23f662e
Merge pull request #20328 from BerriAI/litellm_tuesday_cicd_release
Sameerlite Feb 3, 2026
1b1854b
Revert "Litellm tuesday cicd release"
Sameerlite Feb 3, 2026
80acd4c
Merge pull request #20330 from BerriAI/revert-20328-litellm_tuesday_c…
Sameerlite Feb 3, 2026
410e546
Fix: Managed Batches: Inconsistent State Management for list and canc…
Sameerlite Feb 3, 2026
eb8f4d3
Revert "fix: models loadbalancing billing issue by filter (#18891) (#…
Sameerlite Feb 3, 2026
9a6bafe
Fix litellm/tests/test_litellm/proxy/_experimental/mcp_server/test_se…
Sameerlite Feb 3, 2026
017b78d
Fix code quality tests
Sameerlite Feb 3, 2026
fae0554
Revert "add missing indexes on VerificationToken table (#20040)"
Sameerlite Feb 3, 2026
31cdffd
Revert "fix: prevent error when max_fallbacks exceeds available model…
Sameerlite Feb 3, 2026
21e95c7
Fix litellm_security_tests
Sameerlite Feb 3, 2026
793a7fd
Merge pull request #20333 from BerriAI/litellm_tuesday_cicd_release_f…
Sameerlite Feb 3, 2026
c2a33ea
Apply suggestion from @greptile-apps[bot]
Sameerlite Feb 3, 2026
3765d88
Fix: Extra inputs are not permitted, field: 'messages[2].provider_spe…
Sameerlite Feb 3, 2026
47c5366
bump litellm 1.81.7
Sameerlite Feb 3, 2026
070d501
Merge pull request #20336 from BerriAI/litellm_bump_version_1.81.7
Sameerlite Feb 3, 2026
b7f0d05
Merge pull request #20337 from BerriAI/main
Sameerlite Feb 3, 2026
1aa619d
added 1h ttl support for aws bedrock
Lucky-Lodhi2004 Feb 3, 2026
ea19d8d
fixing glm-4.7 input cost per token
FelipeRodriguesGare Feb 3, 2026
ffbc8d2
bugfix: Remove user messages merging
natimofeev Feb 3, 2026
be89b38
Merge pull request #20319 from FelipeRodriguesGare/add/models
Sameerlite Feb 3, 2026
b693458
fixed linting
Lucky-Lodhi2004 Feb 3, 2026
ff568de
Add get files API support and tests
Sameerlite Feb 3, 2026
d8761de
Add get files API support and tests
Sameerlite Feb 3, 2026
c1aa1c3
removing thinking lines
Lucky-Lodhi2004 Feb 3, 2026
a25289e
fixed typo
Lucky-Lodhi2004 Feb 3, 2026
c80fae7
bump litellm enterprise PIP
ishaan-jaff Feb 3, 2026
9ed11c5
[Feat] Allow calling A2A agents through LiteLLM /chat/completions API…
ishaan-jaff Feb 3, 2026
59cab4d
UI - Show team alias on Models health page (#20359)
ishaan-jaff Feb 3, 2026
cc76f95
fix: check for model_response_choices before guardrail input (#19784)
agrattan0820 Feb 3, 2026
2b25d03
Fix fail-open for grayswan and pass metadata to cygnal api endpoint (…
Reapor-Yurnero Feb 3, 2026
d267c69
[Feat] Use A2A registered agents with /chat/completions (#20362)
ishaan-jaff Feb 3, 2026
a2653bc
Adding Allowed Routes to Key Info and Edit Pages
yuneng-jiang Feb 3, 2026
23d9a89
search tools list includes config defined search tools
yuneng-jiang Feb 3, 2026
3e3b21e
masking sensitive values
yuneng-jiang Feb 4, 2026
c8f0d39
Merge pull request #20369 from BerriAI/litellm_ui_key_settings_routes
yuneng-jiang Feb 4, 2026
a50896f
fix: revert httpx client caching that caused closed client errors (#2…
michelligabriele Feb 4, 2026
cf256c7
allow max_budget reset
yuneng-jiang Feb 4, 2026
92786b5
Merge pull request #20317 from BerriAI/litellm_antd_modal
yuneng-jiang Feb 4, 2026
f9669cc
Merge pull request #20375 from BerriAI/litellm_user_update_fix
yuneng-jiang Feb 4, 2026
831f89b
unlimited budget ui changes
yuneng-jiang Feb 4, 2026
12b8cd5
Merge pull request #20380 from BerriAI/litellm_ui_key_budget_change
yuneng-jiang Feb 4, 2026
66eadfa
[Bug] Ensure MCP permissions are enforced when using JWT Auth (#20383)
ishaan-jaff Feb 4, 2026
bd87c44
Merge pull request #20329 from BerriAI/litellm_delete_files_bug
Sameerlite Feb 4, 2026
f11c16a
Merge pull request #20334 from BerriAI/litellm_fireworks_ai_field_remoal
Sameerlite Feb 4, 2026
7b57d1a
Merge pull request #20331 from BerriAI/litellm_bstch_status_retrieve
Sameerlite Feb 4, 2026
0cb6b58
fix(proxy): forward extra_headers in chat
nehaaprasad Feb 4, 2026
25fa1ad
Merge pull request #20386 from naaa760/fix/extra-head-chat-comp-brid
Sameerlite Feb 4, 2026
7056d99
Custom Code Guardrails UI Playground (#20377)
Feb 4, 2026
da4cf49
[Feat] Add xAI /realtime API Support - works with LiveKitSDK (#20381)
ishaan-jaff Feb 4, 2026
dc07a69
Merge pull request #20371 from BerriAI/litellm_config_search_tools
yuneng-jiang Feb 4, 2026
7b8e3c7
docs fix
ishaan-jaff Feb 4, 2026
15351a9
Fix: empty assistant message for converse API
Sameerlite Feb 4, 2026
30027d2
save empty endpoint as string
yuneng-jiang Feb 4, 2026
49c6785
fix: fix schema.prisma on litellm proxy extras
Feb 4, 2026
9ce5505
Adding logging for when batching fails
yuneng-jiang Feb 4, 2026
ca34b4e
Revert "feat(guardrails): implement team-based isolation guardrails m…
Feb 4, 2026
58cc624
Skip test_e2e_semantic_filter when OPENAI_API_KEY is not set (#20387)
Feb 4, 2026
8109413
Add copilotkit sdk doc as supported agents sdk
Sameerlite Feb 4, 2026
465bbf3
Add copilotkit sdk doc as supported agents sdk
Sameerlite Feb 4, 2026
cdd4569
Apply suggestion from @greptile-apps[bot]
Sameerlite Feb 4, 2026
18f4b72
feat: add faster linting targets for development workflow (#19729)
jquinter Feb 4, 2026
13130ea
Litellm fix langfuse otel trace (#20382)
Harshit28j Feb 4, 2026
774a015
fix: Preserve streaming content on guardrail-sampled chunks (#20027)
akraines Feb 4, 2026
8b3213c
Add mapping for responses tools in file ids
Sameerlite Feb 4, 2026
5413f58
Fix code quality issues
Sameerlite Feb 4, 2026
2698c92
Fix mypy issues
Sameerlite Feb 4, 2026
e4c1cff
Fix mypy issues
Sameerlite Feb 4, 2026
216cf4c
Add gemini deep research in model cost map
Sameerlite Feb 4, 2026
4d90767
Merge pull request #20406 from BerriAI/litellm_deepreasearch_agent_ge…
Sameerlite Feb 4, 2026
bfc0c4b
Merge pull request #20396 from BerriAI/litellm_copilot_kit_sdk
Sameerlite Feb 4, 2026
4256172
Add Key info endpoint object permission data
Sameerlite Feb 4, 2026
fc873d8
Fix mypy issues
Sameerlite Feb 4, 2026
20c21c6
Fix supports_native_streaming for gemini and vertex ai models
Sameerlite Feb 4, 2026
0ed5e51
Fix supports_native_streaming for anthropic models
Sameerlite Feb 4, 2026
5cec5c3
fix model map json
Sameerlite Feb 4, 2026
6b25e37
Revert "fix: proxy failure cases, now log ip and user agent, key hash…
Sameerlite Feb 4, 2026
674593e
Merge pull request #20413 from BerriAI/revert-20145-fix/proxy_failure…
Sameerlite Feb 4, 2026
f8b6af5
Fix test_transform_messages_disable_copilot_system_to_assistant
Sameerlite Feb 4, 2026
54b5c7d
Fix: litellm/tests/test_litellm/proxy/guardrails/guardrail_hooks/test…
Sameerlite Feb 4, 2026
b2feedc
Merge pull request #20318 from BerriAI/litellm_oss_staging_02_03_2026
Sameerlite Feb 4, 2026
1a5f2a5
Fix: test_bedrock_no_default_message
Sameerlite Feb 4, 2026
a86e501
Merge pull request #20407 from BerriAI/litellm_key_mcp_permissions
Sameerlite Feb 4, 2026
18a524a
Merge pull request #20408 from BerriAI/litellm_fix_model+map_streaming
Sameerlite Feb 4, 2026
8a3b253
Merge pull request #20390 from BerriAI/litellm_fix_empty_message
Sameerlite Feb 4, 2026
8b563a7
Merge pull request #20402 from BerriAI/litellm_responses_tools_file_ids
Sameerlite Feb 4, 2026
1e55e61
made changes suggested by agent
Lucky-Lodhi2004 Feb 4, 2026
bfabb39
fix: Fix Vertex AI Gemini streaming content_filter handling
krisxia0506 Jan 31, 2026
31e2e72
fixed linting
Lucky-Lodhi2004 Feb 4, 2026
e4b45dc
Merge branch 'main' into ttl-prompt-caching-bedrock
Lucky-Lodhi2004 Feb 4, 2026
a16faa9
Merge pull request #20394 from BerriAI/litellm_spend_fix_2
yuneng-jiang Feb 4, 2026
208cf5e
refactor - rename search tools files
yuneng-jiang Feb 4, 2026
609c423
migrate to antd table
yuneng-jiang Feb 4, 2026
cd9466a
Adding tests
yuneng-jiang Feb 4, 2026
d2e1131
Merge pull request #20436 from BerriAI/litellm_search_tools_config_ui
yuneng-jiang Feb 4, 2026
d1994a1
Fix mypy type error in fireworks_ai transformation (#20391)
Feb 4, 2026
ec4f7a3
Add option for authentication for public AI Hub
yuneng-jiang Feb 4, 2026
555e1da
langfuse doc update
Feb 4, 2026
795ba8e
Merge pull request #20443 from BerriAI/docs_langfuse_multi_project_cr…
shivamrawat1 Feb 4, 2026
0209b21
fix(a2a): use text/event-stream SSE format for message/stream endpoin…
Feb 5, 2026
6a73e5b
Revert "fix(a2a): use text/event-stream SSE format for message/stream…
ishaan-jaff Feb 5, 2026
2a3843a
[Fix] inconsistent response format in anthropic.messages.acreate() wh…
ishaan-jaff Feb 5, 2026
c47866a
useAuthorized refactor
yuneng-jiang Feb 5, 2026
28bae22
ai hub req auth working
yuneng-jiang Feb 5, 2026
bdf47eb
Adding tests
yuneng-jiang Feb 5, 2026
d016ac8
Adding tests for model hub
yuneng-jiang Feb 5, 2026
7831e30
keep package-lock.json in non-root
yuneng-jiang Feb 5, 2026
15b717c
[Feat] UI - Add support for MCP Semantic Filtering on UI (#20454)
ishaan-jaff Feb 5, 2026
8e1201c
docs: improve Okta SSO setup guide with step-by-step instructions (#2…
michelligabriele Feb 5, 2026
47b546f
fix(lint): remove unused Any/cast imports in github_copilot transform…
jquinter Feb 5, 2026
e080278
feat(openrouter): add Qwen3-235B models (#20455)
Chesars Feb 5, 2026
3c12dda
bump: litellm-proxy-extras 0.4.29 → 0.4.30
Sameerlite Feb 5, 2026
cda4b72
Merge pull request #20458 from BerriAI/litellm_proxy_extras_bump_vers…
Sameerlite Feb 5, 2026
64aeb18
chore: update poetry.lock for litellm-proxy-extras 0.4.30
Sameerlite Feb 5, 2026
137413f
Merge pull request #20460 from BerriAI/litellm_proxy_extras_bump_vers…
Sameerlite Feb 5, 2026
b982542
fixing build
yuneng-jiang Feb 5, 2026
02ed25c
Merge pull request #20461 from BerriAI/ui_build_fix_4
yuneng-jiang Feb 5, 2026
0f177a3
Fix: test_team_update_sc_2
Sameerlite Feb 5, 2026
fa86f1a
Fix input and output label
yuneng-jiang Feb 5, 2026
5e8c7f0
Fix mypy issues
Sameerlite Feb 5, 2026
5422a59
Fix test_route_a2a_model_bypasses_router
Sameerlite Feb 5, 2026
539ff7a
refactor admin page
yuneng-jiang Feb 5, 2026
ed7beba
small fixes
yuneng-jiang Feb 5, 2026
2c430eb
fix: Add array type checks for model, agent, and MCP hub data to prev…
swayambhu94 Feb 5, 2026
0ce1bfe
bump: version 1.81.7 → 1.81.8
Sameerlite Feb 5, 2026
1017c3a
Merge pull request #20464 from BerriAI/litellm_cicd_5_feb_2026
Sameerlite Feb 5, 2026
5904fa1
fix(ui): adjust daily spend date filtering for user timezone
nina-hu Feb 5, 2026
075b1b7
Merge pull request #20341 from natimofeev/bugfix/remove-user-messages…
Sameerlite Feb 5, 2026
453d1bd
Merge branch 'main' into litellm_oss_staging_02_04_2026
Sameerlite Feb 5, 2026
a21b625
Merge pull request #20105 from qiniu/fix/vertex-gemini-streaming-cont…
Sameerlite Feb 5, 2026
7e8be5f
Merge branch 'main' into ttl-prompt-caching-bedrock
Sameerlite Feb 5, 2026
fa733c2
Merge branch 'litellm_oss_staging_02_04_2026' into ttl-prompt-caching…
Sameerlite Feb 5, 2026
34e5bb2
Merge pull request #20338 from Lucky-Lodhi2004/ttl-prompt-caching-bed…
Sameerlite Feb 5, 2026
df590be
Fix test_global_redaction_off_with_dynamic_params
Sameerlite Feb 5, 2026
26d25de
fix: make sure gcs_bucket_name passes
Sameerlite Feb 5, 2026
b74afec
Merge pull request #20398 from BerriAI/litellm_oss_staging_02_04_2026
Sameerlite Feb 5, 2026
eabe3b2
fix: mypy issue
Sameerlite Feb 5, 2026
9376fcf
Apply suggestion from @greptile-apps[bot]
Sameerlite Feb 5, 2026
f65eec8
docs: Update CLI arguments documentation with all available options (…
Feb 5, 2026
d2bd029
[Fix] 404 Not Found on /api/event_logging/batch endpoint (#20504)
ishaan-jaff Feb 5, 2026
eae5fa1
[Feat] add `claude-opus-4-6` to model cost map (#20506)
ishaan-jaff Feb 5, 2026
dbd4bb5
Add Claude Opus 4.6 (#20508)
PeterDaveHello Feb 5, 2026
ea35ab6
day 0 blog post
ishaan-jaff Feb 5, 2026
e882296
Align Claude Opus 4.6 Bedrock metadata and model IDs
PeterDaveHello Feb 5, 2026
21d6025
adding test for converage
yuneng-jiang Feb 5, 2026
a04a2de
Merge pull request #20472 from nina-hu/fix/timezone-daily-spend-filte…
yuneng-jiang Feb 5, 2026
b41876b
Merge pull request #20452 from BerriAI/litellm_non_root_pkglk
yuneng-jiang Feb 5, 2026
b5956cb
Merge pull request #20513 from BerriAI/litellm_ui_test_cov_01
yuneng-jiang Feb 5, 2026
1d92968
Fix test isolation for test_watsonx_gpt_oss_prompt_transformation (#2…
Feb 5, 2026
0649720
Fix test isolation for test_log_langfuse_v2_handles_null_usage_values…
Feb 5, 2026
887a907
[Fix] Guardrails API - Ensure OpenAI Moderations Guard works with Ope…
ishaan-jaff Feb 5, 2026
a17efa1
Add soft_budget to team table and create update endpoints
yuneng-jiang Feb 5, 2026
8b0d0b2
bump: version 0.4.30 → 0.4.31
yuneng-jiang Feb 5, 2026
45c6382
cz bump + builds
yuneng-jiang Feb 5, 2026
bff5f8d
doc fix
ishaan-jaff Feb 5, 2026
3dc70c3
moved the test anthropic file
Feb 5, 2026
523a36e
Merge pull request #20530 from BerriAI/litellm_ui_team_soft_budget
yuneng-jiang Feb 5, 2026
93cf1ef
Merge pull request #20535 from BerriAI/litellm_move_anthropic_test_sc…
shivamrawat1 Feb 6, 2026
f64f949
Spend by provider refactor
yuneng-jiang Feb 6, 2026
3bececf
Merge pull request #20539 from BerriAI/litellm_usage_failed_req
yuneng-jiang Feb 6, 2026
3923ef2
Merge pull request #20491 from BerriAI/litellm_gemini_files_gcs
Sameerlite Feb 6, 2026
926fb35
refactor: Add error handling for network calls and apply consistent f…
swayambhu94 Feb 6, 2026
8263c8a
feat(web_search): add gpt-5-search-api model and docs clarifications …
Chesars Feb 6, 2026
95f8cbe
[Feat] add ElevenLabs eleven_v3 and eleven_multilingual_v2 to model c…
Chesars Feb 6, 2026
186fd2e
Add adaptive thinking support for anthropic opus 4.6
Sameerlite Feb 6, 2026
f15dd69
Fix anthropic.claude-opus-4-6-v1 for bedrock
Sameerlite Feb 6, 2026
1bcd407
Add adaptive thiking for bedrock converse
Sameerlite Feb 6, 2026
26cdc4a
Merge pull request #20465 from BerriAI/litellm_ui_dep_tremor
yuneng-jiang Feb 6, 2026
08a6fe2
refactor: migrate Ant Design notifications to use `App.useApp()` cont…
swayambhu94 Feb 6, 2026
5ce5399
Merge pull request #20469 from swayambhu94/fix/ui/model-hub-table-crash
yuneng-jiang Feb 6, 2026
eee37c5
fix: ensure Ant Design notification instance is initialized only once…
swayambhu94 Feb 6, 2026
ec5dc0b
email soft budgets
yuneng-jiang Feb 6, 2026
828b132
bump: version 0.1.29 → 0.1.30
yuneng-jiang Feb 6, 2026
7f11fa0
enterprise build
yuneng-jiang Feb 6, 2026
704fac5
reverting .29 deletion
yuneng-jiang Feb 6, 2026
3504f05
Adding tests + update pyproject
yuneng-jiang Feb 6, 2026
968b953
rename admins to AdminPanel
yuneng-jiang Feb 6, 2026
de70a1c
Merge pull request #20554 from BerriAI/ui_build_yj_03
yuneng-jiang Feb 6, 2026
b60d94d
addressing comments
yuneng-jiang Feb 6, 2026
e39530d
bump: version 0.1.30 → 0.1.31
yuneng-jiang Feb 6, 2026
b3f0dcc
enterprise build
yuneng-jiang Feb 6, 2026
0cb79ac
Fixing tests
yuneng-jiang Feb 6, 2026
039b37f
Add compaction type block in the output
Sameerlite Feb 6, 2026
c03ba83
Add compaction block in provider spcific fields streaming+ non streaming
Sameerlite Feb 6, 2026
24dda99
Handle compaction block in the input request
Sameerlite Feb 6, 2026
887a977
Add doc on how to enable compaction via chat completion
Sameerlite Feb 6, 2026
ea518a7
Apply suggestion from @greptile-apps[bot]
Sameerlite Feb 6, 2026
7a473f2
Apply suggestion from @greptile-apps[bot]
Sameerlite Feb 6, 2026
d0444f4
Add test for compaction in anthropic
Sameerlite Feb 6, 2026
1396813
The compact beta feature is not currently supported on the Converse a…
Sameerlite Feb 6, 2026
358a081
Add compaction support for vertex ai
Sameerlite Feb 6, 2026
0934a4a
Correct litellm/litellm/llms/anthropic/chat/transformation.py
Sameerlite Feb 6, 2026
1ec89b8
Feat: add inference_geo based pricing
Sameerlite Feb 6, 2026
a2b29d6
Add complete documentation for claude_opus_4_6
Sameerlite Feb 6, 2026
d07c878
Merge pull request #20514 from PeterDaveHelloKitchen/feat/add-claude-…
Sameerlite Feb 6, 2026
bfd21b5
Merge branch 'main' into litellm_opus_4.6_thinking
Sameerlite Feb 6, 2026
a48a8ec
refactor: Directly use Ant Design's `notification` hook instead of `A…
swayambhu94 Feb 6, 2026
920fea9
feat: Add Unsupported Anthropic beta headers for each provider json
Sameerlite Feb 6, 2026
25a19b2
Add update_headers_with_filtered_beta in anthropic
Sameerlite Feb 6, 2026
3f9a7b1
Add update_headers_with_filtered_beta in all messages API providers
Sameerlite Feb 6, 2026
c1a4391
Add documentation related to new beta header json
Sameerlite Feb 6, 2026
786bd6e
Fix merge conflicts
Sameerlite Feb 6, 2026
40ff796
Add not_available in inference_geo
Sameerlite Feb 6, 2026
fa26c6e
fix mypy issue
Sameerlite Feb 6, 2026
05ce4c6
Fix: test_vertex_ai_partner_models_anthropic_remove_prompt_caching_sc…
Sameerlite Feb 6, 2026
2e0715b
Fix mypy issue
Sameerlite Feb 6, 2026
db8423b
Fix: test_json_response_nested_json_schema
Sameerlite Feb 6, 2026
285b2d2
add context_management header for compact_20260112 for messages
Sameerlite Feb 6, 2026
eab7a99
Merge pull request #20578 from BerriAI/litellm_claude_code_beta_headers
Sameerlite Feb 6, 2026
ad1282d
Merge pull request #20551 from BerriAI/litellm_opus_4.6_thinking
Sameerlite Feb 6, 2026
53a1f2d
perf(prometheus): parallelize budget metrics, fix caching bug, reduce…
AlexsanderHamir Feb 6, 2026
09fb6d0
Warn when budget lookup fails; cache won't populate (#20545)
AlexsanderHamir Feb 6, 2026
b859d76
Merge pull request #20553 from BerriAI/litellm_team_soft_budget_email
yuneng-jiang Feb 6, 2026
ee70010
Adding testing coverage
yuneng-jiang Feb 6, 2026
5733f62
Add INFO-level session reuse logging per request (#20597)
AlexsanderHamir Feb 6, 2026
8df6cfe
fix model page col resize
yuneng-jiang Feb 6, 2026
49eab29
Merge pull request #20596 from BerriAI/litellm_ui_yj_cov_01
yuneng-jiang Feb 6, 2026
4de0ed7
Merge pull request #20444 from BerriAI/litellm_ui_config_req_auth_mh
yuneng-jiang Feb 6, 2026
ac8f380
Merge pull request #20462 from BerriAI/litellm_model_info_cost
yuneng-jiang Feb 6, 2026
dfc4a1b
Merge pull request #20599 from BerriAI/litellm_model_page_col_resize
yuneng-jiang Feb 6, 2026
a4689c9
Merge pull request #20549 from swayambhu94/fix/ui/antd-notification
yuneng-jiang Feb 6, 2026
400e560
Merge remote-tracking branch 'origin' into litellm_router_search_fix
yuneng-jiang Feb 6, 2026
6a213fc
fix(mcp): resolve OAuth2 'Capabilities: none' bug for upstream MCP se…
michelligabriele Feb 6, 2026
b78f4c9
[Fix] A2a Agent Gateway Fixes - A2A agents deployed with localhost/in…
ishaan-jaff Feb 6, 2026
fd3ca08
use cached keys and teams for router settings
yuneng-jiang Feb 6, 2026
218373c
Merge pull request #20205 from BerriAI/litellm_router_search_fix
yuneng-jiang Feb 6, 2026
f4a0b80
fix(sso): extract user roles from JWT access token for Keycloak compa…
michelligabriele Feb 7, 2026
0a55571
[Feat] add au version of `claude-opus-4-6` to model cost map (#20566)
ssadedin Feb 7, 2026
ba74e6d
Add http support to custom code guardrails + Unified guardrails for M…
Feb 7, 2026
29990c8
fix(mypy): resolve missing return statements and type casting issues …
Feb 7, 2026
8114647
[Feat] MCP Gateway - Allow setting MCP Servers as Private/Public avai…
ishaan-jaff Feb 7, 2026
4d1b5d8
fixing user_id
yuneng-jiang Feb 7, 2026
9b1ccc0
[Feat] IP-Based Access Control for MCP Servers (#20620)
ishaan-jaff Feb 7, 2026
0d74656
Add OpenAI/Azure release test suite with HTTP client lifecycle regres…
AlexsanderHamir Feb 7, 2026
271877f
Merge pull request #20623 from BerriAI/litellm_user_id_fix
yuneng-jiang Feb 7, 2026
1b24a0f
docs (#20626)
ishaan-jaff Feb 7, 2026
36be004
docs
ishaan-jaff Feb 7, 2026
54618c5
fix(mypy): resolve type checking errors in 5 files (#20627)
Feb 7, 2026
537f7af
fix(test): update deprecated gemini embedding model (#20621)
Feb 7, 2026
51af66f
ui new buil
ishaan-jaff Feb 7, 2026
e968e37
team settings soft budget and alerting emails
yuneng-jiang Feb 7, 2026
8ae1fe3
fixing test
yuneng-jiang Feb 7, 2026
a427a2b
Merge pull request #20634 from BerriAI/litellm_ui_team_budget_settings
yuneng-jiang Feb 7, 2026
8741512
Update opus 4.6 blog with adaptive thinking
Sameerlite Feb 7, 2026
f5ed782
Merge pull request #20637 from BerriAI/litellm_blog_claude_4_6
Sameerlite Feb 7, 2026
51e4c66
Fix Bedrock Converse returning internal json_tool_call alongside real…
jquinter Feb 9, 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
  •  
  •  
  •  
124 changes: 122 additions & 2 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1255,7 +1255,15 @@ jobs:
ls
# Add --timeout to kill hanging tests after 120s (2 min)
# Add --durations=20 to show 20 slowest tests for debugging
python -m pytest -vv tests/llm_translation --cov=litellm --cov-report=xml -v --junitxml=test-results/junit.xml --durations=20 -n 4 --timeout=120 --timeout_method=thread
# Subdirectories with dedicated jobs (maintain this list as new jobs are added)
IGNORE_DIRS=(
"tests/llm_translation/realtime"
)
IGNORE_ARGS=""
for dir in "${IGNORE_DIRS[@]}"; do
IGNORE_ARGS="$IGNORE_ARGS --ignore=$dir"
done
python -m pytest -vv tests/llm_translation $IGNORE_ARGS --cov=litellm --cov-report=xml -v --junitxml=test-results/junit.xml --durations=20 -n 4 --timeout=120 --timeout_method=thread
no_output_timeout: 120m
- run:
name: Rename the coverage files
Expand All @@ -1271,6 +1279,54 @@ jobs:
paths:
- llm_translation_coverage.xml
- llm_translation_coverage
realtime_translation_testing:
docker:
- image: cimg/python:3.11
auth:
username: ${DOCKERHUB_USERNAME}
password: ${DOCKERHUB_PASSWORD}
working_directory: ~/project

steps:
- checkout
- setup_google_dns
- run:
name: Install Dependencies
command: |
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
pip install "pytest==7.3.1"
pip install "pytest-retry==1.6.3"
pip install "pytest-cov==5.0.0"
pip install "pytest-asyncio==0.21.1"
pip install "respx==0.22.0"
pip install "pytest-xdist==3.6.1"
pip install "pytest-timeout==2.2.0"
pip install "websockets"
# Run pytest and generate JUnit XML report
- run:
name: Run realtime tests
command: |
pwd
ls
# Add --timeout to kill hanging tests after 120s (2 min)
# Add --durations=20 to show 20 slowest tests for debugging
python -m pytest -vv tests/llm_translation/realtime --cov=litellm --cov-report=xml -v --junitxml=test-results/junit.xml --durations=20 -n 4 --timeout=120 --timeout_method=thread
no_output_timeout: 120m
- run:
name: Rename the coverage files
command: |
mv coverage.xml realtime_translation_coverage.xml
mv .coverage realtime_translation_coverage

# Store test results
- store_test_results:
path: test-results
- persist_to_workspace:
root: .
paths:
- realtime_translation_coverage.xml
- realtime_translation_coverage
mcp_testing:
docker:
- image: cimg/python:3.11
Expand Down Expand Up @@ -1316,6 +1372,51 @@ jobs:
paths:
- mcp_coverage.xml
- mcp_coverage
agent_testing:
docker:
- image: cimg/python:3.11
auth:
username: ${DOCKERHUB_USERNAME}
password: ${DOCKERHUB_PASSWORD}
working_directory: ~/project

steps:
- checkout
- setup_google_dns
- run:
name: Install Dependencies
command: |
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
pip install "pytest==7.3.1"
pip install "pytest-retry==1.6.3"
pip install "pytest-cov==5.0.0"
pip install "pytest-asyncio==0.21.1"
pip install "respx==0.22.0"
pip install "pydantic==2.11.0"
pip install "a2a-sdk"
# Run pytest and generate JUnit XML report
- run:
name: Run tests
command: |
pwd
ls
python -m pytest -vv tests/agent_tests --ignore=tests/agent_tests/local_only_agent_tests --cov=litellm --cov-report=xml -x -s -v --junitxml=test-results/junit.xml --durations=5
no_output_timeout: 120m
- run:
name: Rename the coverage files
command: |
mv coverage.xml agent_coverage.xml
mv .coverage agent_coverage

# Store test results
- store_test_results:
path: test-results
- persist_to_workspace:
root: .
paths:
- agent_coverage.xml
- agent_coverage
guardrails_testing:
docker:
- image: cimg/python:3.11
Expand Down Expand Up @@ -3532,7 +3633,7 @@ jobs:
python -m venv venv
. venv/bin/activate
pip install coverage
coverage combine llm_translation_coverage llm_responses_api_coverage ocr_coverage search_coverage mcp_coverage logging_coverage audio_coverage litellm_router_coverage litellm_router_unit_coverage local_testing_part1_coverage local_testing_part2_coverage litellm_assistants_api_coverage auth_ui_unit_tests_coverage langfuse_coverage caching_coverage litellm_proxy_unit_tests_part1_coverage litellm_proxy_unit_tests_part2_coverage image_gen_coverage pass_through_unit_tests_coverage batches_coverage litellm_security_tests_coverage guardrails_coverage litellm_mapped_tests_coverage
coverage combine llm_translation_coverage realtime_translation_coverage llm_responses_api_coverage ocr_coverage search_coverage mcp_coverage logging_coverage audio_coverage litellm_router_coverage litellm_router_unit_coverage local_testing_part1_coverage local_testing_part2_coverage litellm_assistants_api_coverage auth_ui_unit_tests_coverage langfuse_coverage caching_coverage litellm_proxy_unit_tests_part1_coverage litellm_proxy_unit_tests_part2_coverage image_gen_coverage pass_through_unit_tests_coverage batches_coverage litellm_security_tests_coverage guardrails_coverage litellm_mapped_tests_coverage
coverage xml
- codecov/upload:
file: ./coverage.xml
Expand Down Expand Up @@ -3754,6 +3855,9 @@ jobs:

cd ui/litellm-dashboard

# Remove node_modules and package-lock to ensure clean install (fixes dependency resolution issues)
rm -rf node_modules package-lock.json

# Install dependencies first
npm install

Expand Down Expand Up @@ -4193,12 +4297,24 @@ workflows:
only:
- main
- /litellm_.*/
- realtime_translation_testing:
filters:
branches:
only:
- main
- /litellm_.*/
- mcp_testing:
filters:
branches:
only:
- main
- /litellm_.*/
- agent_testing:
filters:
branches:
only:
- main
- /litellm_.*/
- guardrails_testing:
filters:
branches:
Expand Down Expand Up @@ -4304,7 +4420,9 @@ workflows:
- upload-coverage:
requires:
- llm_translation_testing
- realtime_translation_testing
- mcp_testing
- agent_testing
- google_generate_content_endpoint_testing
- guardrails_testing
- llm_responses_api_testing
Expand Down Expand Up @@ -4381,7 +4499,9 @@ workflows:
- e2e_openai_endpoints
- test_bad_database_url
- llm_translation_testing
- realtime_translation_testing
- mcp_testing
- agent_testing
- google_generate_content_endpoint_testing
- llm_responses_api_testing
- ocr_testing
Expand Down
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ LiteLLM is a unified interface for 100+ LLM providers with two main components:
- Pydantic v2 for data validation
- Async/await patterns throughout
- Type hints required for all public APIs
- **Avoid imports within methods** — place all imports at the top of the file (module-level). Inline imports inside functions/methods make dependencies harder to trace and hurt readability. The only exception is avoiding circular imports where absolutely necessary.

### Testing Strategy
- Unit tests in `tests/test_litellm/`
Expand Down
65 changes: 55 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
# LiteLLM Makefile
# Simple Makefile for running tests and basic development tasks

.PHONY: help test test-unit test-integration test-unit-helm lint format install-dev install-proxy-dev install-test-deps install-helm-unittest check-circular-imports check-import-safety
.PHONY: help test test-unit test-integration test-unit-helm \
info lint lint-dev format \
install-dev install-proxy-dev install-test-deps \
install-helm-unittest check-circular-imports check-import-safety

# Default target
help:
Expand All @@ -25,6 +28,13 @@ help:
@echo " make test-integration - Run integration tests"
@echo " make test-unit-helm - Run helm unit tests"

# Keep PIP simple for edge cases:
PIP := $(shell command -v pip > /dev/null 2>&1 && echo "pip" || echo "python3 -m pip")

# Show info
info:
@echo "PIP: $(PIP)"

# Installation targets
install-dev:
poetry install --with dev
Expand All @@ -34,19 +44,19 @@ install-proxy-dev:

# CI-compatible installations (matches GitHub workflows exactly)
install-dev-ci:
pip install openai==2.8.0
$(PIP) install openai==2.8.0
poetry install --with dev
pip install openai==2.8.0
$(PIP) install openai==2.8.0

install-proxy-dev-ci:
poetry install --with dev,proxy-dev --extras proxy
pip install openai==2.8.0
$(PIP) install openai==2.8.0

install-test-deps: install-proxy-dev
poetry run pip install "pytest-retry==1.6.3"
poetry run pip install pytest-xdist
poetry run pip install openapi-core
cd enterprise && poetry run pip install -e . && cd ..
poetry run $(PIP) install "pytest-retry==1.6.3"
poetry run $(PIP) install pytest-xdist
poetry run $(PIP) install openapi-core
cd enterprise && poetry run $(PIP) install -e . && cd ..

install-helm-unittest:
helm plugin install https://github.com/helm-unittest/helm-unittest --version v0.4.4 || echo "ignore error if plugin exists"
Expand All @@ -62,8 +72,40 @@ format-check: install-dev
lint-ruff: install-dev
cd litellm && poetry run ruff check . && cd ..

# faster linter for developing ...
# inspiration from:
# https://github.com/astral-sh/ruff/discussions/10977
# https://github.com/astral-sh/ruff/discussions/4049
lint-format-changed: install-dev
@git diff origin/main --unified=0 --no-color -- '*.py' | \
perl -ne '\
if (/^diff --git a\/(.*) b\//) { $$file = $$1; } \
if (/^@@ .* \+(\d+)(?:,(\d+))? @@/) { \
$$start = $$1; $$count = $$2 || 1; $$end = $$start + $$count - 1; \
print "$$file:$$start:1-$$end:999\n"; \
}' | \
while read range; do \
file="$${range%%:*}"; \
lines="$${range#*:}"; \
echo "Formatting $$file (lines $$lines)"; \
poetry run ruff format --range "$$lines" "$$file"; \
done

lint-ruff-dev: install-dev
@tmpfile=$$(mktemp /tmp/ruff-dev.XXXXXX) && \
cd litellm && \
(poetry run ruff check . --output-format=pylint || true) > "$$tmpfile" && \
poetry run diff-quality --violations=pylint "$$tmpfile" --compare-branch=origin/main && \
cd .. ; \
rm -f "$$tmpfile"

lint-ruff-FULL-dev: install-dev
@files=$$(git diff --name-only origin/main -- '*.py'); \
if [ -n "$$files" ]; then echo "$$files" | xargs poetry run ruff check; \
else echo "No changed .py files to check."; fi

lint-mypy: install-dev
poetry run pip install types-requests types-setuptools types-redis types-PyYAML
poetry run $(PIP) install types-requests types-setuptools types-redis types-PyYAML
cd litellm && poetry run mypy . --ignore-missing-imports && cd ..

lint-black: format-check
Expand All @@ -72,11 +114,14 @@ check-circular-imports: install-dev
cd litellm && poetry run python ../tests/documentation_tests/test_circular_imports.py && cd ..

check-import-safety: install-dev
poetry run python -c "from litellm import *" || (echo '🚨 import failed, this means you introduced unprotected imports! 🚨'; exit 1)
@poetry run python -c "from litellm import *; print('[from litellm import *] OK! no issues!');" || (echo '🚨 import failed, this means you introduced unprotected imports! 🚨'; exit 1)

# Combined linting (matches test-linting.yml workflow)
lint: format-check lint-ruff lint-mypy check-circular-imports check-import-safety

# Faster linting for local development (only checks changed code)
lint-dev: lint-format-changed lint-mypy check-circular-imports check-import-safety

# Testing targets
test:
poetry run pytest tests/
Expand Down
1 change: 1 addition & 0 deletions ci_cd/security_scans.sh
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ run_grype_scans() {
"CVE-2025-15367" # No fix available yet
"CVE-2025-12781" # No fix available yet
"CVE-2025-11468" # No fix available yet
"CVE-2026-1299" # Python 3.13 email module header injection - not applicable, LiteLLM doesn't use BytesGenerator for email serialization
)

# Build JSON array of allowlisted CVE IDs for jq
Expand Down
Loading