Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2279 commits
Select commit Hold shift + click to select a range
0ade44f
Merge pull request #31542 from BerriAI/litellm_internal_staging
shivamrawat1 Jun 28, 2026
ef5d05f
fix(realtime): stop second Gemini Live setup, retry hung handshake, c…
mubashir1osmani Jun 28, 2026
b76a858
feat: declarative fallback generalizations for unknown models (#29718)
mateo-berri Jun 28, 2026
b443037
Merge pull request #31488 from BerriAI/litellm_rust_ocr_e2e_llm_trans…
mubashir1osmani Jun 28, 2026
453aede
chore(router): simplify unknown-model error message construction
stuxf Jun 28, 2026
9b4442c
chore(router): drop unreachable unknown-model error branch
stuxf Jun 28, 2026
a04321d
test(videos): add 1:1 test file scaffold for videos component paths (…
Sameerlite Jun 29, 2026
2cf565a
test(batches): add 1:1 test file scaffold for batches component paths…
Sameerlite Jun 29, 2026
8e30cfb
feat(a2a): support a2a-sdk 1.x proxy routing for 0.3 and 1.0 agents (…
Sameerlite Jun 29, 2026
d7654d0
feat(proxy): add AES-256-GCM at-rest credential encryption with versi…
michelligabriele Jun 29, 2026
f042919
Merge pull request #31566 from stuxf/litellm_router_unknown_model_err…
yuneng-berri Jun 29, 2026
f5e7f99
Merge pull request #31629 from BerriAI/litellm_yj_june29
yuneng-berri Jun 29, 2026
0e5aee1
fix(ui): keep virtual-keys filters across delete and refresh (LIT-408…
ryan-crabbe-berri Jun 29, 2026
5e5b097
perf(ui): load virtual-keys team filter from the fast v2 endpoint (#3…
ryan-crabbe-berri Jun 29, 2026
20dabb7
fix(databricks): split parallel tool calls so each tool message follo…
mateo-berri Jun 29, 2026
7a1ba95
fix(proxy): gate non-admin /key/generate budget_limits and permission…
yucheng-berri Jun 29, 2026
829bfeb
perf(auth): gather independent pre-call budget-enforcement reads (#31…
yassin-berriai Jun 29, 2026
be6b28f
fix(proxy): reject non-finite budget_limits windows on /key/generate …
yucheng-berri Jun 29, 2026
971a1be
fix(proxy): hard-reject CLI session token personal-key budget_limits …
yucheng-berri Jun 29, 2026
b9e5875
refactor(types): host ObjectPermissionDict in litellm/types/ for SDK …
yucheng-berri Jun 27, 2026
5b029ec
fix: preserve normalized mcp permissions on key regenerate
cursoragent Jun 29, 2026
85840ae
fix(vertex_ai/files): single media upload for batch files to fix 499s…
mubashir1osmani Jun 30, 2026
e195532
fix(proxy): count only active users toward license seat limit (#31227)
ryan-crabbe-berri Jun 30, 2026
ec808ed
fix(mcp): resolve per-user OAuth identity authoritatively at the toke…
tin-berri Jun 30, 2026
494d04c
Merge pull request #31471 from BerriAI/litellm_veria_218_personal_key…
yuneng-berri Jun 30, 2026
ddba2e2
refactor(ui): colocate search-tools into route-level _components (#31…
ryan-crabbe-berri Jun 30, 2026
26ee5dd
fix(passthrough): drop top-level additional_drop_params on /v1/messag…
mateo-berri Jun 30, 2026
10849c8
fix(guardrails): scan file and document attachments with Model Armor …
yucheng-berri Jun 30, 2026
ea7be19
fix: skip health check for semantic auto_router deployments (#31668)
krrish-berri-2 Jun 30, 2026
8a55e9e
fix(bedrock): drop unmappable Responses tools instead of failing the …
mateo-berri Jun 30, 2026
d295b76
ci(linting): generate prisma client before basedpyright typecheck (#3…
mateo-berri Jun 30, 2026
375659e
fix(proxy): emit x-litellm-response-cost header on /messages and /gen…
mateo-berri Jun 30, 2026
7baf255
fix(mcp): support client_secret_basic for upstream OAuth token endpoi…
tin-berri Jun 30, 2026
6d5de74
feat(cost_calculator): log per-token-type reasoning and cache cost br…
Sameerlite Jun 30, 2026
884cdc1
fix(anthropic): drop unsignable thinking blocks and allow null signat…
mateo-berri Jun 30, 2026
84d7a32
fix(ui): revert Duration and TTFT column widths to default
yuneng-berri Jun 30, 2026
256b5aa
fix(ui): revert Request ID width to default, tighten Session ID
yuneng-berri Jun 30, 2026
adf6eb7
chore(docs): remove docs accidentally committed to litellm repo (#31691)
yuneng-berri Jun 30, 2026
72bcb74
chore: remove _experimental/out (#31546)
mateo-berri Jun 30, 2026
70eb4e5
feat(prometheus): add litellm_total_overhead_latency_metric (SDK over…
yassin-berriai Jun 30, 2026
0965a4d
chore: shift CI lint left with an opt-in `make pre-commit` and CLAUDE…
mateo-berri Jun 30, 2026
3dce3da
feat(proxy): type Customer Management response_model for OpenAPI cove…
ryan-crabbe-berri Jun 30, 2026
f8a2ea7
Merge pull request #31426 from BerriAI/litellm_/cranky-hamilton-21b5d0
yuneng-berri Jun 30, 2026
2e575d3
perf(otel): memoize per-request lazy import of otel runtime hooks (#3…
yassin-berriai Jun 30, 2026
468d11f
feat(otel): emit a tools/list CLIENT span for MCP discovery under ote…
ryan-crabbe-berri Jun 30, 2026
1eb7122
test(benchmarks): add CodSpeed benchmarks for inference, MCP and A2A …
yassin-berriai Jun 30, 2026
7ed25de
fix(ui): allow any git host on the skills add form (LIT-4053) (#31652)
ryan-crabbe-berri Jun 30, 2026
6ab3742
perf(spend): move cost-callback payload deepcopy off the request even…
yassin-berriai Jun 30, 2026
59f51b2
chore: prevent CLAUDE.md comment bloat (#31729)
mateo-berri Jun 30, 2026
1815636
feat(guardrails): expose streaming knobs on generic_guardrail_api (#3…
yucheng-berri Jun 30, 2026
fecaf5c
feat(router): tag routing denylist support via ! prefix (#31728)
mateo-berri Jun 30, 2026
9968499
fix(ui): fix Router Settings Loadbalancing tab save (LIT-4057)
ryan-crabbe-berri Jun 30, 2026
30141f8
test(ui): make router settings save tests resilient to async timing
ryan-crabbe-berri Jun 30, 2026
a126cdf
feat(anthropic): add Claude Sonnet 5
cursoragent Jun 30, 2026
540c860
test(ui): add typed e2e for Router Settings Loadbalancing save (LIT-4…
ryan-crabbe-berri Jun 30, 2026
87de0e8
fix(mcp): stop one unauthenticated server from emptying the aggregate…
tin-berri Jun 30, 2026
d6f09c4
test(reasoning-effort-grid): bump cell-count assertion for claude-son…
mateo-berri Jun 30, 2026
87f035b
perf(spend): gather independent per-scope spend-counter increments (#…
yassin-berriai Jun 30, 2026
3971469
test(ui): harden Router Settings e2e and make its typing a real CI gate
ryan-crabbe-berri Jun 30, 2026
88c34a5
fix(email): apply EMAIL_SIGNATURE to budget alert emails (#31712)
michelligabriele Jun 30, 2026
6d828e5
feat(messages): passthrough /v1/messages to native endpoints via supp…
mateo-berri Jun 30, 2026
6d43c21
fix(anthropic): drop redundant supports_output_config from Vertex/Azu…
mateo-berri Jun 30, 2026
52dc15a
fix(proxy): isolate poison spend-log rows so one bad record can't dro…
yassin-berriai Jun 30, 2026
be4d0d8
fix(redis): re-establish async cluster connections after a node resta…
yassin-berriai Jun 30, 2026
4f41a9e
test(ui): drop the e2e typecheck CI gate, keep the typed import for t…
ryan-crabbe-berri Jun 30, 2026
d4c33b2
fix(logging): route realtime success logging through the bounded work…
mubashir1osmani Jun 30, 2026
94936a3
fix(presidio): stream SSE output incrementally instead of buffering t…
yassin-berriai Jun 30, 2026
8beb68a
Merge pull request #31740 from BerriAI/litellm_add-claude-sonnet-5-c71c
yuneng-berri Jun 30, 2026
86fbe90
bump: version 1.91.0 β†’ 1.92.0
yuneng-berri Jun 30, 2026
c736ec5
bump: version 0.1.44 β†’ 0.1.45
yuneng-berri Jun 30, 2026
aaa58a7
chore: rebuild uv lock for version bumps
yuneng-berri Jun 30, 2026
e337df4
Merge pull request #31757 from BerriAI/litellm_/gracious-bardeen-d32d47
yuneng-berri Jun 30, 2026
5d4bb75
fix(token_counter): count legacy function_call.arguments (VERIA-492) …
yucheng-berri Jun 30, 2026
a0b26d2
Revert "fix(presidio): stream SSE output incrementally instead of buf…
tin-berri Jun 30, 2026
88e03e5
Merge pull request #31765 from BerriAI/litellm_internal_staging
yuneng-berri Jun 30, 2026
ae8084d
ci(codspeed): pin benchmark runner to ubuntu-24.04 (#31746)
yuneng-berri Jun 30, 2026
a7d8c6f
test(pass-through): de-flake vertex spend-log test by routing through…
mateo-berri Jun 30, 2026
41f9d8d
fix(proxy): extend banned-params + admin-clear lists for NVIDIA Riva …
yucheng-berri Jun 30, 2026
776b272
Merge pull request #31735 from BerriAI/litellm_lit_4057_router_settin…
yuneng-berri Jun 30, 2026
833406a
fix(ui): rotate model credentials in a dedicated modal so a normal sa…
ryan-crabbe-berri Jul 1, 2026
2860dad
feat(proxy): audit default user settings updates (#31753)
yucheng-berri Jul 1, 2026
ada9ef8
fix(websearch): websearch_interception agentic loop fixes for chat co…
krrish-berri-2 Jul 1, 2026
6c21029
feat(sandbox): reuse e2b container across requests when metadata.sess…
krrish-berri-2 Jul 1, 2026
846dbec
feat(proxy): support object_permission in default_key_generate_params…
krrish-berri-2 Jul 1, 2026
50b936c
feat(guardrails/headroom): add CCR (compress-cache-retrieve) via agen…
krrish-berri-2 Jul 1, 2026
23af784
feat: add cache control injection support for v1/messages endpoint (#…
devin-ai-integration[bot] Jul 1, 2026
bfb8ffc
feat(proxy): audit remaining system-wide settings updates (#31754)
yucheng-berri Jul 1, 2026
c4a77bd
fix(prometheus): expose project_alias in custom metadata labels (LIT-…
devin-ai-integration[bot] Jul 1, 2026
cca71a0
feat(mcp): add mcp_tool_search virtual tools for large tool catalogs …
krrish-berri-2 Jul 1, 2026
13b590c
fix(proxy): hydrate MCP server registry from DB on startup when store…
tin-berri Jul 1, 2026
e141596
refactor(lint): collapse type/lint budgets to a single per-rule limit…
mateo-berri Jul 1, 2026
3e0bd71
feat(ui): disclaim that the Update API Key modal only rotates api_key…
ryan-crabbe-berri Jul 1, 2026
1fe76dc
Revert "chore: remove _experimental/out (#31546)"
yuneng-berri Jul 1, 2026
34039df
Merge pull request #31904 from BerriAI/litellm_/competent-mestorf-165751
yuneng-berri Jul 1, 2026
ae6dbb4
fix(scripts): resolve worktree root before relative_to in type_check_…
yuneng-berri Jul 1, 2026
7e99344
feat(bedrock_mantle): add xai.grok-4.3 to model cost map for SigV4 au…
devin-ai-integration[bot] Jul 1, 2026
700afbb
chore: make CLAUDE.md rules more concise (#31892)
mateo-berri Jul 1, 2026
a2f5bb1
fix(proxy): authorize /health/test_connection against loaded deployme…
yucheng-berri Jul 2, 2026
99c65ea
fix(proxy): admin-gate `permissions` on /key/update and /key/regenera…
yucheng-berri Jul 2, 2026
0b0fd6a
feat(github_copilot): route /v1/messages to Copilot native Anthropic …
mateo-berri Jul 2, 2026
fde4c7c
feat(gdc): implement Google Distributed Cloud (GDC) Gemini provider (…
mateo-berri Jul 2, 2026
6e023f7
fix(model_prices): apply claude-sonnet-5 introductory pricing through…
mateo-berri Jul 2, 2026
68a8fc2
feat(s3_v2): send Content-MD5 on PUT and optional server-side encryption
Jul 2, 2026
8ce6b4d
fix(proxy): tighten role gating on /get/config/callbacks response (#3…
yucheng-berri Jul 2, 2026
e542be1
fix(s3_v2): pass usedforsecurity=False to hashlib.md5 for FIPS envs
Jul 2, 2026
29cc4e3
fix: allow S3 Content-MD5 on FIPS hosts
cursoragent Jul 2, 2026
bd9db36
chore(lint): remove dead E501 config, fix stale blame-ignore SHAs, no…
mateo-berri Jul 2, 2026
85f9241
fix(bedrock/converse): drop toolSpec.strict for Opus 4.7/4.8 (#31582)…
mateo-berri Jul 2, 2026
c4f28ce
fix(bedrock): trigger Nova Sonic generation on response.create so rea…
mateo-berri Jul 2, 2026
2a9dbc4
chore(ui): remove unused dep, delete dead file, and unblock knip (#31…
ryan-crabbe-berri Jul 2, 2026
3d644e1
refactor(ui): colocate users page into route-level _components (#31897)
ryan-crabbe-berri Jul 2, 2026
912ca62
test(bedrock): switch image gen live test off EOL Titan to Nova Canva…
devin-ai-integration[bot] Jul 2, 2026
a2a951a
feat(vertex_ai): pass full imageConfig dict for Gemini image generati…
Sameerlite Jul 2, 2026
64dc508
fix(bedrock): drop strict/additionalProperties from toolSpec for Clau…
Sameerlite Jul 2, 2026
85db18e
feat(prometheus): expose MCP tool metadata in Prometheus metrics (#31…
devin-ai-integration[bot] Jul 2, 2026
b96f1aa
fix(mcp): byom visibility, preview UX, and admin settings gating (#31…
Sameerlite Jul 2, 2026
a16d9c6
test(e2e): add live batches suite across providers and routing scenar…
Sameerlite Jul 2, 2026
8d0dc92
fix(logging): resolve model_map_value for proxy custom pricing (#31940)
Sameerlite Jul 2, 2026
fabe5c2
fix(mcp): roll up MCP tool spend to user counters and usage UI (#31576)
Sameerlite Jul 2, 2026
6d796d0
feat(proxy): track cost for unmanaged Vertex AI batch jobs (#31442)
Sameerlite Jul 2, 2026
f5f8ba9
fix(mcp): tighten role-based visibility on /v1/mcp/server/submissions…
yucheng-berri Jul 2, 2026
09f611e
fix: include realtime transcription cost in breakdown
cursoragent Jul 2, 2026
c370503
fix(mcp): gate OAuth authorize/token/register/discovery on auth_type=…
tin-berri Jul 2, 2026
bea8c93
refactor(ui): drive cache settings form from a typed frontend schema …
yuneng-berri Jul 2, 2026
d40021c
fix: merge metadata.tags into litellm_metadata on /v1/responses route…
devin-ai-integration[bot] Jul 2, 2026
8e6098a
fix(proxy): restore admin key/team callback_vars.turn_off_message_log…
yucheng-berri Jul 2, 2026
58de920
feat(mcp): bound outbound tool-call concurrency per MCP server (#31641)
tin-berri Jul 2, 2026
b38c290
fix(release): make Create Release reliable for stable maintenance cut…
yuneng-berri Jul 2, 2026
9b6d0b0
Merge pull request #31928 from BerriAI/litellm_s3_v2_content_md5
mubashir1osmani Jul 2, 2026
1543725
fix(bedrock): honor ttl for tool_config cache injection points (#31929)
shivamrawat1 Jul 2, 2026
ef03023
test(e2e): add vertex_ai passthrough spend-log coverage (#31781)
mubashir1osmani Jul 3, 2026
b9df7fa
fix(mcp): surface tools/list 401 auth failures as a challenge on sing…
tin-berri Jul 3, 2026
8bb4e62
feat(tencent): add Tencent TokenHub as a provider (#31903)
mateo-berri Jul 3, 2026
138a69b
fix(bedrock): map guardrailConfig to InvokeModel guardrail headers (#…
mateo-berri Jul 3, 2026
27069bd
feat(ui): shadcn migration foundation: Tailwind v4, shadcn init, antd…
ryan-crabbe-berri Jul 3, 2026
a86dc4c
chore(e2e): untrack gateway config and document e2e test location (#3…
mubashir1osmani Jul 3, 2026
cf6fdac
perf(lint): skip and cache base gate passes, parallelize make lint, s…
mateo-berri Jul 3, 2026
2633e8f
fix(ui): include cache token columns in usage export (#32015)
mateo-berri Jul 3, 2026
30ddef7
fix(a2a): record agent cost_per_query and input tokens on native send…
michelligabriele Jul 3, 2026
321345d
feat: litellm oss staging (#31935)
Sameerlite Jul 3, 2026
cbe23d6
fix(a2a): populate response usage in a2a chat transformation (#31980)
michelligabriele Jul 3, 2026
dfbbda4
fix(auth): deny model access for teamless keys with all-team-models (…
devin-ai-integration[bot] Jul 3, 2026
659127b
feat(guardrails): add unreachable_fallback fail-open option to headro…
krrish-berri-2 Jul 3, 2026
6dcbac8
fix(proxy): admin-gate `permissions` on /user/new and /user/update (L…
yucheng-berri Jul 3, 2026
b426925
fix(proxy): admin-gate `allowed_routes` presence on /key/update and /…
yucheng-berri Jul 3, 2026
b61fae3
fix(proxy): admin-gate `permissions` on _process_single_key_update (L…
yucheng-berri Jul 3, 2026
00dffcd
fix(guardrails): catch httpx.HTTPStatusError in headroom compress call
krrish-berri-2 Jul 3, 2026
ae356cf
fix(azure_ai): preserve content, tables, and keyValuePairs in doc-int…
mateo-berri Jul 3, 2026
4e53ae9
bump: litellm-proxy-extras 0.4.74 -> 0.4.75, litellm-enterprise 0.1.4…
yuneng-berri Jul 3, 2026
d0e7851
feat(tinyfish): make search provider permissive, attribute errors (#3…
tin-berri Jul 3, 2026
b59ad21
feat(ui): add token endpoint auth method selector to MCP OAuth forms …
tin-berri Jul 3, 2026
15ff389
fix(mcp): persist DCR client_id so interactive OAuth token refresh wo…
tin-berri Jul 3, 2026
93cdcca
fix(azure_sentinel): resolve audit stream from AZURE_SENTINEL_AUDIT_S…
yucheng-berri Jul 3, 2026
53d2331
fix: catch litellm.Timeout in HeadroomGuardrail to support fail_open …
cursoragent Jul 3, 2026
3235f4a
fix(mcp): persist DCR client_id from on-create MCP OAuth Authorize & …
tin-berri Jul 3, 2026
70785b9
fix(e2e): define SpendTagsResponse/TagSpend so spend suite collects
mubashir1osmani Jul 3, 2026
28ddad2
feat(proxy): add key-level budget_fallbacks to reroute requests when …
krrish-berri-2 Jul 3, 2026
e06adb5
feat(ui): re-add chat UI, allow simple UI for MCP OBO auth (#31893)
krrish-berri-2 Jul 3, 2026
01dfbf7
fix(guardrails): address review comments on headroom fail_open
krrish-berri Jul 3, 2026
8713771
fix: restore schema.d.ts from base branch
krrish-berri Jul 3, 2026
badc141
Merge pull request #32027 from BerriAI/litellm_internal_staging
yuneng-berri Jul 3, 2026
ed51c96
feat(ui): add budget fallbacks configuration to key create/edit forms
krrish-berri Jul 3, 2026
680f15f
fix(proxy): stop leaking master_key and database_url in startup DEBUG…
yucheng-berri Jul 2, 2026
64d6a15
fix(proxy): redact secrets on the db-config and litellm_settings log …
yucheng-berri Jul 2, 2026
89d3f2a
fix: redact db environment variable debug logs
yucheng-berri Jul 2, 2026
bd6ae9e
fix(proxy): stop the decrypt-failure debug log from leaking the raw v…
yucheng-berri Jul 2, 2026
11314f4
feat(ui): migrate chat UI from antd to shadcn/ui
krrish-berri Jul 3, 2026
0b3e327
fix(ui): use project cva config instead of class-variance-authority i…
krrish-berri Jul 3, 2026
ef758e6
fix(proxy): route realtime HTTP endpoints through router for credenti…
Jul 3, 2026
640ee93
fix: prevent stale budget fallback entries after form reset and guard…
krrish-berri Jul 3, 2026
57ca48a
feat(mcp): add all-proxy-mcpservers sentinel to grant teams every MCP…
ryan-crabbe-berri Jul 3, 2026
fff6a53
fix(ci): stop ui_unit_tests vitest onTaskUpdate RPC timeout flake
yuneng-berri Jul 3, 2026
682d55a
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Jul 3, 2026
2e1d8d2
fix(anthropic): keep context_management working when drop_params is e…
mateo-berri Jul 3, 2026
23e83f8
Merge pull request #32078 from BerriAI/litellm_/distracted-banach-e3481f
yuneng-berri Jul 3, 2026
5f4b9ad
chore: clarify the linear ticket instruction in pr template (#32076)
mateo-berri Jul 3, 2026
a55cc3a
fix: allow clearing budget_fallbacks in edit view when key had existi…
krrish-berri Jul 3, 2026
0115bfa
test(ui): quiet vitest CI logs by silencing passing-test console output
yuneng-berri Jul 3, 2026
fc17ea3
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Jul 3, 2026
b42cd37
style: format key_edit_view.tsx with prettier
krrish-berri Jul 3, 2026
b723dfb
fix(realtime): preserve nested transcription model and session-first …
Jul 3, 2026
8e4e37d
Merge pull request #32079 from BerriAI/litellm_/dreamy-lovelace-4a90c8
yuneng-berri Jul 3, 2026
76a9f7b
chore(ui): add no-console lint ratchet and strip console from prod bu…
yuneng-berri Jul 3, 2026
2e44691
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
yuneng-berri Jul 3, 2026
5b7c73a
chore(ui): sync no-console budget to 484 after staging merge
yuneng-berri Jul 3, 2026
68d52ac
chore(ui): preserve console.warn in prod builds to match lint allow-list
yuneng-berri Jul 3, 2026
099bc97
fix: prevent duplicate budget alert emails on concurrent threshold cr…
yucheng-berri Jul 3, 2026
36cbc3a
Merge pull request #32082 from BerriAI/litellm_/eloquent-swanson-d634ca
yuneng-berri Jul 3, 2026
15d6a29
merge: resolve eslint-metrics.json conflict with litellm_internal_sta…
krrish-berri Jul 3, 2026
55e3296
Merge pull request #32026 from BerriAI/litellm_headroom_unreachable_f…
yuneng-berri Jul 3, 2026
c58e226
Merge pull request #32072 from BerriAI/litellm_budget_fallbacks_ui
yuneng-berri Jul 3, 2026
afa739b
fix(ui): design polish and per-tab routing for chat UI
krrish-berri-2 Jul 3, 2026
a58930e
Merge remote-tracking branch 'origin/litellm_chat-keys-usage' into li…
krrish-berri-2 Jul 3, 2026
7109b2f
fix(ui): view-switcher navigation from chat route, add beta banner
krrish-berri-2 Jul 3, 2026
f19bf2c
feat(mcp): migrate the token_exchange (OBO) arm to the v2 resolver (#…
tin-berri Jul 3, 2026
0e56fc3
feat(mcp): make token_exchange (OBO) production-ready - discovery thr…
tin-berri Jul 4, 2026
1e7dbe5
fix(anthropic): bill streaming 1h prompt-cache writes at the 1h rate …
mateo-berri Jul 4, 2026
8563677
fix(ui): design-system audit, single-model picker, scroll fix
krrish-berri-2 Jul 4, 2026
aca2428
chore(ui): remove debug console.log statements from dashboard (#32087)
ryan-crabbe-berri Jul 4, 2026
718e9cf
fix(router): mask provider credentials embedded in fallback error mes…
yucheng-berri Jul 4, 2026
5ece78f
revert: undo teamless all-team-models denial from #32022 and #29746 (…
devin-ai-integration[bot] Jul 4, 2026
c737789
feat(mcp): discover the OBO token endpoint via RFC 9728 -> RFC 8414 (…
tin-berri Jul 4, 2026
5211c73
build: restore maturin backend to bundle the Rust bridge in the wheel
yuneng-berri Jul 4, 2026
29c23db
fix(responses/mcp): execute follow-up tool calls instead of dropping …
krrish-berri-2 Jul 4, 2026
08c009c
fix(ui): forward ref on shadcn Input so rename auto-focus works on Re…
krrish-berri-2 Jul 4, 2026
8f6abb5
Merge pull request #32077 from BerriAI/litellm_realtime_internal_user…
shivamrawat1 Jul 4, 2026
47f493a
Merge pull request #32074 from BerriAI/litellm_chat-keys-usage
yuneng-berri Jul 4, 2026
0932dde
Merge pull request #31462 from BerriAI/litellm_/stoic-euclid-c3b07c
yuneng-berri Jul 4, 2026
8c98780
fix(proxy): return upstream error bodies unchanged in passthrough
Jul 4, 2026
4bd579c
Merge pull request #31944 from BerriAI/litellm_lit4152_key_url_redaction
yuneng-berri Jul 4, 2026
e738715
fix(proxy): fire failure hooks and log response bodies for passthroug…
Jul 4, 2026
23873f8
fix(policies): reject non-existent team/key/model scope entries on at…
ryan-crabbe-berri Jul 4, 2026
07b9ea8
fix(anthropic): require caller api_key and SSRF-validate api_base in …
yucheng-berri Jul 4, 2026
8edfaa9
Merge remote-tracking branch 'origin/litellm_internal_staging' into l…
Jul 4, 2026
f0d41e4
fix: attribute realtime transcription cost in cost breakdown
Jul 4, 2026
44a0f57
fix(proxy): stop double-logging and false-alerting on passthrough ups…
Jul 4, 2026
cbb6411
fix(proxy): keep serving reads from the read replica when the primary…
yassin-berriai Jul 4, 2026
7c954ce
Merge pull request #32097 from BerriAI/litellm_/focused-moore-292bcc
yuneng-berri Jul 4, 2026
cbfba17
test(proxy): set status_code on chunk_processor response mocks
Jul 4, 2026
bd5059f
Merge pull request #30069 from BerriAI/litellm_realtime_cost_metrics
shivamrawat1 Jul 4, 2026
a3a3201
Merge pull request #32133 from BerriAI/litellm_passthrough_error_norm…
yuneng-berri Jul 4, 2026
daf1aab
ci: run proxy containers without debug logging (#32128)
ryan-crabbe-berri Jul 4, 2026
96089d7
chore: update Next.js build artifacts (2026-07-04 21:21 UTC, node v20…
yuneng-berri Jul 4, 2026
c293696
bump: litellm-enterprise 0.1.46 -> 0.1.47
yuneng-berri Jul 4, 2026
4f12b20
Merge pull request #32150 from BerriAI/litellm_/epic-cannon-f16c3e
yuneng-berri Jul 4, 2026
e619259
Merge pull request #32151 from BerriAI/litellm_yj_build_july4
yuneng-berri Jul 4, 2026
7a6a070
feat(prometheus): add api_provider label to token, latency, request a…
yucheng-berri Jul 4, 2026
79a6b8f
Merge pull request #32156 from BerriAI/litellm_internal_staging
yuneng-berri Jul 4, 2026
e1ec215
Merge pull request #32256 from BerriAI/litellm_bedrock_db_env_expansion
yuneng-berri Jul 6, 2026
b5dee35
Merge pull request #32277 from BerriAI/litellm_/elated-noyce-6fc150
yuneng-berri Jul 6, 2026
2d35ea5
feat(otel): stamp gen_ai.response.time_to_first_chunk on streaming LL…
yassin-berriai Jul 7, 2026
8c8e4d0
fix(ui/mcp): do not reset in-flight OAuth resume when create modal mo…
tin-berri Jul 8, 2026
c5fa3a8
Merge pull request #32405 from BerriAI/litellm_kraken-remove-envref-g…
yuneng-berri Jul 8, 2026
27b5cfd
fix(otel): restore error.* span attributes on v2 error spans (LIT-417…
yucheng-berri Jul 8, 2026
d2b4f49
Merge pull request #32553 from BerriAI/litellm_backport_patch_192rc1
yuneng-berri Jul 8, 2026
0f4f09f
chore: update Next.js build artifacts (2026-07-08 23:23 UTC, node v20…
yuneng-berri Jul 8, 2026
78c5618
Merge pull request #32554 from BerriAI/litellm_ui_rebuild_192rc1
yuneng-berri Jul 8, 2026
b3086cc
chore(release): backport 11 staging PRs onto patch-1.92.0rc2 for the …
yuneng-berri Jul 11, 2026
ce2b834
sync: merge v1.92.0 tag
Jul 13, 2026
1726deb
fix: resolve upstream sync conflicts for PR #121
github-actions[bot] Jul 13, 2026
a5ef920
fix(docker): restore arm64 prisma schema-engine support
github-actions[bot] Jul 14, 2026
1c1f2a0
fix(responses): restore litellm_completion_request wiring for Redis s…
mateo-di Jul 17, 2026
63229ae
test(responses): drop stale CARTO streaming-iterator tool-call tests
mateo-di Jul 17, 2026
21f3af7
fix(responses): restore CARTO Redis-first session lookup in session h…
mateo-di Jul 17, 2026
6b5f88d
fix(responses): restore verbatim carto/main session handler and decod…
mateo-di Jul 17, 2026
3bb229e
fix(snowflake): stop repeating tool name on Cortex input_json_delta c…
mateo-di Jul 30, 2026
ff057ec
fix(oci): assign stable per-call index to GENERIC streaming tool calls
mateo-di Jul 31, 2026
015b21b
fix(snowflake): strip OpenAI-only annotations from replayed Anthropic…
mateo-di Aug 3, 2026
0e62907
fix(carto-features): anchor Snowflake follow-up-turns pattern to a ca…
mateo-di Aug 3, 2026
d25065b
fix(oci): reorder parallel tool results to match the assistant toolCa…
mateo-di Aug 3, 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.
19 changes: 19 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[http]
# CI has seen transient crates.io failures from libcurl's HTTP/2 multiplexing
# during `maturin` metadata resolution. Disable multiplexing and retry more
# aggressively so editable `uv sync` builds are not failed by one flaky frame.
multiplexing = false

[net]
retry = 5

# PyO3 cdylib (`litellm-python-bridge`) links against the host interpreter's
# symbols, which are not present at link time when building an extension module.
# On macOS, tell the linker to resolve undefined `_Py*` symbols dynamically at
# load time (the standard pyo3 extension-module flag) so the cdylib links without
# a libpython on the link line.
[target.x86_64-apple-darwin]
rustflags = ["-C", "link-arg=-undefined", "-C", "link-arg=dynamic_lookup"]

[target.aarch64-apple-darwin]
rustflags = ["-C", "link-arg=-undefined", "-C", "link-arg=dynamic_lookup"]
852 changes: 762 additions & 90 deletions .circleci/config.yml

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@ build/
*.egg-info/
.DS_Store
**/node_modules
ui/litellm-dashboard/.next
ui/litellm-dashboard/out
litellm-rust/target/
litellm/rust_bridge/_native*.so
*.log
.env
.env.local
9 changes: 9 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,12 @@

# Update pydantic code to fix warnings (GH-3600)
876840e9957bc7e9f7d6a2b58c4d7c53dad16481

# style(ui): run prettier --write across the dashboard (#29622)
7edf3a9cb55548b143df1692f4ed7c4681d7fcf7

# style: reformat litellm/ with ruff format (#31317)
17bfd415aeb5a57fb646b5cc67da1c730aa7c50b

# style: unify ruff format width on 120 (#31518)
48b5a5a0cc5a694a11219416ee0b6eb6e620e74e
3 changes: 2 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
*.ipynb linguist-vendored
*.ipynb linguist-vendored
ui/litellm-dashboard/src/lib/http/schema.d.ts linguist-generated
75 changes: 75 additions & 0 deletions .githooks/commit-msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
#!/usr/bin/env bash
#
# commit-msg β€” enforce Conventional Commits 1.0.0
# https://www.conventionalcommits.org/en/v1.0.0/
#
# Subject format: <type>(<scope>)!: <description>
# - <type> must be one of the angular types (feat, fix, ...)
# - (<scope>) is optional
# - ! is optional and marks a breaking change
# - <description> is mandatory and must be non-empty
#
# Bypass: commit with --no-verify.
# Merge, revert, fixup!, squash!, and amend! messages are passed through.

set -eu

COMMIT_MSG_FILE="${1:-}"
if [ -z "$COMMIT_MSG_FILE" ] || [ ! -f "$COMMIT_MSG_FILE" ]; then
echo "commit-msg: missing commit message file" >&2
exit 1
fi

# First non-comment, non-empty line is the subject.
subject=""
while IFS= read -r line || [ -n "$line" ]; do
case "$line" in
''|'#'*) continue ;;
esac
subject="$line"
break
done < "$COMMIT_MSG_FILE"

if [ -z "$subject" ]; then
echo "commit-msg: empty commit message" >&2
exit 1
fi

# Pass-through commits generated by git itself.
case "$subject" in
"Merge "*|"Revert \""*|"fixup! "*|"squash! "*|"amend! "*)
exit 0
;;
esac

ALLOWED_TYPES="feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert"
# Description must not start with an uppercase letter β€” kept in sync with the
# subjectPattern in .github/workflows/conventional-commits.yml so the local
# hook is the strictly tighter of the two gates. (Without this guard, a commit
# like "feat: Add thing" passes locally but fails the PR-title CI check.)
PATTERN="^(${ALLOWED_TYPES})(\([^)]+\))?!?: [^A-Z].*"

if printf '%s' "$subject" | grep -Eq "$PATTERN"; then
exit 0
fi

cat >&2 <<EOF
βœ— Commit message does not follow Conventional Commits.

Got: $subject

Expected: <type>(<scope>)!: <description>
(description must start with a lowercase letter)

Allowed types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert
Examples:
feat(router): add weighted round-robin strategy
fix(bedrock): decouple STS region from aws_region_name
chore(deps): bump black to 26.3.1
refactor!: drop Python 3.8 support

See https://www.conventionalcommits.org/en/v1.0.0/

To bypass (use sparingly): git commit --no-verify
EOF
exit 1
92 changes: 92 additions & 0 deletions .githooks/pre-push
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
#!/usr/bin/env bash
#
# pre-push β€” enforce Conventional Branches
# https://conventional-branch.github.io/
#
# Branch format: <type>/<description>
# <type> must be one of: feature, bugfix, hotfix, release, chore
#
# Protected branches (always allowed):
# - main
# - litellm_internal_staging
# - dependabot/*
# - gh-readonly-queue/*
#
# Tag pushes and branch deletions are skipped.
# Bypass: git push --no-verify.

set -eu

ZERO_OID="0000000000000000000000000000000000000000"
ZERO_OID_SHA256="0000000000000000000000000000000000000000000000000000000000000000"
ALLOWED_TYPES="feature|bugfix|hotfix|release|chore"
BRANCH_PATTERN="^(${ALLOWED_TYPES})/.+"

PROTECTED_NAMES="main litellm_internal_staging"
PROTECTED_PREFIXES="dependabot/ gh-readonly-queue/"

is_protected() {
branch="$1"
for name in $PROTECTED_NAMES; do
if [ "$branch" = "$name" ]; then
return 0
fi
done
for prefix in $PROTECTED_PREFIXES; do
case "$branch" in "$prefix"*) return 0 ;; esac
done
return 1
}

invalid=""

while read -r local_ref local_oid remote_ref remote_oid; do
# Branch deletion (no local commit being pushed).
if [ "$local_oid" = "$ZERO_OID" ] || [ "$local_oid" = "$ZERO_OID_SHA256" ]; then
continue
fi

# Only validate branch pushes; ignore tags and other ref namespaces.
case "$remote_ref" in
refs/heads/*) ;;
*) continue ;;
esac

branch="${remote_ref#refs/heads/}"

if is_protected "$branch"; then
continue
fi

if ! printf '%s' "$branch" | grep -Eq "$BRANCH_PATTERN"; then
invalid="$invalid $branch"
fi
done

if [ -n "$invalid" ]; then
cat >&2 <<EOF
βœ— Branch name does not follow Conventional Branches.

Invalid:$invalid

Expected: <type>/<description>

Allowed types: feature, bugfix, hotfix, release, chore
Examples:
feature/weighted-round-robin
bugfix/streaming-empty-chunks
chore/bump-deps
hotfix/auth-bypass

Protected (always allowed): main, litellm_internal_staging,
dependabot/*, gh-readonly-queue/*.

See https://conventional-branch.github.io/

Rename with: git branch -m <new-name>
To bypass (use sparingly): git push --no-verify
EOF
exit 1
fi

exit 0
94 changes: 0 additions & 94 deletions .github/actions/helm-oci-chart-releaser/action.yml

This file was deleted.

35 changes: 21 additions & 14 deletions .github/carto-features.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,34 +11,45 @@
features:
- name: "OCI Gemini Tool Call UUIDs"
source_prs: [68]
description: "Upstream refactored OCI to use modular helpers. Tool call ID generation now uses setdefault in generic.py; separate UUID generation not required."
files:
- litellm/llms/oci/chat/transformation.py
- litellm/llms/oci/chat/generic.py
verification:
- pattern: "uuid.uuid4().hex"
file: litellm/llms/oci/chat/transformation.py
- pattern: "_handle_tool_call_delta"
- pattern: "setdefault"
file: litellm/llms/oci/chat/generic.py
- pattern: "_queue_tool_call_delta_events"
file: litellm/responses/litellm_completion_transformation/streaming_iterator.py

- name: "OCI Parallel Tool Result Reordering"
source_prs: [121]
description: "OCI GENERIC validates tool results positionally against the assistant's toolCalls order, rejecting out-of-order results with \"'toolCallId' of '<id>' not found in 'toolCalls' of previous message\". Parallel tool calls (e.g. xAI Grok) executed concurrently return results in completion order, so the adapter reorders each TOOL run to match the toolCalls order. Not present upstream; candidate for upstreaming."
files:
- litellm/llms/oci/chat/generic.py
verification:
- pattern: "_reorder_tool_results_to_match_tool_calls(new_messages)"
file: litellm/llms/oci/chat/generic.py

- name: "OCI Inline PEM Key Normalization"
source_prs: [17159]
description: "Accepts the PEM private key as a string via oci_key, normalizes escaped newlines, and validates input type. Required for UI-based OCI credentials (textarea field)."
files:
- litellm/llms/oci/chat/transformation.py
- litellm/llms/oci/common_utils.py
verification:
- pattern: "oci_key must be a string containing the PEM private key content"
file: litellm/llms/oci/chat/transformation.py
file: litellm/llms/oci/common_utils.py
- pattern: "load_private_key_from_str(oci_key_content)"
file: litellm/llms/oci/chat/transformation.py
file: litellm/llms/oci/common_utils.py

- name: "Snowflake Streaming + Tool Calling"
source_prs: [38, 58]
description: "Upstream refactored Snowflake to use Anthropic Messages API for Claude. Message transformation is now in _extract_system_and_messages."
files:
- litellm/llms/snowflake/chat/transformation.py
- litellm/responses/litellm_completion_transformation/transformation.py
verification:
- pattern: "SnowflakeStreamingHandler"
file: litellm/llms/snowflake/chat/transformation.py
- pattern: "_transform_messages"
- pattern: "_extract_system_and_messages"
file: litellm/llms/snowflake/chat/transformation.py
- pattern: "tool_choice_value is None and tools"
file: litellm/responses/litellm_completion_transformation/transformation.py
Expand Down Expand Up @@ -81,15 +92,11 @@ features:

- name: "Snowflake Cortex Claude Function-Calling Follow-up Turns"
source_prs: [111]
description: "Unblocks multi-turn Claude function-calling on Cortex: rebuilds assistant tool_use content_list, merges consecutive text+tool_call assistant turns, and strips OpenAI-only annotations that Cortex rejects (390142)."
description: "Strips OpenAI-only 'annotations' fields that the Agents SDK attaches when replaying a prior assistant turn; Cortex's Anthropic-compatible endpoint rejects them as unknown fields on every follow-up turn. Restored as a call site in _extract_system_and_messages after the v1.92.0 rewrite left the original helper defined but unused (CI stayed green because the old pattern only checked the definition existed, not that it was called). NOTE: this PR's original scope also claimed to merge consecutive text+tool_call assistant turns; that behavior is not currently implemented against the new Anthropic-format message builder and is not covered by this entry."
files:
- litellm/llms/snowflake/chat/transformation.py
verification:
- pattern: "def _content_to_text_blocks"
file: litellm/llms/snowflake/chat/transformation.py
- pattern: "def _strip_openai_annotations"
file: litellm/llms/snowflake/chat/transformation.py
- pattern: "text_prelude_blocks"
- pattern: "_strip_openai_annotations(content)"
file: litellm/llms/snowflake/chat/transformation.py

- name: "Snowflake Cortex Array Content Flattening"
Expand Down
Binary file added .github/deploy-on-aws.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/deploy-on-gcp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading