Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
4859 commits
Select commit Hold shift + click to select a range
b39748d
[Fix] Update gemini-2.0-flash to gemini-2.5-flash in test_gemini inte…
yuneng-berri Mar 30, 2026
bcfa535
Merge pull request #24817 from BerriAI/litellm_/strange-jackson
yuneng-berri Mar 30, 2026
4332a0b
Merge pull request #24812 from BerriAI/litellm_/objective-mendel
yuneng-berri Mar 30, 2026
f2deefe
Merge pull request #24814 from BerriAI/litellm_/agitated-montalcini
yuneng-berri Mar 30, 2026
6522d28
[Fix] Correct kwarg name in test_user_api_key_auth tests
yuneng-berri Mar 30, 2026
87debe6
test_litellm_overhead_non_streaming
ishaan-jaff Mar 30, 2026
dd75434
remove - outdated test
ishaan-jaff Mar 30, 2026
c569d1f
Merge pull request #24820 from BerriAI/litellm_fix_test_kwarg_name
yuneng-berri Mar 30, 2026
431782c
test azure blob storage
ishaan-jaff Mar 30, 2026
bae3dcd
test_get_credentials_from_env
ishaan-jaff Mar 30, 2026
e8c860d
test fix
ishaan-jaff Mar 30, 2026
4c00a14
fix: fix ci/cd + handle oidc jwt tokens
krrish-berri-2 Mar 30, 2026
899b571
TestAzureAIFlux2ImageEdit
ishaan-jaff Mar 30, 2026
7b532fd
test: cleanup tests
krrish-berri-2 Mar 30, 2026
c7e2bfc
fix: cleanup tests
krrish-berri-2 Mar 30, 2026
37bcc32
test_completion_gpt4_turbo
ishaan-jaff Mar 30, 2026
98de60e
test_completion_gpt4_turbo
ishaan-jaff Mar 30, 2026
3a0ebda
test snowflake
ishaan-jaff Mar 30, 2026
a449e32
test_completion_cloudflare
ishaan-jaff Mar 30, 2026
42efaa5
test fix
ishaan-jaff Mar 30, 2026
28afbc1
test_async_gcs_pub_sub_v1
ishaan-jaff Mar 30, 2026
443566d
test fixes
ishaan-jaff Mar 30, 2026
aa061d0
fix: fix test
krrish-berri-2 Mar 31, 2026
c2aec08
test: fix test
krrish-berri-2 Mar 31, 2026
770f5ce
test: fix test assertion
krrish-berri-2 Mar 31, 2026
6c3de43
test_enterprise_custom_auth_returns_string
ishaan-jaff Mar 31, 2026
13b7c2e
test: update testing
krrish-berri-2 Mar 31, 2026
9d4090b
test fix - remove tests that were skipped
ishaan-jaff Mar 31, 2026
ee4ded4
Merge pull request #24445 from quora/fix/missing-content-part-added
krrish-berri-2 Mar 31, 2026
7844571
test GCS BUCKET
ishaan-jaff Mar 31, 2026
5596728
Merge pull request #24753 from BerriAI/litellm_dev_03_27_2026_p1
krrish-berri-2 Mar 31, 2026
facb230
test_create_vertex_fine_tune_jobs_mocked
ishaan-jaff Mar 31, 2026
949a395
test: use env var azure model router api base
krrish-berri-2 Mar 31, 2026
19f8b58
[Test] Move mocked Snowflake chat completion tests to unit test direc…
yuneng-berri Mar 31, 2026
2b374a2
Merge main and resolve Snowflake test conflict
yuneng-berri Mar 31, 2026
74008e3
test: cleanup test impacted by deployment name change
krrish-berri-2 Mar 31, 2026
83dc158
test fix
ishaan-jaff Mar 31, 2026
e17acd6
test: make tests smarter
krrish-berri-2 Mar 31, 2026
0298c1f
test_basic_s3_v2_logging
ishaan-jaff Mar 31, 2026
7cc997b
Merge pull request #24822 from BerriAI/litellm_/romantic-galileo
ishaan-berri Mar 31, 2026
05ecfa3
[Fix] Use correct Redis env vars and fix Azure AD token test mocking
yuneng-berri Mar 31, 2026
57c0545
chore: fixes
jaydns Mar 31, 2026
7e93256
test_bedrock_document_understanding
ishaan-jaff Mar 31, 2026
e69dfbc
Merge main and resolve conflict in test_router_client_init.py
yuneng-berri Mar 31, 2026
89091e4
test: fix assemblyai passthrough transcription request format
krrish-berri-2 Mar 31, 2026
7954d1a
test_azure_ai_model_router_streaming_cost_with_stream_options
ishaan-jaff Mar 31, 2026
40074ff
Merge pull request #24824 from BerriAI/litellm_fix_test_redis_and_azu…
krrish-berri-2 Mar 31, 2026
9ca1560
chore: fix test
jaydns Mar 31, 2026
c6f1f8b
fix: move to new vertex credentials
krrish-berri-2 Mar 31, 2026
0cf4b05
test: remove bad e2e tests - e2e failing due to low rate limits on ci/cd
krrish-berri-2 Mar 31, 2026
86dd36e
[Fix] Initialize customLogger in failure handlers to ensure callbacks…
yuneng-berri Mar 31, 2026
632beb0
fix new_budget
ishaan-jaff Mar 31, 2026
3308fb9
Merge remote-tracking branch 'origin/main' into litellm_/dazzling-jac…
yuneng-berri Mar 31, 2026
37440c2
test: use dynamic db
krrish-berri-2 Mar 31, 2026
5d6c76a
Merge pull request #24823 from jaydns/fixes
krrish-berri-2 Mar 31, 2026
35742bc
Merge pull request #24827 from BerriAI/litellm_use_dynamic_db
krrish-berri-2 Mar 31, 2026
3fbe7d1
prisma_schema_sync
ishaan-jaff Mar 31, 2026
f1e7aa9
db_migration_disable_update_check
ishaan-jaff Mar 31, 2026
4f42e78
bump: litellm-proxy-extras 0.4.61 β†’ 0.4.62 for schema changes
krrish-berri-2 Mar 31, 2026
ead71c9
Merge pull request #24826 from BerriAI/litellm_/dazzling-jackson
ishaan-berri Mar 31, 2026
5c1f2e0
Merge pull request #24828 from BerriAI/claude/infallible-mahavira
krrish-berri-2 Mar 31, 2026
81028b9
use mock tests for assembly AI
ishaan-jaff Mar 31, 2026
f636c3b
pin axios
ishaan-jaff Mar 31, 2026
360c4f4
Merge pull request #24829 from BerriAI/litellm_pin_axios
ishaan-berri Mar 31, 2026
1746d39
fix: fix linting errors
krrish-berri-2 Mar 31, 2026
cbd6253
test: skip chromium/firefox check - TODO: move to a dynamic db
krrish-berri-2 Mar 31, 2026
9b46d88
test_completion_azure
ishaan-jaff Mar 31, 2026
a7bfe0c
test_completion_azure
ishaan-jaff Mar 31, 2026
8c6a67d
test_bedrock_embedding_cohere
ishaan-jaff Mar 31, 2026
669d2a6
test_router_init_azure_service_principal_with_secret_with_environment…
ishaan-jaff Mar 31, 2026
b48c037
test: replace test_add_and_delete_models integration test with mock
yuneng-berri Mar 31, 2026
3034ac2
fix
ishaan-jaff Mar 31, 2026
823e7b2
test_completion_azure
ishaan-jaff Mar 31, 2026
e014dfb
fix: mock encrypt_value_helper in lifecycle test
yuneng-berri Mar 31, 2026
d259892
test fix
ishaan-jaff Mar 31, 2026
77e6546
Merge pull request #24837 from BerriAI/lllm_build_and_test_fail
ishaan-berri Mar 31, 2026
be553c7
fix aporia
ishaan-jaff Mar 31, 2026
0ea0546
test_completion_azure
ishaan-jaff Mar 31, 2026
ee4116a
docs: cleanup docs
krrish-berri-2 Mar 31, 2026
6a23fab
bump version to 1.83.0, litellm-proxy-extras to 0.4.62
yuneng-berri Mar 31, 2026
51830de
update poetry.lock for version bump
yuneng-berri Mar 31, 2026
f0518c1
Merge pull request #24840 from BerriAI/litellm_version_bump_1_83_0
ishaan-berri Mar 31, 2026
08be1e5
Merge pull request #24839 from BerriAI/litellm_new_ci_cd_improvements
krrish-berri-2 Mar 31, 2026
9942d59
fix(lint): apply Black formatting to 14 files (#24532)
joereyna Mar 31, 2026
d47faaa
docs: update security update, with new release information
krrish-berri-2 Mar 31, 2026
50a52f6
fix: fix wording
krrish-berri-2 Mar 31, 2026
5435858
Update security.md
ishaan-berri Mar 31, 2026
26e9b0e
Merge pull request #24867 from BerriAI/ishaan-berri-patch-1
ishaan-berri Mar 31, 2026
1110a20
Update security.md
ishaan-berri Mar 31, 2026
7833eee
Merge pull request #24868 from BerriAI/ishaan-berri-patch-1
ishaan-berri Mar 31, 2026
7046a58
docs: tell people to report security issues on github - easier tracking
krrish-berri-2 Mar 31, 2026
4b5ca49
fix: map file_url -> file_id in Responses->Completions translation
ishaan-jaff Mar 31, 2026
a8e002d
Merge branch 'main' into fix-schema-drift
ishaan-berri Mar 31, 2026
ca316f0
chore: update security.md (#24871)
stuxf Mar 31, 2026
134b01d
Merge pull request #24078 from vanhtuan0409/fix-schema-drift
ishaan-berri Mar 31, 2026
7066c89
chore: harden npm supply chain β€” pin overrides, enforce npm ci, add i…
stuxf Mar 31, 2026
0112e53
[Infra] Add release workflow and cosign public key
yuneng-berri Mar 31, 2026
b587b41
docs v1.83.0
ishaan-jaff Mar 31, 2026
c86cf98
Merge pull request #24877 from BerriAI/litellm_release_action
ishaan-berri Mar 31, 2026
5ebc7b5
docs fix
ishaan-jaff Mar 31, 2026
05368d9
[Infra] Add cosign verification section to release notes
yuneng-berri Mar 31, 2026
d12f849
fix: resolve CodeQL high-severity alerts in UI components
stuxf Mar 31, 2026
8071691
[Fix] Address review feedback on release workflow
yuneng-berri Mar 31, 2026
83546cc
docs: JWT β†’ Virtual Key Mapping guide
ishaan-jaff Mar 31, 2026
d3175a8
docs: link JWT β†’ Virtual Key Mapping from token_auth page
ishaan-jaff Mar 31, 2026
f357177
docs: add jwt_key_mapping to sidebar under Authentication
ishaan-jaff Mar 31, 2026
64ec11d
docs: fix unused import, clarify Claude Code JWT env var
ishaan-jaff Mar 31, 2026
cbb84b6
docs: add mermaid sequence diagram for JWT β†’ key resolution flow
ishaan-jaff Mar 31, 2026
94e0f44
Merge pull request #24882 from BerriAI/worktree-piped-exploring-patte…
ishaan-berri Mar 31, 2026
d38498c
Re-add Codecov coverage upload to GHA matrix workflow
joereyna Mar 30, 2026
b3eee71
Pin codecov-action to immutable SHA (v5.5.4)
joereyna Mar 30, 2026
8358650
Isolate Codecov upload into separate job to protect CODECOV_TOKEN
joereyna Mar 30, 2026
aaa5973
Use OIDC for Codecov upload instead of static token
joereyna Mar 31, 2026
1366057
Add pull-requests write permission for Codecov PR comments
joereyna Mar 31, 2026
b55b3cf
Add pytest-cov to poetry.lock
joereyna Mar 31, 2026
4d7045d
Fix coverage path mismatch for Codecov
joereyna Mar 31, 2026
e7e0637
Fix coverage source paths for Codecov
joereyna Mar 31, 2026
a8a3eb9
Fix Codecov path prefix via fixes directive
joereyna Mar 31, 2026
0687ebb
Fix coverage paths: use absolute->relative remapping for Codecov
joereyna Mar 31, 2026
57c22d3
Add debug step to inspect coverage XML paths
joereyna Mar 31, 2026
fdfd0e5
Force coverage path remapping via explicit coverage xml step
joereyna Mar 31, 2026
b8eac30
Measure coverage from repo root so filenames include litellm/ prefix
joereyna Mar 31, 2026
695d726
Revert to --cov=litellm, add checkout and root_dir to upload job
joereyna Mar 31, 2026
98a51e0
Remove debug step from upload-coverage job
joereyna Mar 31, 2026
c903845
Use unique filenames per matrix job to preserve all coverage reports
joereyna Mar 31, 2026
a320dcc
Merge pull request #24881 from BerriAI/litellm_release_action
yuneng-berri Apr 1, 2026
2f1cfb0
Merge pull request #24751 from BerriAI/litellm_ryan-march-28
ryan-crabbe-berri Apr 1, 2026
33c3f13
Merge pull request #24880 from stuxf/fix/codeql-ui-alerts
yuneng-berri Apr 1, 2026
5f63873
[Infra] Pin all Docker build dependencies to exact versions
yuneng-berri Apr 1, 2026
296dd3e
[Infra] Fix pyproject.toml pins for Poetry Python 3.9 compatibility
yuneng-berri Apr 1, 2026
62b3769
[Infra] Update poetry.lock with pinned dependencies
yuneng-berri Apr 1, 2026
283375f
fix(proxy): eliminate race condition in streaming guardrail_informati…
michelligabriele Apr 1, 2026
7b277d3
[Fix] Fix test failures and Docker build from pinned dependency upgrade
yuneng-berri Apr 1, 2026
0f88968
Merge pull request #24804 from joereyna/feat/add-codecov-to-ci
yuneng-berri Apr 1, 2026
7bd6fa8
[Fix] Add hf-xet to authorized packages in license check
yuneng-berri Apr 1, 2026
6a2b03a
[Infra] Merge main and resolve dependency pin conflicts
yuneng-berri Apr 1, 2026
0d637b1
[Fix] Align requirements.txt versions with pyproject.toml after merge
yuneng-berri Apr 1, 2026
c987bdb
fix lint problem (#24932)
clfhhc Apr 1, 2026
e4442a4
test fix us.anthropic.claude-haiku-4-5-20251001-v1:0 (#24931)
ishaan-berri Apr 1, 2026
43077af
[Fix] Sync CircleCI dependency pins with requirements.txt
yuneng-berri Apr 1, 2026
467abd1
[Fix] Add uv override for boto3/aioboto3 botocore conflict
yuneng-berri Apr 1, 2026
b7849bf
[Fix] Add boto3 override alongside botocore in uv-overrides.txt
yuneng-berri Apr 1, 2026
fc8eb81
[Fix] Filter aioboto3 from resolver to fix boto3/aioboto3 conflict
yuneng-berri Apr 1, 2026
821a634
[Fix] Handle boto3/aioboto3 botocore conflict across CI and Docker bu…
yuneng-berri Apr 1, 2026
9c6d5f2
[Fix] Add aioitertools and wrapt to authorized licenses
yuneng-berri Apr 1, 2026
85f72c9
[Fix] Remove unused aioboto3 dependency and botocore conflict workaro…
yuneng-berri Apr 1, 2026
0fb5ab5
[Fix] Revert cryptography to 43.0.3 in pyproject.toml for Python 3.9.…
yuneng-berri Apr 1, 2026
d038093
add poetry lock
yuneng-berri Apr 1, 2026
7250cba
Merge pull request #24905 from BerriAI/litellm_pin_pip_2
yuneng-berri Apr 1, 2026
006d481
[Fix] Remove neon CLI dependency and pin all JS dependencies
yuneng-berri Apr 1, 2026
adedae2
fix(auth): enforce budget for models not in cost map (#24949)
michelligabriele Apr 2, 2026
d1df4e8
Litellm fix update bedrock models (#24947)
clfhhc Apr 2, 2026
f626587
feat(teams): resolve access group models/MCPs/agents in team endpoints
ryan-crabbe-berri Apr 2, 2026
068e6e2
Merge pull request #24951 from BerriAI/litellm_remove_neon_cli
yuneng-berri Apr 2, 2026
cae8613
Announce April Townhall (#25021)
krrish-berri-2 Apr 2, 2026
51af6fe
[Infra] Harden supply chain: remove unused scripts, add pip binary-on…
yuneng-berri Apr 2, 2026
9c5fda4
Merge pull request #25023 from BerriAI/litellm_/fervent-noether
yuneng-berri Apr 2, 2026
bbe708b
perf(teams): single-pass access group resolution + asyncio.gather in …
ryan-crabbe-berri Apr 2, 2026
06df8ed
docs: cleanup (#25026)
krrish-berri-2 Apr 2, 2026
59b0910
docs: add default_team_params to config reference and update examples
ryan-crabbe-berri Apr 2, 2026
b7ccc5b
[Test Fix] fix gov pricing tests (#25022)
clfhhc Apr 2, 2026
c19a63e
docs: clarify that models sub-field only applies to SSO auto-created …
ryan-crabbe-berri Apr 2, 2026
3ad953e
bump: version 0.4.62 β†’ 0.4.63
yuneng-berri Apr 2, 2026
f0bd334
fix: lazy import get_access_object to break cyclic import + short-cir…
ryan-crabbe-berri Apr 2, 2026
f11cdf7
Merge pull request #25034 from BerriAI/extras_apr2
shin-berri Apr 2, 2026
3604b60
[Infra] Merge internal dev branch with main (#25036)
yuneng-berri Apr 2, 2026
7a27434
feat(ui): add submit guardrail form to Submitted Guardrails tab
ryan-crabbe-berri Apr 3, 2026
fa629c3
[Fix] Dockerfile.non_root: install node-gyp for npm ci
yuneng-berri Apr 3, 2026
d4813a2
adding poetry lock
yuneng-berri Apr 3, 2026
fe8cc10
feat: wire submit guardrail form to POST /guardrails/register
ryan-crabbe-berri Apr 3, 2026
4094801
Merge pull request #25037 from BerriAI/litellm_fix_non_root_docker_build
yuneng-berri Apr 3, 2026
0d60285
feat: wire guardrail submission to backend and allow internal user ac…
ryan-crabbe-berri Apr 3, 2026
adb7454
fix: address review feedback on guardrail registration
ryan-crabbe-berri Apr 3, 2026
ee3e848
allow hashed token_id in /key/update endpoint (#24969)
joereyna Apr 3, 2026
1e5b79d
[Bedrock] Fix Anthropic file_id support - async path + document URLβ†’b…
ishaan-berri Apr 3, 2026
52a596d
Bedrock Model Updates 2026-03-26 (#24645)
marty-sullivan Apr 3, 2026
a6dfd02
fix(guardrails): return HTTP 400 instead of 500 for Model Armor strea…
michelligabriele Apr 3, 2026
50f4fde
bump: version 1.83.0 β†’ 1.83.1 (#25054)
yuneng-berri Apr 3, 2026
d4a3a5e
fix gpt-5.4 pricing (#24748)
mubashir1osmani Apr 3, 2026
a287154
fix(ui): migrate guardrails tabs to antd and fix internal user view
ryan-crabbe-berri Apr 3, 2026
6cc56f5
Fix broken codeql-action SHA in scorecard workflow
joereyna Apr 3, 2026
5a8f910
add: making organizations a select instead of read only badges
ryan-crabbe-berri Apr 3, 2026
1bb726a
fix(ui): only send organization_id when changed and use raw initial v…
ryan-crabbe-berri Apr 3, 2026
fc885af
docs(blog): add security hardening April 2026 post (#25101) (#25102)
ishaan-berri Apr 3, 2026
cd7b262
fix(ui): add paginated team search to usage page filter
ryan-crabbe-berri Apr 3, 2026
1533f68
fix(ui): fix imports and update placeholder for team multi select
ryan-crabbe-berri Apr 3, 2026
c6aa3ea
Litellm ishaan april1 try2 (#25110)
ishaan-berri Apr 3, 2026
a86f19f
bump: version 1.83.1 β†’ 1.83.2
ishaan-berri Apr 3, 2026
48d4dec
Merge pull request #25112 from BerriAI/worktree-vast-swinging-goose
yuneng-berri Apr 3, 2026
96b660b
fix(ui): wire team_id filter to key alias dropdown on Virtual Keys tab
ryan-crabbe-berri Apr 3, 2026
1521004
Merge pull request #25114 from BerriAI/litellm_fix-virtual-keys-team-…
ryan-crabbe-berri Apr 3, 2026
0575c3f
Merge pull request #25107 from BerriAI/litellm_fix-team-id-search-filter
ryan-crabbe-berri Apr 3, 2026
20077fe
Merge pull request #25095 from BerriAI/litellm_fix-ui-update-org-teams
ryan-crabbe-berri Apr 3, 2026
eb780a8
Merge pull request #25032 from BerriAI/litellm_docs-default-team-params
ryan-crabbe-berri Apr 3, 2026
38f6c94
fix(tests): correct mock targets in TestResolveAccessGroupResources
ryan-crabbe-berri Apr 3, 2026
ea32cb5
fix: use direct attribute access with or [] fallback in _resolve_acce…
ryan-crabbe-berri Apr 3, 2026
3bdd042
fix(ui): remove model source legend from team detail view
ryan-crabbe-berri Apr 3, 2026
bb03a11
fix(ui): add missing access_group fields to TeamData.team_info type
ryan-crabbe-berri Apr 3, 2026
93369bf
perf(teams): batch-fetch access groups in single DB query
ryan-crabbe-berri Apr 4, 2026
0331fb5
Merge pull request #25027 from BerriAI/litellm_add-access-group-to-model
ryan-crabbe-berri Apr 4, 2026
127149c
bump litellm-proxy-extras to 0.4.64 (#25121)
ishaan-berri Apr 4, 2026
f74cd07
feat(proxy): add project-level guardrails support (#25087)
michelligabriele Apr 4, 2026
a292add
fix(a2a): preserve JSON-RPC envelope for AgentCore A2A-native agents …
michelligabriele Apr 4, 2026
4c1ef42
feat(ui): add guardrails support to project create/edit forms (#25100)
michelligabriele Apr 4, 2026
a5322c6
Merge pull request #24815 from joereyna/feat/re-add-codecov-ci
yuneng-berri Apr 4, 2026
ce219fc
refactor(proxy): extract helpers to fix PLR0915 violations
ryan-crabbe-berri Apr 4, 2026
866c4a2
test(ui): update tests to match new team_id / access-group signatures
ryan-crabbe-berri Apr 4, 2026
c495acd
fix(ui): send null (not '') for cleared organization_id on team update
ryan-crabbe-berri Apr 4, 2026
ad203dc
poetry
ryan-crabbe-berri Apr 4, 2026
ad81892
Merge remote-tracking branch 'origin/main' into litellm_ryan-march-31
ryan-crabbe-berri Apr 4, 2026
76c0591
chore: regen poetry.lock for litellm-proxy-extras 0.4.64 bump
ryan-crabbe-berri Apr 4, 2026
fa9e3d8
Merge pull request #25119 from BerriAI/litellm_ryan-march-31
yuneng-berri Apr 4, 2026
91d8873
fix(ui): don't overwrite vector_store_ids with empty array on model edit
ryan-crabbe-berri Apr 4, 2026
fba3bbe
test(ui): add regression test for vector_store_ids edit-model bug
ryan-crabbe-berri Apr 4, 2026
1e414b5
chore: update Next.js build artifacts (2026-04-04 17:55 UTC, node v22…
yuneng-berri Apr 4, 2026
445c1fa
fix(ui): preserve clear-vector-stores intent on model edit
ryan-crabbe-berri Apr 4, 2026
c898edb
Merge pull request #25136 from BerriAI/ui_build_apr4
yuneng-berri Apr 4, 2026
baeda23
feat(ui): expose Azure Entra ID credential fields in provider form
ryan-crabbe-berri Apr 4, 2026
2488639
Merge pull request #25133 from BerriAI/litellm_fix-vector-store-id-mo…
yuneng-berri Apr 4, 2026
4c06e43
Litellm ishaan april2 (#25113)
ishaan-berri Apr 4, 2026
11a43d6
feat(ui): add per-model rate limits to team edit/info views
ryan-crabbe-berri Apr 4, 2026
f0bbd41
fix(ui): require TPM or RPM when adding a per-model team rate limit
ryan-crabbe-berri Apr 4, 2026
9dca431
fix(ui): use entity key for export instead of extracting team_id from…
ryan-crabbe-berri Mar 31, 2026
08df864
fix(docker): include enterprise bridge in non-root runtime image (#24…
Sameerlite Apr 4, 2026
8e6300f
fix: replace unsupported Prisma JSON path filter in _get_team_deploym…
yuneng-berri Apr 4, 2026
566a041
test: add unit tests for _get_team_deployments filtering logic
yuneng-berri Apr 4, 2026
5452692
test(ui): align EntityUsageExport tests with entity-key display logic
ryan-crabbe-berri Apr 4, 2026
b53cfe7
Litellm ishaan march30 (#24887) (#25151)
ishaan-berri Apr 4, 2026
90b9a2f
Merge pull request #25152 from BerriAI/litellm_fix_team_model_update_…
yuneng-berri Apr 4, 2026
8d9e5ff
Litellm team model group name routing fix (#25148) (#25154)
ishaan-berri Apr 4, 2026
ab9c875
feat: scope guardrail submissions to team members
ryan-crabbe-berri Apr 4, 2026
5187629
Litellm ishaan april4 2 (#25150)
ishaan-berri Apr 4, 2026
79064a6
fix: allow non-admin access to /guardrails/submissions and fix regist…
ryan-crabbe-berri Apr 4, 2026
8b8f5ce
Merge pull request #25137 from BerriAI/litellm_feat-azure-entra-id
ryan-crabbe-berri Apr 4, 2026
cc867f1
Merge pull request #25144 from BerriAI/litellm_feat-per-team-per-mode…
ryan-crabbe-berri Apr 4, 2026
55734ee
Merge pull request #25153 from BerriAI/litellm_fix-export
ryan-crabbe-berri Apr 4, 2026
c663926
Merge remote-tracking branch 'origin/main' into litellm_feat-add-guar…
ryan-crabbe-berri Apr 4, 2026
693ad49
Litellm ishaan march23 - MCP Toolsets + GCP Caching fix (#25146) (#2…
ishaan-berri Apr 4, 2026
a36fe70
test(ui): fix guardrails.test.tsx after antd Tabs migration
ryan-crabbe-berri Apr 4, 2026
e87f6ca
chore: poetry lock
ryan-crabbe-berri Apr 4, 2026
61b2952
cherry-pick: tag query fix + MCP metadata support (#25145)
ishaan-berri Apr 4, 2026
8ecbf75
Merge pull request #25038 from BerriAI/litellm_feat-add-guardrail
ryan-crabbe-berri Apr 4, 2026
6bc4b46
Merge pull request #25156 from BerriAI/litellm_ryan-apr-4
ryan-crabbe-berri Apr 4, 2026
3e90565
chore: update Next.js build artifacts (2026-04-04 23:58 UTC, node v22…
yuneng-berri Apr 5, 2026
eed8a38
bump: version 1.83.2 β†’ 1.83.3 (#25162)
yuneng-berri Apr 5, 2026
d2102e9
bump litellm-proxy-extras to 0.4.65 (#25163)
ishaan-berri Apr 5, 2026
1e66050
bump litellm-enterprise to 0.1.36 (#25164)
ishaan-berri Apr 5, 2026
cf045dc
fix: regenerate poetry.lock to match pyproject.toml (#25169)
ishaan-berri Apr 5, 2026
8a7de46
sync: merge v1.83.3-stable tag
Apr 14, 2026
9cd6f48
fix: resolve upstream sync conflicts for PR #104
github-actions[bot] Apr 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
2,280 changes: 766 additions & 1,514 deletions .circleci/config.yml

Large diffs are not rendered by default.

13 changes: 7 additions & 6 deletions .circleci/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@ cohere
redis==5.2.1
redisvl==0.4.1
anthropic
orjson==3.10.12 # fast /embedding responses
pydantic==2.11.0
google-cloud-aiplatform==1.43.0
orjson==3.10.15 # fast /embedding responses
pydantic==2.12.5
google-cloud-aiplatform==1.133.0
google-cloud-iam==2.19.1
fastapi-sso==0.16.0
uvloop==0.21.0
mcp==1.25.0 # for MCP server
mcp==1.26.0 # for MCP server
semantic_router==0.1.10 # for auto-routing with litellm
fastuuid==0.12.0
fastuuid==0.14.0
responses==0.25.7 # for proxy client tests
pytest-retry==1.6.3 # for automatic test retries
pytest-retry==1.6.3 # for automatic test retries
litellm-proxy-extras # for prisma migrations
2 changes: 1 addition & 1 deletion .devcontainer/post-create.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ echo "[post-create] Generating Prisma client"
poetry run prisma generate

echo "[post-create] Installing npm dependencies"
cd ui/litellm-dashboard && npm install --no-audit --no-fund
cd ui/litellm-dashboard && npm ci

echo "[post-create] Done"
2 changes: 1 addition & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ dist/
build/
*.egg-info/
.DS_Store
node_modules/
**/node_modules
*.log
.env
.env.local
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
blank_issues_enabled: true
contact_links:
- name: Schedule Demo
url: https://calendly.com/d/4mp-gd3-k5k/litellm-1-1-onboarding-chat
url: https://enterprise.litellm.ai/demo
about: Speak directly with Krrish and Ishaan, the founders, to discuss issues, share feedback, or explore improvements for LiteLLM
- name: Discord
url: https://discord.com/invite/wuPM9dRgDw
Expand Down
41 changes: 29 additions & 12 deletions .github/actions/helm-oci-chart-releaser/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,38 +40,55 @@ outputs:
runs:
using: composite
steps:
- name: Helm | Setup
uses: azure/setup-helm@1a275c3b69536ee54be43f2070a358922e12c8d4 # v4.3.1
with:
version: v3.20.0

- name: Helm | Login
shell: bash
run: echo ${{ inputs.registry_password }} | helm registry login -u ${{ inputs.registry_username }} --password-stdin ${{ inputs.registry }}
env:
HELM_EXPERIMENTAL_OCI: '1'

REGISTRY_PASSWORD: ${{ inputs.registry_password }}
REGISTRY_USERNAME: ${{ inputs.registry_username }}
REGISTRY: ${{ inputs.registry }}
run: echo "$REGISTRY_PASSWORD" | helm registry login -u "$REGISTRY_USERNAME" --password-stdin "$REGISTRY"

- name: Helm | Dependency
if: inputs.update_dependencies == 'true'
shell: bash
run: helm dependency update ${{ inputs.path == null && format('{0}/{1}', 'charts', inputs.name) || inputs.path }}
env:
HELM_EXPERIMENTAL_OCI: '1'
CHART_PATH: ${{ inputs.path == null && format('{0}/{1}', 'charts', inputs.name) || inputs.path }}
run: helm dependency update "$CHART_PATH"

- name: Helm | Package
shell: bash
run: helm package ${{ inputs.path == null && format('{0}/{1}', 'charts', inputs.name) || inputs.path }} --version ${{ inputs.tag }} --app-version ${{ inputs.app_version }}
env:
HELM_EXPERIMENTAL_OCI: '1'
CHART_PATH: ${{ inputs.path == null && format('{0}/{1}', 'charts', inputs.name) || inputs.path }}
TAG: ${{ inputs.tag }}
APP_VERSION: ${{ inputs.app_version }}
run: helm package "$CHART_PATH" --version "$TAG" --app-version "$APP_VERSION"

- name: Helm | Push
shell: bash
run: helm push ${{ inputs.name }}-${{ inputs.tag }}.tgz oci://${{ inputs.registry }}/${{ inputs.repository }}
env:
HELM_EXPERIMENTAL_OCI: '1'
NAME: ${{ inputs.name }}
TAG: ${{ inputs.tag }}
REGISTRY: ${{ inputs.registry }}
REPOSITORY: ${{ inputs.repository }}
run: helm push "${NAME}-${TAG}.tgz" "oci://${REGISTRY}/${REPOSITORY}"

- name: Helm | Logout
shell: bash
run: helm registry logout ${{ inputs.registry }}
env:
HELM_EXPERIMENTAL_OCI: '1'
REGISTRY: ${{ inputs.registry }}
run: helm registry logout "$REGISTRY"

- name: Helm | Output
id: output
shell: bash
run: echo "image=${{ inputs.registry }}/${{ inputs.repository }}/${{ inputs.name }}:${{ inputs.tag }}" >> $GITHUB_OUTPUT
env:
REGISTRY: ${{ inputs.registry }}
REPOSITORY: ${{ inputs.repository }}
NAME: ${{ inputs.name }}
TAG: ${{ inputs.tag }}
run: echo "image=${REGISTRY}/${REPOSITORY}/${NAME}:${TAG}" >> $GITHUB_OUTPUT
21 changes: 21 additions & 0 deletions .github/codeql/codeql-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: "LiteLLM CodeQL config"

queries:
- uses: security-and-quality

# Known OOM queries on large Python codebases:
# CodeQL builds a full data flow graph in memory. These two queries trace
# sensitive data through every log call / regex pattern, causing combinatorial
# path explosion on codebases with extensive logging like LiteLLM (>2 GiB
# result sets). This is a known CodeQL scaling limitation, not a code issue.
# Re-test periodically as CodeQL improves or the codebase refactors logging.
query-filters:
- exclude:
id: py/clear-text-logging-sensitive-data # CWE-312
- exclude:
id: py/polynomial-redos # CWE-730

paths-ignore:
- tests
- docs
- "**/*.md"
3 changes: 3 additions & 0 deletions .github/dependabot.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ updates:
directory: "/"
schedule:
interval: "daily"
cooldown:
default-days: 7
semver-major-days: 14
groups:
github-actions:
patterns:
Expand Down
19 changes: 19 additions & 0 deletions .github/observatory/litellm_config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# LiteLLM Observatory Test Configuration
# This config is used by CI to spin up a temporary LiteLLM instance
# for running observatory tests against RC/stable releases.
#
# Add model definitions for the providers you want to test.
# Provider API keys are injected via environment variables in CI.

model_list:
- model_name: gpt-4o
litellm_params:
model: azure/gpt-4o
api_key: os.environ/AZURE_API_KEY
api_base: os.environ/AZURE_API_BASE

- model_name: gpt-4o-mini
litellm_params:
model: azure/gpt-4o-mini
api_key: os.environ/AZURE_API_KEY
api_base: os.environ/AZURE_API_BASE
7 changes: 6 additions & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,14 @@

**Please complete all items before asking a LiteLLM maintainer to review your PR**

- [ ] I have Added testing in the [`tests/litellm/`](https://github.com/BerriAI/litellm/tree/main/tests/litellm) directory, **Adding at least 1 test is a hard requirement** - [see details](https://docs.litellm.ai/docs/extras/contributing_code)
- [ ] I have Added testing in the [`tests/test_litellm/`](https://github.com/BerriAI/litellm/tree/main/tests/test_litellm) directory, **Adding at least 1 test is a hard requirement** - [see details](https://docs.litellm.ai/docs/extras/contributing_code)
- [ ] My PR passes all unit tests on [`make test-unit`](https://docs.litellm.ai/docs/extras/contributing_code)
- [ ] My PR's scope is as isolated as possible, it only solves 1 specific problem
- [ ] I have requested a Greptile review by commenting `@greptileai` and received a **Confidence Score of at least 4/5** before requesting a maintainer review

## Delays in PR merge?

If you're seeing a delay in your PR being merged, ping the LiteLLM Team on [Slack (#pr-review)](https://join.slack.com/t/litellmossslack/shared_invite/zt-3o7nkuyfr-p_kbNJj8taRfXGgQI1~YyA).

## CI (LiteLLM team)

Expand Down
208 changes: 208 additions & 0 deletions .github/scripts/close_duplicate_issues.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
#!/usr/bin/env python3
"""
Detect and close duplicate GitHub issues using title similarity.

Modes:
--scan Compare all open issues against each other (batch)
--issue-number N Check a single issue against older open issues

Requires the `gh` CLI to be authenticated.
"""

import argparse
import difflib
import json
import re
import subprocess
import sys


def normalize_title(title: str) -> str:
"""Strip common prefixes, lowercase, and collapse whitespace."""
title = re.sub(
r"^\[?(bug|feature request|enhancement|question|docs)[:\]]?\s*",
"",
title,
flags=re.IGNORECASE,
)
return " ".join(title.lower().split())


def gh(*args: str) -> str:
"""Run a gh CLI command and return stdout."""
result = subprocess.run(
["gh", *args],
capture_output=True,
text=True,
check=True,
)
return result.stdout


def fetch_open_issues(repo: str | None) -> list[dict]:
"""Fetch all open issues (excluding PRs) via gh api --paginate."""
if repo:
endpoint = f"repos/{repo}/issues?state=open&per_page=100&sort=created&direction=asc"
else:
endpoint = "repos/{owner}/{repo}/issues?state=open&per_page=100&sort=created&direction=asc"
cmd = ["api", "--paginate", endpoint]

raw = gh(*cmd)
# gh --paginate concatenates JSON arrays, so we may get multiple arrays
issues = []
for line in raw.strip().splitlines():
line = line.strip()
if not line:
continue
parsed = json.loads(line)
if isinstance(parsed, list):
issues.extend(parsed)
else:
issues.append(parsed)

# Filter out pull requests (they also appear in the issues endpoint)
return [i for i in issues if "pull_request" not in i]


def close_as_duplicate(
issue_number: int, duplicate_of: int, repo: str | None, dry_run: bool
) -> None:
"""Close an issue as duplicate of another, adding a comment and label."""
repo_args = ["--repo", repo] if repo else []

if dry_run:
print(f" [DRY RUN] Would close #{issue_number} as duplicate of #{duplicate_of}")
return

# Add comment
comment_body = (
f"Closing as duplicate of #{duplicate_of}.\n\n"
"If you believe this is not a duplicate, please reopen and add context "
"explaining how this differs."
)
gh("issue", "comment", str(issue_number), "--body", comment_body, *repo_args)

# Add label
gh("issue", "edit", str(issue_number), "--add-label", "duplicate", *repo_args)

# Close with not_planned reason
gh(
"api",
f"repos/{repo or '{owner}/{repo}'}/issues/{issue_number}",
"-X",
"PATCH",
"-f",
"state=closed",
"-f",
"state_reason=not_planned",
)

print(f" Closed #{issue_number} as duplicate of #{duplicate_of}")


def find_duplicate(
issue: dict, candidates: list[dict], threshold: float
) -> dict | None:
"""Return the first candidate whose normalized title is above threshold."""
norm = normalize_title(issue["title"])
for candidate in candidates:
if candidate["number"] == issue["number"]:
continue
cand_norm = normalize_title(candidate["title"])
ratio = difflib.SequenceMatcher(None, norm, cand_norm).ratio()
if ratio >= threshold:
return candidate
return None


def scan_all(issues: list[dict], threshold: float, repo: str | None, dry_run: bool) -> int:
"""Compare every issue against all older issues. Returns count of duplicates found."""
# Sort oldest first
issues.sort(key=lambda i: i["number"])
closed_count = 0

for idx, issue in enumerate(issues):
older = issues[:idx]
if not older:
continue
dup = find_duplicate(issue, older, threshold)
if dup:
ratio = difflib.SequenceMatcher(
None,
normalize_title(issue["title"]),
normalize_title(dup["title"]),
).ratio()
print(
f"#{issue['number']}: \"{issue['title']}\"\n"
f" -> duplicate of #{dup['number']}: \"{dup['title']}\" "
f"({ratio:.0%} similar)"
)
close_as_duplicate(issue["number"], dup["number"], repo, dry_run)
closed_count += 1

return closed_count


def check_single(
issue_number: int, issues: list[dict], threshold: float, repo: str | None, dry_run: bool
) -> bool:
"""Check a single issue against all older open issues. Returns True if duplicate found."""
target = None
for i in issues:
if i["number"] == issue_number:
target = i
break

if target is None:
print(f"Issue #{issue_number} not found among open issues.")
return False

older = [i for i in issues if i["number"] < issue_number]
dup = find_duplicate(target, older, threshold)
if dup:
ratio = difflib.SequenceMatcher(
None,
normalize_title(target["title"]),
normalize_title(dup["title"]),
).ratio()
print(
f"#{target['number']}: \"{target['title']}\"\n"
f" -> duplicate of #{dup['number']}: \"{dup['title']}\" "
f"({ratio:.0%} similar)"
)
close_as_duplicate(issue_number, dup["number"], repo, dry_run)
return True

print(f"#{issue_number}: no duplicate found above threshold {threshold}")
return False


def main() -> None:
parser = argparse.ArgumentParser(description="Detect and close duplicate GitHub issues")
mode = parser.add_mutually_exclusive_group(required=True)
mode.add_argument("--scan", action="store_true", help="Scan all open issues")
mode.add_argument("--issue-number", type=int, help="Check a single issue number")
parser.add_argument("--threshold", type=float, default=0.85, help="Similarity threshold (0-1)")
parser.add_argument("--close", action="store_true", help="Actually close duplicates (default is dry-run)")
parser.add_argument("--repo", type=str, help="Repository (owner/repo). Auto-detected if omitted.")
args = parser.parse_args()

dry_run = not args.close

if dry_run:
print("=== DRY RUN MODE (pass --close to actually close issues) ===\n")

print("Fetching open issues...")
issues = fetch_open_issues(args.repo)
print(f"Found {len(issues)} open issues.\n")

if args.scan:
count = scan_all(issues, args.threshold, args.repo, dry_run)
print(f"\nTotal duplicates {'found' if dry_run else 'closed'}: {count}")
else:
found = check_single(args.issue_number, issues, args.threshold, args.repo, dry_run)
sys.exit(0 if found else 0) # Always exit 0; finding no dup is not an error


if __name__ == "__main__":
main()
Loading
Loading