Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
260 commits
Select commit Hold shift + click to select a range
4c99f3d
fix(gemini): differentiate billing model and extract web search requests
Chesars Mar 22, 2026
f8a9bbd
test: add supports_none branch coverage for Responses API GPT-5 tempe…
Chesars Mar 22, 2026
a0d1d22
docs: add Web Search Cost Tracking section
Chesars Mar 22, 2026
e82d3f6
refactor(gemini): use web_search_billing_unit field instead of hardco…
Chesars Mar 22, 2026
b607901
docs: clarify web_search_billing_unit applies to Gemini models only
Chesars Mar 22, 2026
6a46691
fix: map Zhipu GLM non-standard finish_reason values
Chesars Mar 22, 2026
bfee7f0
fix: improve error message for supports-none models with temperature
Chesars Mar 22, 2026
996d27b
fix(vertex_ai): delegate web search cost to shared Gemini calculator
Chesars Mar 22, 2026
de91bbb
Merge pull request #24373 from Chesars/fix/zhipu-finish-reason-mapping
Chesars Mar 22, 2026
16c48b4
Merge pull request #24371 from Chesars/fix/responses-api-gpt5-tempera…
Chesars Mar 22, 2026
4e604d6
Merge pull request #24368 from Chesars/fix/bedrock-converse-content-b…
Chesars Mar 22, 2026
335f4e8
Merge pull request #24370 from Chesars/fix/gemini-embedding-drop-unsu…
Chesars Mar 22, 2026
21b9c68
fix: remove web_search_billing_unit from OpenRouter/Perplexity entries
Chesars Mar 22, 2026
d233d66
Merge pull request #24372 from Chesars/fix/gemini-web-search-cost
Chesars Mar 22, 2026
446456b
fix(gemini): include DOCUMENT modality tokens in cost calculation
Chesars Mar 23, 2026
7805f38
fix(vertex_ai): forward dimensions parameter in multimodalembedding r…
Chesars Mar 23, 2026
265e096
fix: use correct parameter name 'dimension' for Vertex AI multimodale…
Chesars Mar 23, 2026
2afa65d
refactor(responses): extract shared format mapping between Responses …
Chesars Mar 23, 2026
9d8e460
fix: move usage mapping imports to top-level for consistency
Chesars Mar 23, 2026
a53ef4b
fix: rename test to match actual API parameter name (dimension)
Chesars Mar 23, 2026
4c9f866
fix: avoid mutating caller's dict and return None for unrecognised pr…
Chesars Mar 23, 2026
36df3db
docs: add missing observability integrations to View All page
Chesars Mar 23, 2026
4399b76
Merge pull request #24410 from Chesars/fix/gemini-document-modality-cost
Chesars Mar 23, 2026
e5f5ffb
Merge pull request #24420 from Chesars/docs/complete-integrations-lan…
Chesars Mar 23, 2026
498c113
Merge pull request #24415 from Chesars/fix/multimodal-embedding-dimen…
Chesars Mar 23, 2026
3f3d275
Merge pull request #24417 from Chesars/refactor/shared-format-mapping
Chesars Mar 23, 2026
44b6f9c
feat(bedrock): add GLM-5 and Minimax M2.5 with regional aliases
Chesars Mar 23, 2026
238cb56
fix: add supports_system_messages to zai.glm-5
Chesars Mar 23, 2026
d0f0cf7
feat(bedrock): add GLM-5 and Minimax M2.5 model entries
Chesars Mar 23, 2026
7bf311e
fix(model-prices): migrate 38 models from legacy max_tokens to max_in…
Chesars Mar 23, 2026
9b7c27c
Merge pull request #24422 from Chesars/fix/legacy-max-tokens-migration
Chesars Mar 23, 2026
19c8f3d
Merge pull request #24423 from Chesars/feat/bedrock-glm5-minimax-m25
Chesars Mar 23, 2026
da0c6c1
fix: align claude 4.6 pricing tests
Chesars Mar 23, 2026
b8189ea
Merge pull request #24164 from dongyu-turo/feat/update-bedrock-claude…
Chesars Mar 23, 2026
7c81ee7
chore: fixes
yuneng-berri Apr 5, 2026
0547629
chore: fixes
yuneng-berri Apr 5, 2026
f6b03a4
feat(responses): add use_responses_api_bridge flag for openai/ models…
Sameerlite Mar 30, 2026
de6fb58
docs(responses): add use_responses_api_bridge opt-in bridge docs
Sameerlite Mar 30, 2026
6b7629e
Fix greptile review
Sameerlite Apr 8, 2026
50861b4
feat(openai): add route_all_chat_openai_to_responses global flag
Sameerlite Apr 1, 2026
6072d1b
fix(openai): fix env var bool parsing and add responses API docs
Sameerlite Apr 1, 2026
9709117
docs(openai): move chat-to-responses flag docs to openai.md completio…
Sameerlite Apr 1, 2026
7f3cbd4
Fix greptile review
Sameerlite Apr 8, 2026
c0baf0f
fix tests
Sameerlite Apr 8, 2026
a3992c3
Fix docs
Sameerlite Apr 13, 2026
5ac1089
Merge branch 'main' into litellm_Sameerlite/openai-chat-to-responses
Sameerlite Apr 13, 2026
0a8bf4e
feat(responses): rename bridge opt-in to use_chat_completions_api
Sameerlite Apr 13, 2026
2506ccb
refactor(responses): drop use_responses_api_bridge; fix PLR0915
Sameerlite Apr 13, 2026
d3a1f63
[Refactor] Proxy: move projects management to enterprise package
yuneng-berri Apr 14, 2026
084dc71
[Fix] Proxy: resolve CI fallout from projects migration
yuneng-berri Apr 14, 2026
937d813
[Refactor] Proxy: tighten UI settings extras registry
yuneng-berri Apr 14, 2026
f122aa1
fix(router): restore BYOK key injection for vector store endpoints wi…
shivamrawat1 Apr 15, 2026
9d089c8
Merge remote-tracking branch 'upstream/litellm_internal_staging' into…
shivamrawat1 Apr 15, 2026
eba43b5
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Apr 15, 2026
3ce67ba
[Feature] UI - Users: add Send Invitation Email toggle to Invite User…
yuneng-berri Apr 15, 2026
fde7c10
Move Send Invitation Email checkbox into modal footer, add tests
yuneng-berri Apr 15, 2026
55829c2
Render Send Invitation Email as a labeled form item to align with oth…
yuneng-berri Apr 15, 2026
a7c947f
Move Send Invitation Email field directly below User Email in both forms
yuneng-berri Apr 15, 2026
442a5ae
Move Send Invitation Email field under Metadata in both forms
yuneng-berri Apr 15, 2026
67e4604
Merge upstream/main into litellm_staging_03_22_2026
Chesars Apr 16, 2026
f82ba6c
Resolve remaining merge conflicts with upstream/main
Chesars Apr 16, 2026
10bd3ff
Fix three bugs introduced by staging PRs
Chesars Apr 16, 2026
c98002c
docs(gemini): document Gemini 3 thinking_level API defaults
Sameerlite Apr 16, 2026
83d0f28
Fix tests
Sameerlite Apr 16, 2026
89767a6
litellm_staging_03_22_2026
Sameerlite Apr 16, 2026
52fde57
feat(docs): align fenced code padding on blog and doc pages
Sameerlite Apr 17, 2026
d881a48
fix(anthropic): strip Gemini thought suffix from streaming tool_use id
Sameerlite Apr 17, 2026
96882e0
Merge pull request #25942 from BerriAI/litellm_internal_staging
Sameerlite Apr 17, 2026
27877b4
Merge pull request #25945 from BerriAI/litellm_internal_staging
Sameerlite Apr 17, 2026
d5c8e19
Fix mypy error
Sameerlite Apr 17, 2026
c3d94d0
fix(ui): stop injecting $0 cost into model update payload when cost f…
ryan-crabbe-berri Apr 18, 2026
80d48a4
[Fix] preserve service_account_id in metadata on /key/update
ryan-crabbe-berri Apr 18, 2026
01acbb8
[Fix] reject explicit null when clearing reserved metadata field
ryan-crabbe-berri Apr 18, 2026
208d583
[Fix] handle metadata=null on service-account keys
ryan-crabbe-berri Apr 18, 2026
57eae8d
Merge branch 'litellm_internal_staging' into litellm_staging_03_22_2026
Sameerlite Apr 20, 2026
d5cfdcc
feat(models): add versioned GPT-5.4 mini and nano aliases
Sameerlite Apr 20, 2026
0b66fa6
feat(responses): strip custom_tool_call namespace for all providers
Sameerlite Apr 22, 2026
b967510
fix(proxy): preserve anthropic_messages call type for /v1/messages lo…
Sameerlite Apr 22, 2026
6ebbfe5
fix(anthropic): allow output_config effort max for Opus 4.7 and model…
Sameerlite Apr 22, 2026
bd1c3ea
fix(mcp): harden BYOK OAuth authorize/token endpoints
stuxf Apr 22, 2026
862bad3
fix(mcp): validate preconditions before consuming auth code
stuxf Apr 22, 2026
25c0aa8
Merge pull request #26283 from BerriAI/litellm_internal_staging
Chesars Apr 22, 2026
e1e5fcb
style: apply black formatting
Chesars Apr 22, 2026
3737d6a
fix(auth): centralize common_checks to close authorization bypass
stuxf Apr 22, 2026
e0a9c19
fix(auth): address CI regressions from centralization
stuxf Apr 23, 2026
fb55e2f
fix(auth): propagate BudgetExceededError through _safe_fetch
stuxf Apr 23, 2026
f3b8072
Merge pull request #26301 from BerriAI/litellm_internal_staging
Sameerlite Apr 23, 2026
94288d7
Merge pull request #26303 from BerriAI/litellm_internal_staging
Sameerlite Apr 23, 2026
ef108e7
fix(mcp): validate loopback redirect_uri in discoverable OAuth proxy
stuxf Apr 23, 2026
200a38c
fix(mcp): revalidate loopback at /callback + no-store on /token
stuxf Apr 23, 2026
b5c78d7
fix(auth): guard _team_obj_from_token against team-less tokens
stuxf Apr 23, 2026
f5b4564
fix(mcp): OAuth 2.1 spec compliance + cookie exp + loopback edge cases
stuxf Apr 23, 2026
85f9c5e
feat(mcp): resolve team/key MCP permissions by server name or alias
ryan-crabbe-berri Apr 23, 2026
c2f40e8
[Infra] Remove CCI/GHA test duplication and semantically shard proxy …
yuneng-berri Apr 23, 2026
32c390a
fix(tests): restore proxy_server.master_key in realtime fixture; add …
yuneng-berri Apr 23, 2026
57b0d7f
fix(mcp): resolve tool_permissions dict keys by id-or-name
ryan-crabbe-berri Apr 23, 2026
e0201ec
[Infra] Split slow proxy-db shards to hit 7m wall-clock target
yuneng-berri Apr 23, 2026
584a7cd
[Infra] Clean up proxy-db matrix job display names
yuneng-berri Apr 23, 2026
5b9c7be
test: isolate proxy master_key/prisma_client module globals between t…
yuneng-berri Apr 23, 2026
5df9f39
[Infra] Match xdist workers to runner cores; revert test_proxy_utils …
yuneng-berri Apr 23, 2026
0911307
style: apply black formatting
ryan-crabbe-berri Apr 23, 2026
1481b12
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Apr 23, 2026
21e08b0
[Infra] Run schema-migration shard serially (workers: 0)
yuneng-berri Apr 23, 2026
66bf890
[Infra] Stop attaching push-only postgres workflows to a GHA environment
yuneng-berri Apr 23, 2026
4d2acaf
Split MCP routes into inference vs management categories
ryan-crabbe-berri Apr 23, 2026
d607343
chore(packaging): declare MIT license in litellm-proxy-extras metadata
stuxf Apr 23, 2026
b217ad4
rerun tests
shivamrawat1 Apr 24, 2026
812044a
rerun tests
shivamrawat1 Apr 24, 2026
35eef7d
chore: apply black formatting to _types.py management_routes block
ryan-crabbe-berri Apr 24, 2026
fed1a14
chore(deps): bump vulnerable dependencies
stuxf Apr 23, 2026
1cc935e
chore(deps): bump Wolfi base digest to latest
stuxf Apr 24, 2026
5ba6bc0
chore(deps): bump uv to 0.11.7 + drop dead npm sed
stuxf Apr 24, 2026
4d74a30
chore(deps): fix brace-expansion pin and revert risky dev bumps
stuxf Apr 24, 2026
e982fe8
Merge branch 'litellm_internal_staging' into litellm_vector-store-tea…
shivamrawat1 Apr 24, 2026
654b688
Merge pull request #25746 from BerriAI/litellm_vector-store-team-byok…
yuneng-berri Apr 24, 2026
8e652d1
Merge pull request #26356 from BerriAI/litellm_cci_gha_dedup_and_shard
shin-berri Apr 24, 2026
e68c60a
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Apr 24, 2026
2378ef7
FIx black formatinig
Sameerlite Apr 24, 2026
3c1b27e
Merge pull request #26381 from BerriAI/litellm_internal_staging
Sameerlite Apr 24, 2026
0992bf2
Merge pull request #26367 from BerriAI/litellm_/split-mcp-routes-mana…
ryan-crabbe-berri Apr 24, 2026
09d401e
fix: tighten guardrail param handling in list and submission endpoints
yuneng-berri Apr 24, 2026
1720903
Merge pull request #25346 from BerriAI/litellm_Sameerlite/responses-b…
Sameerlite Apr 24, 2026
863f922
fix(team_endpoints): auto-add SSO team members to org on move (proxy …
ishaan-berri Apr 24, 2026
8bd58fb
Merge branch 'litellm_internal_staging' into litellm_staging_03_22_2026
Chesars Apr 24, 2026
9dcb2bd
fix(proxy): respect object-level permissions for managed vector store…
shivamrawat1 Apr 24, 2026
e1466be
feat(pricing): gemini-embedding-2 GA cost map, blog, and test (#26391)
Sameerlite Apr 24, 2026
55ea431
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Apr 24, 2026
4dbea4e
fix(responses): enforce spec object on completion bridge (#26327)
Sameerlite Apr 24, 2026
78d171b
Merge pull request #26115 from BerriAI/litellm_gpt54_mini_nano_versio…
yuneng-berri Apr 24, 2026
b2afc70
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Apr 24, 2026
4d5c347
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Apr 24, 2026
6ea95a6
fix(jwt-auth): apply team TPM/RPM + attribution for admins using x-li…
ryan-crabbe-berri Apr 24, 2026
d73b790
Merge pull request #26248 from BerriAI/litellm_anthropic_messages_cal…
yuneng-berri Apr 24, 2026
4e3feda
Merge pull request #26221 from BerriAI/litellm_responses_strip_custom…
yuneng-berri Apr 24, 2026
61ad127
Merge pull request #25935 from BerriAI/litellm_anthropic-stream-strip…
yuneng-berri Apr 24, 2026
023dad5
Merge pull request #25932 from BerriAI/litellm_docs-code-block-paddin…
yuneng-berri Apr 24, 2026
8dda834
Merge pull request #25842 from BerriAI/litellm_docs-gemini3-thinking-…
yuneng-berri Apr 24, 2026
a0c52cd
docs(proxy): clarify x-litellm-model-group vs provider model id (#25497)
Sameerlite Apr 24, 2026
09f0a33
Merge pull request #26362 from BerriAI/litellm_fix_proxy_test_master_…
yuneng-berri Apr 24, 2026
4cdcd87
feat: add UI settings to restrict org admins from creating keys, team…
ryan-crabbe-berri Apr 24, 2026
f9bce31
type: narrow _ORG_ADMIN_FEATURE_LABELS annotation to dict[str, str]
ryan-crabbe-berri Apr 24, 2026
1b07ef9
fix: apply team scoping to in-memory-only guardrails in list endpoint
yuneng-berri Apr 24, 2026
fea402c
fix(mcp): fail closed on DB outage in BYOK credential check
stuxf Apr 24, 2026
9dd7e37
Merge pull request #25359 from BerriAI/litellm_Sameerlite/openai-chat…
yuneng-berri Apr 24, 2026
ca443a9
Merge pull request #24374 from BerriAI/litellm_staging_03_22_2026
shin-berri Apr 24, 2026
96ba35e
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Apr 24, 2026
000ce70
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Apr 24, 2026
d747e4c
Remove stale test_project_endpoints_prisma.py path from proxy-db work…
yuneng-berri Apr 24, 2026
e7f4e77
Bound _get_masked_values recursion depth
yuneng-berri Apr 24, 2026
3c3ef7e
Merge pull request #26369 from stuxf/fix/license-metadata
yuneng-berri Apr 24, 2026
1a3db6d
Merge pull request #26365 from stuxf/fix/deps-security-bumps
yuneng-berri Apr 24, 2026
29ca1dc
Merge pull request #26279 from stuxf/fix/post-auth-enforcement
yuneng-berri Apr 24, 2026
51d4c6c
Merge pull request #26274 from stuxf/fix/mcp-byok-oauth-auth
yuneng-berri Apr 24, 2026
32d4ae7
Validate UI settings PATCH body against effective class
yuneng-berri Apr 24, 2026
85b6cae
Type _get_effective_ui_settings_class as Type[UISettings] for mypy
yuneng-berri Apr 24, 2026
e1bb542
chore: fix linting (ruff PLR0915, black) on admin team-header fix
ryan-crabbe-berri Apr 24, 2026
b300dc3
Preserve UISettings docstring on effective class for GET schema
yuneng-berri Apr 24, 2026
c35f3a5
docs: remove docs/my-website, point contributors to litellm-docs
yuneng-berri Apr 24, 2026
d422813
ci: check out litellm-docs directly into docs/my-website
yuneng-berri Apr 24, 2026
a0bba43
fix(jwt-auth): soft-fail unresolvable x-litellm-team-id for admins
ryan-crabbe-berri Apr 24, 2026
082a8fa
Merge pull request #26454 from BerriAI/litellm_remove_docs_repo_moved
shin-berri Apr 24, 2026
5d8ef97
chore(packaging): declare proprietary license in litellm-enterprise m…
yuneng-berri Apr 24, 2026
ea5a34c
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Apr 24, 2026
7cf6a95
fix(vertex passthrough): log :embedContent and :batchEmbedContents re…
ishaan-berri Apr 24, 2026
c91a22a
Merge pull request #26438 from BerriAI/litellm_fix-jwt-admin-bypass
ryan-crabbe-berri Apr 24, 2026
70a986e
Merge pull request #26457 from BerriAI/litellm_enterpriseLicenseMetadata
yuneng-berri Apr 24, 2026
ae9f12f
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Apr 24, 2026
06e3691
fix(auth): exempt public routes and trust admin token role in central…
yuneng-berri Apr 24, 2026
3560823
fix(passthrough): strip Server/Date/Connection from upstream response…
yuneng-berri Apr 24, 2026
7a91d80
fix(auth): exempt auth=false pass-through endpoints from centralized …
yuneng-berri Apr 25, 2026
8a9faa8
feat(guardrails): LLM-as-a-Judge guardrail (#26360)
ishaan-berri Apr 25, 2026
fdac444
Merge pull request #26390 from BerriAI/litellm_guardrail_param_masking
yuneng-berri Apr 25, 2026
0a72938
fix: harden team metadata handling in /team/new and /team/update
yuneng-berri Apr 25, 2026
91d6626
Merge pull request #25808 from BerriAI/litellm_sendInviteEmailToggle
yuneng-berri Apr 25, 2026
7723a54
Merge pull request #25677 from BerriAI/litellm_migration_projects
yuneng-berri Apr 25, 2026
3c0d172
fix(proxy): single-team DB fallback when JWT has no team_id (#26418)
milan-berri Apr 25, 2026
9521b74
Merge pull request #26464 from BerriAI/litellm_team_metadata_hardening
yuneng-berri Apr 25, 2026
961672e
fix: harden pass-through target URL construction
yuneng-berri Apr 25, 2026
5be4ed9
fix: preserve trailing slash when joining pass-through paths
yuneng-berri Apr 25, 2026
70492ce
feat(proxy): add /v1/memory CRUD endpoints (#26218)
krrish-berri-2 Apr 25, 2026
57c6a1b
refactor(rbac): narrow org-admin restriction to key generation only
ryan-crabbe-berri Apr 25, 2026
28f43a7
fix(rbac): also gate /key/service-account/generate for org admins
ryan-crabbe-berri Apr 25, 2026
1130107
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
ryan-crabbe-berri Apr 25, 2026
cac57a8
Merge pull request #26467 from BerriAI/litellm_passthrough_path_join
yuneng-berri Apr 25, 2026
5c0349a
[Feature] UI - Spend Logs: sortable Model and TTFT columns
yuneng-berri Apr 25, 2026
01eee09
[Fix] Restrict /global/spend/* routes to admin roles
yuneng-berri Apr 25, 2026
2047446
Scope NULLS LAST to ttft_ms only
yuneng-berri Apr 25, 2026
2220f30
fix: tighten caller-permission checks on key route fields
yuneng-berri Apr 25, 2026
ffdcc68
Merge pull request #26492 from BerriAI/litellm_key_route_caller_checks
yuneng-berri Apr 25, 2026
5190bd0
fix: extend caller-permission checks to service-account + harden raw-…
yuneng-berri Apr 25, 2026
f7f77d0
docs: clarify intent of empty-dict handle_key_type call in regenerate
yuneng-berri Apr 25, 2026
9426aff
Merge pull request #26493 from BerriAI/litellm_key_route_caller_check…
yuneng-berri Apr 25, 2026
ea5c762
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
ryan-crabbe-berri Apr 25, 2026
419a34a
Merge pull request #26442 from BerriAI/litellm_feat-restrict-org-admi…
ryan-crabbe-berri Apr 25, 2026
25513b9
Merge pull request #26001 from BerriAI/litellm_fix-ui-unconditional-c…
ryan-crabbe-berri Apr 25, 2026
7eab549
test: tighten prepare_key_update_data mock and apply black
ryan-crabbe-berri Apr 25, 2026
9839ab7
Merge pull request #26004 from BerriAI/litellm_fix-preserve-reserved-…
ryan-crabbe-berri Apr 25, 2026
5fae805
Merge pull request #26488 from BerriAI/litellm_sortable_spend_logs_co…
yuneng-berri Apr 25, 2026
c05de83
Merge pull request #26490 from BerriAI/litellm_restrict_global_spend_…
yuneng-berri Apr 25, 2026
4884b0b
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Apr 25, 2026
151d7ab
fix: isolate per-fetch HTTPException in centralized common_checks gate
yuneng-berri Apr 25, 2026
410b163
fix: annotate centralized common_checks gather results for mypy
yuneng-berri Apr 25, 2026
3c86772
Revert "Merge pull request #24420 from Chesars/docs/complete-integrat…
Chesars Apr 25, 2026
bb61f74
Merge pull request #26496 from BerriAI/litellm_yj_apr23
yuneng-berri Apr 25, 2026
a4a8d86
Revert "Merge pull request #24417 from Chesars/refactor/shared-format…
Chesars Apr 25, 2026
384cfda
Revert "Merge pull request #24164 from dongyu-turo/feat/update-bedroc…
Chesars Apr 25, 2026
f118ecc
ci: align CI/workflows with litellm_internal_staging
Chesars Apr 25, 2026
ebe1607
Merge remote-tracking branch 'upstream/litellm_internal_staging' into…
Chesars Apr 25, 2026
c8ceafe
Merge pull request #26510 from BerriAI/litellm_internal_staging
Chesars Apr 25, 2026
0bd9213
ci: add supply-chain guard to block fork PRs that modify dependencies
cursoragent Apr 25, 2026
40eeffe
test(vertex): use valid dimension (128) for multimodalembedding live …
Chesars Apr 25, 2026
91f6661
[Fix] Align MCP OAuth proxy endpoints with per-server access policy
yuneng-berri Apr 25, 2026
7a6ab38
[Fix] bind RAG ingestion config to stored credential values
yuneng-berri Apr 25, 2026
449146e
Merge pull request #24428 from BerriAI/litellm_staging_03_23_2026
yuneng-berri Apr 25, 2026
0a16615
Merge pull request #26511 from BerriAI/cursor/guard-fork-dependencies…
shin-berri Apr 25, 2026
7503f14
fix: harden /model/info redaction to cover plural credential field names
yuneng-berri Apr 25, 2026
0b9a704
fix: leave vector_store_config untouched when credential lookup misses
yuneng-berri Apr 25, 2026
8f4f2a1
Merge pull request #26516 from BerriAI/litellm_mcp_oauth_caller_acces…
yuneng-berri Apr 25, 2026
9f60b75
Merge pull request #26338 from BerriAI/litellm_feat-mcp-server-alias-…
ryan-crabbe-berri Apr 25, 2026
9d71ad4
[Feat] Add "My User" tab to team info page
ryan-crabbe-berri Apr 25, 2026
7705cb3
Merge pull request #26512 from BerriAI/litellm_rag_credential_precedence
yuneng-berri Apr 25, 2026
db8ef44
fix(key_management): enforce upperbound_key_generate_params on /key/r…
michelligabriele Apr 25, 2026
ceed00f
Merge pull request #26513 from BerriAI/litellm_/intelligent-maxwell-3…
yuneng-berri Apr 25, 2026
9c00f97
fix(content_filter): log guardrail_information on streaming post-call…
michelligabriele Apr 25, 2026
ae925ba
fix(model_management): refresh in-memory router after POST /model/upd…
michelligabriele Apr 25, 2026
4a11362
Merge pull request #26522 from BerriAI/litellm_yj_apr25
yuneng-berri Apr 25, 2026
3191936
[Feat] Add azure/gpt-5.5 + azure/gpt-5.5-pro entries (+ dated variant…
mateo-berri Apr 25, 2026
79762e4
fix(team): address review feedback on My User tab
ryan-crabbe-berri Apr 25, 2026
5416a7c
fix(bedrock guardrail): dedupe post-call log entry when only post_cal…
shivamrawat1 Apr 25, 2026
30cb459
fix: broaden RAG ingestion config cleanup to cover AWS endpoint/ident…
yuneng-berri Apr 25, 2026
7e57b15
fix(guardrails): team-level guardrails and global policy guardrails c…
shivamrawat1 Apr 25, 2026
c364c51
style: black formatting
yuneng-berri Apr 25, 2026
1dee006
Merge pull request #26520 from BerriAI/litellm_feat-team-my-user-tab
yuneng-berri Apr 25, 2026
b021d5c
Merge pull request #26525 from BerriAI/litellm_rag_aws_endpoint_cleanup
yuneng-berri Apr 25, 2026
3ef1609
Reseed enforcement read path from DB on counter miss (#26459)
Michael-RZ-Berri Apr 25, 2026
f6e4e10
fix(proxy): suppress deferred success log when post-call guardrail bl…
shivamrawat1 Apr 25, 2026
614fdcb
refactor(proxy): extract deferred-logging gate into static helper for…
shivamrawat1 Apr 25, 2026
9e59a0b
Merge pull request #26528 from BerriAI/litellm_pre_post_bedrock
yuneng-berri Apr 25, 2026
523d294
chore: update Next.js build artifacts (2026-04-25 23:04 UTC, node v22…
yuneng-berri Apr 25, 2026
5db6b83
Merge pull request #26532 from BerriAI/yj_build_apr25
yuneng-berri Apr 25, 2026
740bb44
fix(memory): jsonify metadata before Prisma writes on /v1/memory (#26…
krrish-berri-2 Apr 26, 2026
4ed3e71
Litellm memory improvements v2 (#26541)
krrish-berri-2 Apr 26, 2026
9a70c26
chore: update Next.js build artifacts (2026-04-26 02:06 UTC, node v22…
yuneng-berri Apr 26, 2026
615565c
Merge pull request #26542 from BerriAI/yj_build_apr25_2
yuneng-berri Apr 26, 2026
67628a6
bump: version 0.4.68 → 0.4.69
yuneng-berri Apr 26, 2026
92c1e9b
bump: version 0.1.38 → 0.1.39
yuneng-berri Apr 26, 2026
4ec3ac2
bump: version 1.83.13 → 1.83.14
yuneng-berri Apr 26, 2026
a10fff8
uv lock
yuneng-berri Apr 26, 2026
4c6a4e7
Update ui/litellm-dashboard/tsconfig.json
yuneng-berri Apr 26, 2026
abb63e6
Merge pull request #26543 from BerriAI/yj_bump_apr25_pypi
yuneng-berri Apr 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
  •  
  •  
  •  
77 changes: 1 addition & 76 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -576,39 +576,6 @@ jobs:
paths:
- realtime_translation_coverage.xml
- realtime_translation_coverage
mcp_testing:
docker:
- *python312_image
working_directory: ~/project

steps:
- checkout
- setup_google_dns
- install_uv
- run:
name: Install Dependencies
command: |
uv sync --frozen --all-groups --all-extras --python 3.12
# Run pytest and generate JUnit XML report
- run:
name: Run tests
command: |
uv run --no-sync python -m pytest -vv tests/mcp_tests --cov=litellm --cov-report=xml -x -s -v --junitxml=test-results/junit.xml --durations=5 -n 2
no_output_timeout: 15m
- run:
name: Rename the coverage files
command: |
mv coverage.xml mcp_coverage.xml
mv .coverage mcp_coverage

# Store test results
- store_test_results:
path: test-results
- persist_to_workspace:
root: .
paths:
- mcp_coverage.xml
- mcp_coverage
agent_testing:
docker:
- *python312_image
Expand Down Expand Up @@ -807,39 +774,6 @@ jobs:
paths:
- search_coverage.xml
- search_coverage
# Split litellm_mapped_tests into parallel jobs
litellm_mapped_tests_proxy_part1:
docker:
- *python312_image
working_directory: ~/project
resource_class: large
steps:
- setup_litellm_test_deps
- run:
name: Run proxy tests part 1 (high-volume directories)
command: |
uv run --no-sync python -m prisma generate
export PYTHONUNBUFFERED=1
uv run --no-sync python -m pytest tests/test_litellm/proxy/guardrails tests/test_litellm/proxy/management_endpoints tests/test_litellm/proxy/_experimental tests/test_litellm/proxy/client tests/test_litellm/proxy/auth --junitxml=test-results/junit-proxy-part1.xml --durations=10 -n 4 --maxfail=5 --timeout=60 -vv --log-cli-level=WARNING -r A
no_output_timeout: 15m
- store_test_results:
path: test-results
litellm_mapped_tests_proxy_part2:
docker:
- *python312_image
working_directory: ~/project
resource_class: large
steps:
- setup_litellm_test_deps
- run:
name: Run proxy tests part 2 (all other tests)
command: |
uv run --no-sync python -m prisma generate
export PYTHONUNBUFFERED=1
uv run --no-sync python -m pytest tests/test_litellm/proxy --ignore=tests/test_litellm/proxy/guardrails --ignore=tests/test_litellm/proxy/management_endpoints --ignore=tests/test_litellm/proxy/_experimental --ignore=tests/test_litellm/proxy/client --ignore=tests/test_litellm/proxy/auth --junitxml=test-results/junit-proxy-part2.xml --durations=10 -n 4 --maxfail=5 --timeout=120 -vv --log-cli-level=WARNING -r A
no_output_timeout: 15m
- store_test_results:
path: test-results
litellm_mapped_enterprise_tests:
docker:
- *python312_image
Expand Down Expand Up @@ -2091,7 +2025,7 @@ jobs:
- run:
name: Combine Coverage
command: |
uv tool run --from 'coverage[toml]==7.10.6' coverage combine realtime_translation_coverage ocr_coverage search_coverage mcp_coverage logging_coverage audio_coverage local_testing_part1_coverage local_testing_part2_coverage pass_through_unit_tests_coverage batches_coverage guardrails_coverage redis_caching_coverage
uv tool run --from 'coverage[toml]==7.10.6' coverage combine realtime_translation_coverage ocr_coverage search_coverage logging_coverage audio_coverage local_testing_part1_coverage local_testing_part2_coverage pass_through_unit_tests_coverage batches_coverage guardrails_coverage redis_caching_coverage
uv tool run --from 'coverage[toml]==7.10.6' coverage xml
- codecov/upload:
file: ./coverage.xml
Expand Down Expand Up @@ -2426,8 +2360,6 @@ workflows:
filters: *main_branches
- realtime_translation_testing:
filters: *main_branches
- mcp_testing:
filters: *main_branches
- agent_testing:
filters: *main_branches
- guardrails_testing:
Expand All @@ -2442,10 +2374,6 @@ workflows:
filters: *main_branches
- litellm_mapped_enterprise_tests:
filters: *main_branches
- litellm_mapped_tests_proxy_part1:
filters: *main_branches
- litellm_mapped_tests_proxy_part2:
filters: *main_branches
- batches_testing:
filters: *main_branches
- litellm_utils_testing:
Expand All @@ -2463,14 +2391,11 @@ workflows:
- upload-coverage:
requires:
- realtime_translation_testing
- mcp_testing
- agent_testing
- google_generate_content_endpoint_testing
- guardrails_testing
- ocr_testing
- search_testing
- litellm_mapped_tests_proxy_part1
- litellm_mapped_tests_proxy_part2
- litellm_mapped_enterprise_tests
- batches_testing
- litellm_utils_testing
Expand Down
Binary file added .github/screenshots/after_org_assigned.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/screenshots/after_org_detail.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/screenshots/before_403_error.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/screenshots/before_no_org.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
37 changes: 18 additions & 19 deletions .github/workflows/_test-unit-services-base.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,41 +32,39 @@ on:
required: false
type: boolean
default: false
dist:
description: "pytest-xdist distribution mode (loadscope|load|worksteal|loadfile|no)"
required: false
type: string
default: "loadscope"
artifact-name:
description: "Unique name for the coverage artifact (must be unique per run)"
required: false
type: string
default: "run"
secrets:
DATABASE_URL:
required: false
POSTGRES_USER:
required: false
POSTGRES_PASSWORD:
required: false

permissions:
contents: read

# The postgres service container below is spawned per-job on localhost and
# destroyed with the job. Nothing outside the runner can reach it. The
# user/password/database here are not secrets — they're bootstrap values
# for a throwaway container — so we hardcode them instead of attaching
# every matrix shard to a GHA environment just to read three "secrets"
# (which also produces a "temporarily deployed to …" notification on the
# PR timeline per shard per push).
jobs:
run:
name: Run tests
runs-on: ubuntu-latest
timeout-minutes: ${{ inputs.timeout-minutes }}
# Environment is derived from the enable-* flags, not caller-controllable.
# This prevents callers from passing arbitrary environment names to bypass secret scoping.
environment: >-
${{
inputs.enable-postgres && 'integration-postgres' ||
''
}}

services:
postgres:
image: postgres@sha256:705a5d5b5836f3fcba0d02c4d281e6a7dd9ed2dd4078640f08a1e1e9896e097d # postgres:14
env:
POSTGRES_USER: ${{ secrets.POSTGRES_USER }}
POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
POSTGRES_USER: litellm
POSTGRES_PASSWORD: litellm
POSTGRES_DB: litellm_test
ports:
- 5432:5432
Expand Down Expand Up @@ -114,7 +112,7 @@ jobs:
- name: Run Prisma migrations
if: ${{ inputs.enable-postgres }}
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
DATABASE_URL: "postgresql://litellm:litellm@localhost:5432/litellm_test"
run: |
uv run --no-sync prisma db push --schema litellm/proxy/schema.prisma --accept-data-loss

Expand All @@ -124,7 +122,8 @@ jobs:
MAX_FAILURES: ${{ inputs.max-failures }}
WORKERS: ${{ inputs.workers }}
RERUNS: ${{ inputs.reruns }}
DATABASE_URL: ${{ inputs.enable-postgres && secrets.DATABASE_URL || '' }}
DIST: ${{ inputs.dist }}
DATABASE_URL: ${{ inputs.enable-postgres && 'postgresql://litellm:litellm@localhost:5432/litellm_test' || '' }}
run: |
if [ "${WORKERS}" = "0" ]; then
uv run --no-sync pytest ${TEST_PATH:?} \
Expand All @@ -143,7 +142,7 @@ jobs:
-n "${WORKERS}" \
--reruns "${RERUNS}" \
--reruns-delay 1 \
--dist=loadscope \
--dist="${DIST}" \
--durations=20 \
--cov=litellm \
--cov-report=xml:coverage.xml \
Expand Down
140 changes: 140 additions & 0 deletions .github/workflows/guard-fork-dependencies.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
name: Guard fork dependency changes

on:
pull_request:
branches:
- main
- litellm_internal_staging
- litellm_oss_branch
- "litellm_**"
paths:
- "uv.lock"
- "pyproject.toml"
- "litellm-proxy-extras/pyproject.toml"
- "enterprise/pyproject.toml"

permissions: {}

jobs:
guard:
name: Block fork dependency changes
runs-on: ubuntu-latest
timeout-minutes: 5
if: github.event.pull_request.head.repo.full_name != github.repository
steps:
- name: Checkout base branch
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
ref: ${{ github.base_ref }}
persist-credentials: false
path: base

- name: Checkout PR head (read-only)
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
persist-credentials: false
path: pr

- name: Reject uv.lock changes
run: |
if ! diff -q base/uv.lock pr/uv.lock >/dev/null 2>&1; then
echo "::error::Fork PRs must not modify uv.lock. Dependency lockfile changes must come from a branch in the canonical repository."
exit 1
fi
echo "uv.lock is unchanged."

- name: Reject new dependencies in pyproject.toml files
shell: bash
run: |
set -euo pipefail

# Write the checker script to a temp file to avoid shell quoting issues.
cat > /tmp/extract_deps.py << 'SCRIPT'
import re
import sys
import tomllib


def normalize(name: str) -> str:
return re.sub(r"[-_.]+", "-", name).lower()


def extract_dep_names(path: str) -> set[str]:
with open(path, "rb") as f:
data = tomllib.load(f)

deps: set[str] = set()
pep508 = re.compile(r"^([A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?)")

# [project].dependencies
for spec in data.get("project", {}).get("dependencies", []):
m = pep508.match(spec)
if m:
deps.add(normalize(m.group(1)))

# [project.optional-dependencies]
for group in data.get("project", {}).get("optional-dependencies", {}).values():
for spec in group:
m = pep508.match(spec)
if m:
deps.add(normalize(m.group(1)))

# [dependency-groups]
for group in data.get("dependency-groups", {}).values():
for item in group:
if isinstance(item, str):
m = pep508.match(item)
if m:
deps.add(normalize(m.group(1)))

return deps


if __name__ == "__main__":
for name in sorted(extract_dep_names(sys.argv[1])):
print(name)
SCRIPT

had_error=0

check_deps() {
local base_file="$1"
local pr_file="$2"
local label="$3"

if [ ! -f "$base_file" ] && [ ! -f "$pr_file" ]; then
return 0
fi

if [ ! -f "$base_file" ] && [ -f "$pr_file" ]; then
echo "::error::Fork PR introduces a new $label that does not exist on the base branch."
return 1
fi

base_deps=$(python3 /tmp/extract_deps.py "$base_file")
pr_deps=$(python3 /tmp/extract_deps.py "$pr_file")

new_deps=$(comm -13 <(echo "$base_deps") <(echo "$pr_deps"))

if [ -n "$new_deps" ]; then
echo "::error::Fork PR adds new dependencies in $label: $(echo $new_deps | tr '\n' ', ')"
echo "New packages detected:"
echo "$new_deps"
return 1
fi

echo "$label: no new dependencies."
return 0
}

check_deps base/pyproject.toml pr/pyproject.toml "pyproject.toml" || had_error=1
check_deps base/litellm-proxy-extras/pyproject.toml pr/litellm-proxy-extras/pyproject.toml "litellm-proxy-extras/pyproject.toml" || had_error=1
check_deps base/enterprise/pyproject.toml pr/enterprise/pyproject.toml "enterprise/pyproject.toml" || had_error=1

if [ "$had_error" -ne 0 ]; then
echo ""
echo "::error::Fork PRs must not add new dependencies. Please open an issue or coordinate with a maintainer to update dependencies from within the canonical repository."
exit 1
fi

echo "All pyproject.toml files passed dependency check."
12 changes: 2 additions & 10 deletions .github/workflows/test-code-quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,21 +25,13 @@ jobs:
with:
persist-credentials: false

- name: Checkout litellm-docs (for documentation_tests)
- name: Checkout litellm-docs into docs/my-website (for documentation_tests)
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
repository: BerriAI/litellm-docs
path: _litellm_docs_checkout
path: docs/my-website
persist-credentials: false

- name: Wire up docs path expected by documentation_tests/*
run: |
# documentation_tests scripts read from docs/my-website/docs/...
# In litellm-docs the same files live at docs/... (repo root).
# Point docs/my-website -> litellm-docs checkout so the paths resolve.
rm -rf docs/my-website
ln -s ../_litellm_docs_checkout docs/my-website

- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
Expand Down
Loading
Loading