Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
198 commits
Select commit Hold shift + click to select a range
8a0ddd4
[Test] UI - Add Playwright E2E tests with local PostgreSQL
yuneng-berri Apr 4, 2026
f53db7f
Merge remote-tracking branch 'origin/main' into litellm_ui_e2e_psql_pr
yuneng-berri Apr 4, 2026
9088b46
Litellm docs 1 83 3 (#25166)
ishaan-berri Apr 5, 2026
c5686b9
[Nit] Small docs fix, fixing img + folder name (#25171)
ishaan-berri Apr 5, 2026
d251238
docs: week 1 checklist (#25083)
mubashir1osmani Apr 5, 2026
1d3fb58
chore: fixes
yuneng-berri Apr 5, 2026
39c1042
[Docs] Add cosign Docker image verification steps to security blog po…
yuneng-berri Apr 6, 2026
ea4a61a
added applyguardrail to inline iam
shivamrawat1 Apr 6, 2026
a60e19a
Remove flaky proxy_e2e_azure_batches_tests CI workflow (#25247)
yuneng-berri Apr 6, 2026
d2d99aa
[Docs] Enforce Black Formatting in Contributor Docs (#25135)
yuneng-berri Apr 6, 2026
d132b1b
[Infra] Remove Redundant Matrix Unit Test Workflow (#25251)
yuneng-berri Apr 6, 2026
fdd2672
feat: add POST /team/permissions_bulk_update endpoint
ryan-crabbe-berri Apr 7, 2026
3ac61a5
Merge pull request #25239 from BerriAI/litellm_backfill-team-member-p…
ryan-crabbe-berri Apr 7, 2026
7a9a9f0
fix: batch-limit stale managed object cleanup to prevent 300K row UPD…
ishaan-berri Apr 7, 2026
4bcd4be
bump litellm-enterprise to 0.1.37 (#25265)
ishaan-berri Apr 7, 2026
03d9746
bump litellm version to 1.83.4 (#25266)
ishaan-berri Apr 7, 2026
3056558
[Infra] Pin cosign.pub verification to initial commit hash
yuneng-berri Apr 7, 2026
965879e
fix: address Greptile review comments
yuneng-berri Apr 7, 2026
54f4be6
Merge remote-tracking branch 'origin/main' into litellm_ui_e2e_psql_pr
yuneng-berri Apr 7, 2026
2bb7387
Litellm aws gov cloud mode support (#25254)
shivamrawat1 Apr 7, 2026
8c16bc0
Merge remote-tracking branch 'origin/main' into litellm_ui_e2e_psql_pr
yuneng-berri Apr 7, 2026
48a6823
fix(test): update check_responses_cost tests for _expire_stale_rows
yuneng-berri Apr 7, 2026
730ba0f
Merge pull request #25299 from BerriAI/litellm_fix_check_responses_co…
yuneng-berri Apr 7, 2026
ce75fde
Merge remote main into litellm_pin_cosign_pub_to_commit
yuneng-berri Apr 7, 2026
184050e
Merge remote main into litellm_ui_e2e_psql_pr
yuneng-berri Apr 7, 2026
23e1a7d
Merge pull request #25126 from BerriAI/litellm_ui_e2e_psql_pr
yuneng-berri Apr 7, 2026
537727f
[Fix] Dockerfile.non_root: handle missing .npmrc gracefully
yuneng-berri Apr 7, 2026
f3bc200
Merge pull request #25307 from BerriAI/litellm_/fix_npmrc_dockerfile
yuneng-berri Apr 7, 2026
bf8b615
fix(auth): support selective jwt override oauth2 routing (#25252)
milan-berri Apr 7, 2026
021429b
[Refactor] Align /v2/key/info response handling with v1
yuneng-berri Apr 7, 2026
096893e
Merge pull request #25273 from BerriAI/litellm_pin_cosign_pub_to_commit
yuneng-berri Apr 7, 2026
08f34aa
Merge pull request #25313 from BerriAI/litellm_align_v2_key_info_with_v1
yuneng-berri Apr 7, 2026
41407d0
Fix node-gyp symlink path after npm upgrade in Dockerfile
joereyna Apr 3, 2026
5f49f29
Merge pull request #25048 from joereyna/fix/dockerfile-node-gyp-path
yuneng-berri Apr 8, 2026
bd327db
bump: version 1.83.4 β†’ 1.83.5
yuneng-berri Apr 8, 2026
62757ff
Merge pull request #25316 from BerriAI/litellm_yj_apr7
shin-berri Apr 8, 2026
7b7f304
fix(mcp): block arbitrary command execution via stdio transport
Sameerlite Mar 26, 2026
ad31e79
fix(mcp): address Greptile review feedback
Sameerlite Mar 26, 2026
69be5be
fix(mcp): move inline imports to module level and enforce stdio allow…
Sameerlite Apr 8, 2026
65829f7
docs: document LITELLM_MCP_STDIO_EXTRA_COMMANDS in env reference
Sameerlite Apr 8, 2026
3a02c0a
[Infra] Migrate Redis caching tests from GHA to CircleCI
yuneng-berri Apr 8, 2026
0104b60
[Infra] Add redis_caching_coverage to coverage combine command
yuneng-berri Apr 8, 2026
2dac54b
Merge pull request #25343 from BerriAI/litellm_fix-mcp-stdio-rce3
yuneng-berri Apr 8, 2026
7ba0c69
[Fix] Install pytest-rerunfailures in redis caching CircleCI job
yuneng-berri Apr 8, 2026
d09d98a
[Feature] E2E UI tests: proxy-admin team and key management with CI i…
yuneng-berri Apr 8, 2026
a8f4f46
[Fix] Add missing test fixtures and address review feedback
yuneng-berri Apr 8, 2026
ac9ebdf
[Fix] Rename CI job to e2e_ui_testing and remove duplicate old job de…
yuneng-berri Apr 8, 2026
4ee7d42
[Fix] Restructure HTML files after UI build so extensionless routes w…
yuneng-berri Apr 8, 2026
467dbc4
[Fix] Remove old broken key tests superseded by proxy-admin/keys.spec.ts
yuneng-berri Apr 8, 2026
d871bce
Merge pull request #25354 from BerriAI/litellm_migrate_redis_tests_to…
shin-berri Apr 8, 2026
072d410
Merge pull request #25365 from BerriAI/litellm_e2e_ui_tests
yuneng-berri Apr 8, 2026
a881ac5
[Fix] UI: resolve CodeQL security alerts and Dockerfile.health_check …
yuneng-berri Apr 9, 2026
36bf337
fix(docker): add non-root USER and HEALTHCHECK to Dockerfile.custom_ui
yuneng-berri Apr 2, 2026
70a5c27
[Fix] Address review feedback on storage utility and Dockerfiles
yuneng-berri Apr 9, 2026
ac29118
Update docker/Dockerfile.custom_ui
yuneng-berri Apr 9, 2026
233870d
Add Ramp as a built-in generic API callback with docs (#23769)
kedarthakkar Apr 9, 2026
3a4ed48
fix(router): don't create litellm_metadata for non-Responses API call…
Sameerlite Apr 9, 2026
6e6f5be
feat(triton): add embedding usage estimation for self-hosted response…
Sameerlite Apr 9, 2026
6a0e0ce
fix(router): pass custom_llm_provider to get_llm_provider for unprefi…
Sameerlite Apr 9, 2026
f42ffed
Litellm oss staging 04 02 2026 p1 (#25055)
krrish-berri-2 Apr 9, 2026
97f722f
feat(cost): add baseten model api pricing entries (#25358)
Sameerlite Apr 9, 2026
20ed120
[Fix] Let setSecureItem propagate storage errors to callers
yuneng-berri Apr 9, 2026
cb057ad
fix(websearch_interception): ensure spend/cost logging runs when stre…
Sameerlite Apr 9, 2026
cd9c511
feat(proxy): add credential overrides per team/project via model_conf…
michelligabriele Apr 9, 2026
f6dde29
fix(responses-ws): append ?model= to backend WebSocket URL
joereyna Apr 9, 2026
3ac4333
fix(responses-ws): use urllib.parse to append model param, fix test m…
joereyna Apr 9, 2026
3a6db70
docs: add Docker Image Security Guide for cosign verification and dep…
krrish-berri-2 Apr 9, 2026
ce2add3
feat(mcp): add per-user OAuth token storage for interactive MCP flows
csoni-cweave Apr 9, 2026
1571f5e
fix(test): mock headers in test_completion_fine_tuned_model
joereyna Apr 9, 2026
d910a95
fix(proxy): improve input validation on management endpoints
jaydns Apr 9, 2026
7ebc144
Add file content streaming support for OpenAI and related utilities
harish876 Apr 9, 2026
afd46e7
format vertex test file
joereyna Apr 9, 2026
1310803
remove conftest patch. TODO: make a different PR for this
harish876 Apr 9, 2026
e7551a1
Merge pull request #25444 from joereyna/litellm_fix_vertex_fine_tuned…
yuneng-berri Apr 10, 2026
31f7501
added option to allow team user to see logs of team
shivamrawat1 Apr 10, 2026
288ccb3
resolved greptile comments
shivamrawat1 Apr 10, 2026
1f474d5
fix(proxy): spend logs RBACβ€”avoid common_utils cycle, tighten ownersh…
shivamrawat1 Apr 10, 2026
b6357cd
fix(proxy): reject non-admin spend log detail when DB is unavailable
shivamrawat1 Apr 10, 2026
2c0d20b
Merge pull request #25441 from csoni-cweave/per-user-mcp-oauth-token
ishaan-berri Apr 10, 2026
5c4915a
fix(proxy): pass-through multipart uploads and Bedrock custom body
shivamrawat1 Apr 10, 2026
ce75598
Merge pull request #25384 from BerriAI/litellm_/bold-pare
yuneng-berri Apr 10, 2026
4dc416e
fix(proxy): use parameterized query for combined_view token lookup
jaydns Apr 10, 2026
3a316b9
[Test] UI - Unit tests: raise global vitest timeout and remove per-te…
yuneng-berri Apr 10, 2026
aa0fa10
Merge pull request #25437 from joereyna/litellm_fix_responses_websock…
yuneng-berri Apr 10, 2026
92dbd2c
address greptile review feedback (greploop iteration 1)
yuneng-berri Apr 10, 2026
9b33d9d
Merge pull request #25445 from jaydns/fix/proxy-input-validation
yuneng-berri Apr 10, 2026
1214dc9
Merge pull request #25467 from jaydns/fix/parameterize-combined-view-…
yuneng-berri Apr 10, 2026
ce0b57b
[Docs] Add missing MCP per-user token env vars to config_settings
yuneng-berri Apr 10, 2026
42e5583
Merge pull request #25471 from BerriAI/litellm_doc_mcp_per_user_token…
yuneng-berri Apr 10, 2026
c7f610c
Merge remote-tracking branch 'origin/main' into litellm_/compassionat…
yuneng-berri Apr 10, 2026
9e6d2d2
Merge pull request #25468 from BerriAI/litellm_/compassionate-shannon
yuneng-berri Apr 10, 2026
26e99f2
refactor: consolidate route auth for UI and API tokens
ryan-crabbe-berri Apr 10, 2026
fb527ae
fix(test): mock headers in test_completion_fine_tuned_model
joereyna Apr 9, 2026
f8ae642
format vertex test file
joereyna Apr 9, 2026
8dc5ab3
feat(mcp): add per-user OAuth token storage for interactive MCP flows
csoni-cweave Apr 9, 2026
a12ba1f
[Fix] UI: resolve CodeQL security alerts and Dockerfile.health_check …
yuneng-berri Apr 9, 2026
4272d80
fix(docker): add non-root USER and HEALTHCHECK to Dockerfile.custom_ui
yuneng-berri Apr 2, 2026
464c988
[Fix] Address review feedback on storage utility and Dockerfiles
yuneng-berri Apr 9, 2026
4e06871
Update docker/Dockerfile.custom_ui
yuneng-berri Apr 9, 2026
df3ddd7
[Fix] Let setSecureItem propagate storage errors to callers
yuneng-berri Apr 9, 2026
06f3679
[Test] UI - Unit tests: raise global vitest timeout and remove per-te…
yuneng-berri Apr 10, 2026
236bb4f
address greptile review feedback (greploop iteration 1)
yuneng-berri Apr 10, 2026
1264bf3
fix(responses-ws): append ?model= to backend WebSocket URL
joereyna Apr 9, 2026
b7d7b93
fix(responses-ws): use urllib.parse to append model param, fix test m…
joereyna Apr 9, 2026
e828a91
[Docs] Add missing MCP per-user token env vars to config_settings
yuneng-berri Apr 10, 2026
6a15adc
fix: harden file path resolution in skill archive extraction
yuneng-berri Apr 10, 2026
820b457
Merge remote-tracking branch 'origin/main' into litellm_harden_skill_…
yuneng-berri Apr 10, 2026
9a4f5d7
fix: remove unnecessary f-string prefix in SQL query
yuneng-berri Apr 10, 2026
5666ed0
Merge pull request #25475 from BerriAI/litellm_harden_skill_file_paths
yuneng-berri Apr 10, 2026
af4d4ab
Introduced Content-Length response headers into the streaming respons…
harish876 Apr 10, 2026
28bce0b
fix: align v1 guardrail and agent list responses with v2 field handling
yuneng-berri Apr 10, 2026
a771e19
Fix unhandled "window is not defined" error in user_edit_view tests
yuneng-berri Apr 10, 2026
044d434
remove unused iterator imports
harish876 Apr 10, 2026
3af7de4
retain ui_routes enum alias for JWT config backwards compatibility
ryan-crabbe-berri Apr 10, 2026
d0e347a
Merge pull request #25473 from BerriAI/litellm_auth_rbac_cleanup
yuneng-berri Apr 10, 2026
2ea6e89
fix(a2a): default create_a2a_client timeout to DEFAULT_A2A_AGENT_TIMEOUT
milan-berri Apr 10, 2026
2a4e5b5
fix(responses): prevent duplicate kwargs in WebSocket call
yuneng-berri Apr 10, 2026
824269d
test(a2a): assert create_a2a_client default timeout uses DEFAULT_A2A_…
milan-berri Apr 10, 2026
baba3eb
Refactor file content streaming implementation
harish876 Apr 10, 2026
f0d2d26
fix(bedrock): avoid double-counting cache tokens in Anthropic Message…
Sameerlite Apr 10, 2026
1c74e17
E2E test to assert response headers from the openai files change
harish876 Apr 10, 2026
bec448d
Merge pull request #25524 from BerriAI/main
Sameerlite Apr 10, 2026
506de45
feat(anthropic): add AnthropicAdvisorTool type and ADVISOR_TOOL_2026_…
ishaan-berri Apr 10, 2026
a30a538
feat(anthropic): support advisor_20260301 tool and auto-inject adviso…
ishaan-berri Apr 10, 2026
0f9eba4
test(anthropic): add advisor tool transformation tests
ishaan-berri Apr 10, 2026
ed4aa84
feat(anthropic/messages): auto-inject advisor-tool-2026-03-01 beta he…
ishaan-berri Apr 10, 2026
55f0e66
test(anthropic): add advisor tool tests for /messages beta header path
ishaan-berri Apr 10, 2026
91f6d49
feat(anthropic): register advisor-tool-2026-03-01 in beta headers config
ishaan-berri Apr 10, 2026
ec524a0
Merge pull request #25513 from BerriAI/litellm_fix_ws_duplicate_kwarg
yuneng-berri Apr 10, 2026
576e6a0
Merge pull request #25517 from BerriAI/litellm_bedrock-messages-cache…
yuneng-berri Apr 10, 2026
193a57b
Merge pull request #25478 from BerriAI/litellm_align_list_response_fi…
yuneng-berri Apr 10, 2026
3a89465
feat(advisor): auto-strip advisor_tool_result blocks when advisor too…
ishaan-berri Apr 10, 2026
ab8d92c
feat(advisor): call strip_advisor_blocks in chat/completions transfor…
ishaan-berri Apr 10, 2026
9742bcd
feat(advisor): call strip_advisor_blocks in /messages transform path
ishaan-berri Apr 10, 2026
318196f
test(advisor): add tests for auto-strip advisor_tool_result blocks
ishaan-berri Apr 10, 2026
ed973c0
docs: add Advisor Tool documentation page
ishaan-berri Apr 10, 2026
1f148ea
bump: version 1.83.5 β†’ 1.83.6
yuneng-berri Apr 10, 2026
9e4352a
Merge pull request #25528 from BerriAI/yj_bump_10
yuneng-berri Apr 10, 2026
d6e2a74
docs: move advisor tool doc to completion/ guides section in sidebar
ishaan-berri Apr 10, 2026
f2f2a91
Merge pull request #25480 from BerriAI/litellm_/eloquent-allen
yuneng-berri Apr 10, 2026
d67b5f8
Merge pull request #25526 from BerriAI/litellm_yj_04_09_2026
yuneng-berri Apr 10, 2026
ccf3dc3
Code Comments incorporated.
harish876 Apr 10, 2026
9897c6d
refactor(advisor): replace hardcoded "advisor_20260301" with ANTHROPI…
ishaan-berri Apr 10, 2026
4e5e739
resolve dependency cycle
harish876 Apr 10, 2026
4e12d3c
docs: document april townhall announcements (#25537)
krrish-berri-2 Apr 10, 2026
d1dda3d
Enhance file content streaming handler to support custom LLM provider…
harish876 Apr 10, 2026
c5d93e6
Enhance error handling in FileContentStreamingHandler for custom LLM …
harish876 Apr 10, 2026
831083b
Merge pull request #25525 from BerriAI/feat/anthropic-advisor-tool
ishaan-berri Apr 10, 2026
b049aad
Merge pull request #25514 from milan-berri/fix/a2a-create-a2a-client-…
ishaan-berri Apr 10, 2026
02b4934
Merge pull request #25424 from BerriAI/litellm_fix-websearch-intercep…
ishaan-berri Apr 10, 2026
c7934c4
fix(spend): session-TZ-independent date filtering for spend/error log…
ryan-crabbe-berri Apr 11, 2026
68bc6de
resolving dependency issues
harish876 Apr 11, 2026
f523ccb
Update import paths in tests for StorageBackendFileService
harish876 Apr 11, 2026
09ffc87
fix: align org and team endpoint permission checks with existing patt…
yuneng-berri Apr 11, 2026
ef71016
address greptile review feedback (greploop iteration 1)
yuneng-berri Apr 11, 2026
dc200c3
fix(responses): map refusal stop_reason to incomplete status in strea…
Sameerlite Apr 11, 2026
c13be44
feat(guardrails): optional skip system message in unified guardrail i…
Sameerlite Apr 11, 2026
40d8a25
feat(bedrock): skip dummy user continue for assistant prefix prefill …
Sameerlite Apr 11, 2026
d03eced
feat(containers): Azure routing, managed container IDs, delete respon…
Sameerlite Apr 11, 2026
c9e4949
fix(logging): preserve proxy key-auth metadata on /v1/messages Langfu…
michelligabriele Apr 11, 2026
7d2f069
Reduce default latency histogram bucket cardinality (#25527)
J-Byron Apr 11, 2026
2fe615b
fix(s3): add retry with exponential backoff for transient S3 503/500 …
jimmychen-p72 Apr 11, 2026
363f9fe
fix(proxy): preserve dict guardrail HTTPException.detail + bedrock co…
michelligabriele Apr 11, 2026
423677f
fix(spend): convert string dates to tz-aware UTC datetimes in _get_sp…
ryan-crabbe-berri Apr 11, 2026
01b9b50
Add Screenshots / Proof of Fix section to PR template (#25564)
krrish-berri-2 Apr 11, 2026
eabb6a3
Merge pull request #25542 from BerriAI/litellm_fix-timestamp
ryan-crabbe-berri Apr 11, 2026
f409954
fix(types): annotate ANTHROPIC_ADVISOR_TOOL_TYPE as Literal to satisf…
ishaan-berri Apr 11, 2026
082f0af
refactor(anthropic): extract output_config validation to helper to fi…
ishaan-berri Apr 11, 2026
011e087
fix(anthropic): guard against non-dict messages in strip_advisor_bloc…
ishaan-berri Apr 11, 2026
57b77fe
Merge pull request #25554 from BerriAI/litellm_cross_tenant_resource_…
yuneng-berri Apr 11, 2026
69eb345
Refactor file content streaming handling to improve routing and support
harish876 Apr 11, 2026
5cb9b08
Merge pull request #25545 from BerriAI/litellm_ishaan_april10
ishaan-berri Apr 11, 2026
c70a3c7
Merge pull request #25450 from harish876/oom-file-fix-openai
ishaan-berri Apr 11, 2026
218daca
[Fix] Address Greptile review: POST /organization/info auth bypass, i…
yuneng-berri Apr 11, 2026
150c37c
Merge pull request #25568 from BerriAI/litellm_yj_apr_10_2026
yuneng-berri Apr 11, 2026
ec0cd5c
Update streaming.py. Provide Type Annotation for empty dict
harish-berri Apr 11, 2026
18caee3
chore: update Next.js build artifacts (2026-04-11 20:19 UTC, node v22…
yuneng-berri Apr 11, 2026
da75012
Merge pull request #25569 from BerriAI/litellm_harish_april11
ishaan-berri Apr 11, 2026
0169f14
Merge pull request #25571 from BerriAI/yj_apr11_build
yuneng-berri Apr 11, 2026
dbcdb15
Merge pull request #25241 from BerriAI/es_allow_applyguardrails_for_iam
yuneng-berri Apr 11, 2026
56e8245
Merge pull request #25458 from BerriAI/litellm_team_members_logs
yuneng-berri Apr 11, 2026
b42a875
chore: update Next.js build artifacts (2026-04-11 21:00 UTC, node v22…
yuneng-berri Apr 11, 2026
20b16b3
chore(proxy): match CRLF line endings in pass_through_endpoints
shivamrawat1 Apr 11, 2026
21e4071
Merge pull request #25573 from BerriAI/yj_apr11_build_2
yuneng-berri Apr 11, 2026
627d70a
Potential fix for pull request finding 'CodeQL / Module-level cyclic …
shivamrawat1 Apr 11, 2026
574eb20
fix: import LITELLM_PASS_THROUGH_CUSTOM_BODY_STATE_KEY for bedrock pa…
shivamrawat1 Apr 11, 2026
3742b0c
refactor: define pass-through custom body state key in types module
shivamrawat1 Apr 11, 2026
9a43e32
Merge pull request #25464 from BerriAI/litellm_passthrough_contenttype
yuneng-berri Apr 11, 2026
9092477
Merge remote-tracking branch 'origin' into litellm_internal_staging_0…
yuneng-berri Apr 11, 2026
c40e459
fix linting
yuneng-berri Apr 11, 2026
99cb3af
Merge pull request #25562 from BerriAI/litellm_internal_staging_04_11…
yuneng-berri Apr 11, 2026
a89ad3a
chore: update Next.js build artifacts (2026-04-11 22:57 UTC, node v22…
yuneng-berri Apr 11, 2026
d7823e3
Merge pull request #25577 from BerriAI/yj_apr11_build_3
yuneng-berri Apr 11, 2026
e162c6d
bump: version 1.83.6 β†’ 1.83.7
yuneng-berri Apr 12, 2026
2c786ca
Merge pull request #25578 from BerriAI/yj_apr11_bump
yuneng-berri Apr 12, 2026
e0d5c28
fix(mcp): restore PKCE-triggering 401 when no stored per-user token e…
milan-berri Apr 15, 2026
db64637
sync: merge v1.83.7-stable tag
Apr 20, 2026
3046d2e
fix: resolve upstream sync conflicts for PR #105
github-actions[bot] Apr 27, 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
  •  
  •  
  •  
391 changes: 176 additions & 215 deletions .circleci/config.yml

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,13 @@ If you're seeing a delay in your PR being merged, ping the LiteLLM Team on [Slac
- [ ] **Merge / cherry-pick CI run**
Links:

## Screenshots / Proof of Fix

<!-- Include screenshots, screen recordings, or log output demonstrating that your changes work as expected.
For bug fixes: show reproduction before the fix and passing behavior after.
For new features: show the feature working end-to-end.
For UI changes: include before/after screenshots. -->

## Type

<!-- Select the type of Pull Request -->
Expand Down
48 changes: 47 additions & 1 deletion .github/workflows/_test-unit-base.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ on:
required: false
type: number
default: 10
artifact-name:
description: "Unique name for the coverage artifact (must be unique per run)"
required: true
type: string

permissions:
contents: read
Expand Down Expand Up @@ -93,4 +97,46 @@ jobs:
--reruns "${RERUNS}" \
--reruns-delay 1 \
--dist=loadscope \
--durations=20
--durations=20 \
--cov=litellm \
--cov-report=xml:coverage.xml \
--cov-config=pyproject.toml

- name: Save coverage report
if: always()
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
with:
name: coverage-${{ inputs.artifact-name }}-${{ github.run_id }}-${{ github.run_attempt }}
path: coverage.xml
retention-days: 1

upload-coverage:
name: Upload coverage to Codecov
needs: run
if: always()
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
pull-requests: write

steps:
- name: Checkout code
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
persist-credentials: false

- name: Download coverage report
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
with:
pattern: coverage-${{ inputs.artifact-name }}-${{ github.run_id }}-${{ github.run_attempt }}
path: coverage-reports
merge-multiple: true

- name: Upload to Codecov
uses: codecov/codecov-action@75cd11691c0faa626561e295848008c8a7dddffe # v5.5.4
with:
use_oidc: true
directory: coverage-reports
root_dir: ${{ github.workspace }}
fail_ci_if_error: false
71 changes: 52 additions & 19 deletions .github/workflows/_test-unit-services-base.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,23 +27,17 @@ on:
required: false
type: number
default: 10
enable-redis:
description: "Pass Redis Cloud credentials to tests via REDIS_HOST/PORT/PASSWORD env vars"
required: false
type: boolean
default: false
enable-postgres:
description: "Start a local Postgres service container and run Prisma migrations"
required: false
type: boolean
default: false
secrets:
REDIS_HOST:
required: false
REDIS_PORT:
required: false
REDIS_PASSWORD:
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:
Expand All @@ -61,11 +55,8 @@ jobs:
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.
# Note: Postgres service container always starts (GHA limitation), so any Redis job
# also needs Postgres secrets β†’ uses integration-redis-postgres, not integration-redis.
environment: >-
${{
inputs.enable-redis && 'integration-redis-postgres' ||
inputs.enable-postgres && 'integration-postgres' ||
''
}}
Expand Down Expand Up @@ -141,17 +132,17 @@ jobs:
WORKERS: ${{ inputs.workers }}
RERUNS: ${{ inputs.reruns }}
DATABASE_URL: ${{ inputs.enable-postgres && secrets.DATABASE_URL || '' }}
REDIS_HOST: ${{ inputs.enable-redis && secrets.REDIS_HOST || '' }}
REDIS_PORT: ${{ inputs.enable-redis && secrets.REDIS_PORT || '' }}
REDIS_PASSWORD: ${{ inputs.enable-redis && secrets.REDIS_PASSWORD || '' }}
run: |
if [ "${WORKERS}" = "0" ]; then
poetry run pytest ${TEST_PATH:?} \
--tb=short -vv \
--maxfail="${MAX_FAILURES}" \
--reruns "${RERUNS}" \
--reruns-delay 1 \
--durations=20
--durations=20 \
--cov=litellm \
--cov-report=xml:coverage.xml \
--cov-config=pyproject.toml
else
poetry run pytest ${TEST_PATH:?} \
--tb=short -vv \
Expand All @@ -160,5 +151,47 @@ jobs:
--reruns "${RERUNS}" \
--reruns-delay 1 \
--dist=loadscope \
--durations=20
--durations=20 \
--cov=litellm \
--cov-report=xml:coverage.xml \
--cov-config=pyproject.toml
fi

- name: Save coverage report
if: always()
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
with:
name: coverage-${{ inputs.artifact-name }}-${{ github.run_id }}-${{ github.run_attempt }}
path: coverage.xml
retention-days: 1

upload-coverage:
name: Upload coverage to Codecov
needs: run
if: always()
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
pull-requests: write

steps:
- name: Checkout code
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
persist-credentials: false

- name: Download coverage report
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
with:
pattern: coverage-${{ inputs.artifact-name }}-${{ github.run_id }}-${{ github.run_attempt }}
path: coverage-reports
merge-multiple: true

- name: Upload to Codecov
uses: codecov/codecov-action@75cd11691c0faa626561e295848008c8a7dddffe # v5.5.4
with:
use_oidc: true
directory: coverage-reports
root_dir: ${{ github.workspace }}
fail_ci_if_error: false
16 changes: 15 additions & 1 deletion .github/workflows/create-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,21 @@ jobs:
const cosignSection = [
`## Verify Docker Image Signature`,
``,
`All LiteLLM Docker images are signed with [cosign](https://docs.sigstore.dev/cosign/overview/). To verify the integrity of an image before deploying:`,
`All LiteLLM Docker images are signed with [cosign](https://docs.sigstore.dev/cosign/overview/). Every release is signed with the same key introduced in [commit \`0112e53\`](https://github.com/BerriAI/litellm/commit/0112e53046018d726492c814b3644b7d376029d0).`,
``,
`**Verify using the pinned commit hash (recommended):**`,
``,
`A commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:`,
``,
'```bash',
`cosign verify \\`,
` --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \\`,
` ghcr.io/berriai/litellm:${tag}`,
'```',
``,
`**Verify using the release tag (convenience):**`,
``,
`Tags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:`,
``,
'```bash',
`cosign verify \\`,
Expand Down
Empty file modified .github/workflows/run_llm_translation_tests.py
100755 β†’ 100644
Empty file.
Loading
Loading