2023-08-24 22:51:02 +08:00
< h1 align = "center" >
2023-08-24 23:32:50 +08:00
🚅 LiteLLM
< / h1 >
< p align = "center" >
2026-04-05 09:20:39 +08:00
< p align = "center" > LiteLLM AI Gateway
2025-12-19 04:00:48 +08:00
< / p >
2026-04-05 09:20:39 +08:00
< p align = "center" > Open Source AI Gateway for 100+ LLMs. Self-hosted. Enterprise-ready. Call any LLM in OpenAI format.< / p >
2024-05-25 00:19:28 +08:00
< p align = "center" >
2024-05-25 00:19:48 +08:00
< a href = "https://render.com/deploy?repo=https://github.com/BerriAI/litellm" target = "_blank" rel = "nofollow" > < img src = "https://render.com/images/deploy-to-render-button.svg" alt = "Deploy to Render" > < / a >
2026-04-05 09:20:39 +08:00
< a href = "https://railway.com/deploy/RhvhdC?referralCode=7mRv9K&utm_medium=integration&utm_source=template&utm_campaign=generic" >
< img src = "https://railway.com/button.svg" alt = "Deploy on Railway" >
2024-05-25 00:07:32 +08:00
< / a >
2024-05-25 00:19:28 +08:00
< / p >
2023-08-24 23:32:50 +08:00
< / p >
2026-04-12 09:34:23 +08:00
< h4 align = "center" > < a href = "https://docs.litellm.ai/docs/simple_proxy" target = "_blank" > LiteLLM Proxy Server (AI Gateway)< / a > | < a href = "https://docs.litellm.ai/docs/enterprise#hosted-litellm-proxy" target = "_blank" > Hosted Proxy< / a > | < a href = "https://litellm.ai/enterprise" target = "_blank" > Enterprise Tier< / a > | < a href = "https://www.litellm.ai/ai-gateway" target = "_blank" > Website< / a > < / h4 >
2023-08-24 22:55:02 +08:00
< h4 align = "center" >
2023-08-24 23:32:50 +08:00
< a href = "https://pypi.org/project/litellm/" target = "_blank" >
2023-08-24 22:55:02 +08:00
< img src = "https://img.shields.io/pypi/v/litellm.svg" alt = "PyPI Version" >
< / a >
2026-04-05 09:20:39 +08:00
< a href = "https://github.com/BerriAI/litellm" target = "_blank" >
< img src = "https://img.shields.io/github/stars/BerriAI/litellm.svg?style=social" alt = "GitHub Stars" >
< / a >
2023-08-27 05:04:51 +08:00
< a href = "https://www.ycombinator.com/companies/berriai" >
< img src = "https://img.shields.io/badge/Y%20Combinator-W23-orange?style=flat-square" alt = "Y Combinator W23" >
< / a >
2023-10-18 04:57:41 +08:00
< a href = "https://wa.link/huol9n" >
< img src = "https://img.shields.io/static/v1?label=Chat%20on&message=WhatsApp&color=success&logo=WhatsApp&style=flat-square" alt = "Whatsapp" >
< / a >
< a href = "https://discord.gg/wuPM9dRgDw" >
< img src = "https://img.shields.io/static/v1?label=Chat%20on&message=Discord&color=blue&logo=Discord&style=flat-square" alt = "Discord" >
< / a >
2025-09-10 23:48:37 +08:00
< a href = "https://www.litellm.ai/support" >
2025-07-01 01:23:53 +08:00
< img src = "https://img.shields.io/static/v1?label=Chat%20on&message=Slack&color=black&logo=Slack&style=flat-square" alt = "Slack" >
< / a >
2026-03-15 09:44:36 +08:00
< a href = "https://codspeed.io/BerriAI/litellm?utm_source=badge" >
< img src = "https://img.shields.io/endpoint?url=https://codspeed.io/badge.json" alt = "CodSpeed" / >
< / a >
2023-08-24 22:55:02 +08:00
< / h4 >
2023-09-27 23:03:39 +08:00
2025-12-19 04:05:48 +08:00
< img width = "2688" height = "1600" alt = "Group 7154 (1)" src = "https://github.com/user-attachments/assets/c5ee0412-6fb5-4fb6-ab5b-bafae4209ca6" / >
2025-12-19 04:05:08 +08:00
2026-04-10 06:41:52 +08:00
---
## What is LiteLLM
LiteLLM is an open source AI Gateway that gives you a single, unified interface to call 100+ LLM providers — OpenAI, Anthropic, Gemini, Bedrock, Azure, and more — using the OpenAI format.
Use it as a **Python SDK** for direct library integration, or deploy the **AI Gateway (Proxy Server)** as a centralized service for your team or organization.
[**Jump to LiteLLM Proxy (LLM Gateway) Docs** ](https://docs.litellm.ai/docs/simple_proxy ) < br >
[**Jump to Supported LLM Providers** ](https://docs.litellm.ai/docs/providers )
---
## Why LiteLLM
Managing LLM calls across providers gets complicated fast — different SDKs, auth patterns, request formats, and error types for every model. LiteLLM removes that friction:
- **Unified API** — one interface for 100+ LLMs, no provider-specific SDK juggling
- **Drop-in OpenAI compatibility** — swap providers without rewriting your code
- **Production-ready gateway** — virtual keys, spend tracking, guardrails, load balancing, and an admin dashboard out of the box
- **8ms P95 latency** at 1k RPS ([benchmarks](https://docs.litellm.ai/docs/benchmarks))
### OSS Adopters
< table >
< tr >
< td > < img height = "60" alt = "Stripe" src = "https://github.com/user-attachments/assets/f7296d4f-9fbd-460d-9d05-e4df31697c4b" / > < / td >
< td > < img height = "60" alt = "image" src = "https://github.com/user-attachments/assets/436fca71-988b-40bb-b5fe-8450c80fdbd0" / > < / td >
< td > < img height = "60" alt = "Google ADK" src = "https://github.com/user-attachments/assets/caf270a2-5aee-45c4-8222-41a2070c4f19" / > < / td >
< td > < img height = "60" alt = "Greptile" src = "https://github.com/user-attachments/assets/0be4bd8a-7cfa-48d3-9090-f415fe948280" / > < / td >
< td > < img height = "60" alt = "OpenHands" src = "https://github.com/user-attachments/assets/a6150c4c-149e-4cae-888b-8b92be6e003f" / > < / td >
< td > < h2 > Netflix< / h2 > < / td >
< td > < img height = "60" alt = "OpenAI Agents SDK" src = "https://github.com/user-attachments/assets/c02f7be0-8c2e-4d27-aea7-7c024bfaebc0" / > < / td >
< / tr >
< / table >
---
2023-09-03 08:42:59 +08:00
2026-04-10 06:41:52 +08:00
## Features
2024-03-27 01:34:16 +08:00
2025-12-19 04:00:48 +08:00
< details open >
< summary > < b > LLMs< / b > - Call 100+ LLMs (Python SDK + AI Gateway)< / summary >
2024-02-14 09:19:41 +08:00
2025-12-19 04:00:48 +08:00
[**All Supported Endpoints** ](https://docs.litellm.ai/docs/supported_endpoints ) - `/chat/completions` , `/responses` , `/embeddings` , `/images` , `/audio` , `/batches` , `/rerank` , `/a2a` , `/messages` and more.
2024-02-28 14:07:13 +08:00
2025-12-19 04:00:48 +08:00
### Python SDK
2023-09-27 23:04:37 +08:00
2023-12-27 20:00:37 +08:00
```shell
build: migrate packaging, CI, and Docker from Poetry to uv (#25007)
* build: migrate packaging metadata to uv
* ci: move automation and local tooling to uv
* docker: migrate image builds and runtime setup to uv
* docs: update install and deployment guidance for uv
* chore: align auxiliary scripts and tests with uv
* test: harden test_litellm isolation
* fix: keep release and health check images self-contained
* build: pin uv tooling and health check deps
* test: isolate bedrock image request formatting from suite state
* test: cover sandbox executor requirements flow
* ci: fix circleci no-op command steps
* ci: fix circleci publish workflow parsing
* fix: stabilize remaining uv migration CI checks
* ci: increase matrix test timeout headroom
* fix: restore published docker and license coverage
* fix: restore proxy runtime build parity
* fix: restore proxy extras parity and venv migrations
* ci: persist uv path across circleci steps
* fix: keep psycopg binary in default test env
* docker: preserve prisma cache across stages
* test: run local proxy checks through uv python
* build: restore runtime deps moved into ci
* build: refresh uv lock after upstream merge
* fix: restore module import in test_check_migration after merge
The conflict resolution imported only the function but the test body
references check_migration as a module throughout.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: revert dependency promotions, remove nodejs-wheel-binaries, fix Docker layer caching
- Move google-generativeai, Pillow, tenacity back to ci group (they are
lazily imported and bloat the base SDK install needlessly)
- Remove nodejs-wheel-binaries from extra_proxy and proxy-dev (redundant
in Docker where system Node.js is already installed via apk)
- Remove all nodejs-wheel node replacement and venv npm patching blocks
from Dockerfiles since the wheel is no longer installed
- Add --no-default-groups to CodSpeed benchmark workflow so the benchmark
environment matches the old minimal pip install footprint
- Apply standard uv two-phase Docker pattern: copy metadata first, install
deps (cached layer), then copy source and install project
- Replace CircleCI enterprise no-op with proper uv sync command
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore: regenerate uv.lock after removing nodejs-wheel-binaries
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): use cache/restore instead of cache to prevent cache poisoning
The old workflow used actions/cache/restore (read-only). The uv migration
changed it to actions/cache (read-write), which zizmor flags as a cache
poisoning risk. Restore the safer read-only variant.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): disable setup-uv built-in cache to silence cache-poisoning alert
The setup-uv action enables caching by default, which zizmor flags as a
cache poisoning risk. Disable it since we already use a read-only
cache/restore step.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): disable setup-uv cache in publish workflow
Silences zizmor cache-poisoning alert. Publishing workflow runs
infrequently on protected branches so caching adds no real benefit.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(test): remove duplicate verbose_logger mock in test_check_migration
The logger was patched twice — first via mocker.patch() then via
mocker.patch.object(autospec=True). The second call fails because
autospec cannot inspect an already-mocked attribute. Remove the
redundant first patch.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): free disk space before Docker build in test-server-root-path
The Dockerfile.non_root build ran out of disk on the CI runner. Remove
Android SDK, .NET, Boost, and GHC toolchains (~12GB) to free space.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 02:46:23 +08:00
uv add litellm
2023-07-31 22:58:10 +08:00
```
2023-07-27 08:44:43 +08:00
```python
2023-07-27 08:46:23 +08:00
from litellm import completion
2023-08-30 01:39:33 +08:00
import os
2023-09-20 08:10:55 +08:00
2024-02-28 14:07:13 +08:00
os.environ["OPENAI_API_KEY"] = "your-openai-key"
2025-02-17 23:34:15 +08:00
os.environ["ANTHROPIC_API_KEY"] = "your-anthropic-key"
2023-07-27 08:46:23 +08:00
2025-12-19 04:00:48 +08:00
# OpenAI
response = completion(model="openai/gpt-4o", messages=[{"role": "user", "content": "Hello!"}])
2023-07-27 08:44:34 +08:00
2025-12-19 04:00:48 +08:00
# Anthropic
response = completion(model="anthropic/claude-sonnet-4-20250514", messages=[{"role": "user", "content": "Hello!"}])
2023-07-27 08:44:34 +08:00
```
2023-08-01 23:18:44 +08:00
2025-12-19 04:00:48 +08:00
### AI Gateway (Proxy Server)
2024-12-17 00:36:57 +08:00
2025-12-19 04:00:48 +08:00
[**Getting Started - E2E Tutorial** ](https://docs.litellm.ai/docs/proxy/docker_quick_start ) - Setup virtual keys, make your first request
2025-12-18 05:00:15 +08:00
2025-12-19 04:00:48 +08:00
```shell
build: migrate packaging, CI, and Docker from Poetry to uv (#25007)
* build: migrate packaging metadata to uv
* ci: move automation and local tooling to uv
* docker: migrate image builds and runtime setup to uv
* docs: update install and deployment guidance for uv
* chore: align auxiliary scripts and tests with uv
* test: harden test_litellm isolation
* fix: keep release and health check images self-contained
* build: pin uv tooling and health check deps
* test: isolate bedrock image request formatting from suite state
* test: cover sandbox executor requirements flow
* ci: fix circleci no-op command steps
* ci: fix circleci publish workflow parsing
* fix: stabilize remaining uv migration CI checks
* ci: increase matrix test timeout headroom
* fix: restore published docker and license coverage
* fix: restore proxy runtime build parity
* fix: restore proxy extras parity and venv migrations
* ci: persist uv path across circleci steps
* fix: keep psycopg binary in default test env
* docker: preserve prisma cache across stages
* test: run local proxy checks through uv python
* build: restore runtime deps moved into ci
* build: refresh uv lock after upstream merge
* fix: restore module import in test_check_migration after merge
The conflict resolution imported only the function but the test body
references check_migration as a module throughout.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: revert dependency promotions, remove nodejs-wheel-binaries, fix Docker layer caching
- Move google-generativeai, Pillow, tenacity back to ci group (they are
lazily imported and bloat the base SDK install needlessly)
- Remove nodejs-wheel-binaries from extra_proxy and proxy-dev (redundant
in Docker where system Node.js is already installed via apk)
- Remove all nodejs-wheel node replacement and venv npm patching blocks
from Dockerfiles since the wheel is no longer installed
- Add --no-default-groups to CodSpeed benchmark workflow so the benchmark
environment matches the old minimal pip install footprint
- Apply standard uv two-phase Docker pattern: copy metadata first, install
deps (cached layer), then copy source and install project
- Replace CircleCI enterprise no-op with proper uv sync command
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore: regenerate uv.lock after removing nodejs-wheel-binaries
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): use cache/restore instead of cache to prevent cache poisoning
The old workflow used actions/cache/restore (read-only). The uv migration
changed it to actions/cache (read-write), which zizmor flags as a cache
poisoning risk. Restore the safer read-only variant.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): disable setup-uv built-in cache to silence cache-poisoning alert
The setup-uv action enables caching by default, which zizmor flags as a
cache poisoning risk. Disable it since we already use a read-only
cache/restore step.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): disable setup-uv cache in publish workflow
Silences zizmor cache-poisoning alert. Publishing workflow runs
infrequently on protected branches so caching adds no real benefit.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(test): remove duplicate verbose_logger mock in test_check_migration
The logger was patched twice — first via mocker.patch() then via
mocker.patch.object(autospec=True). The second call fails because
autospec cannot inspect an already-mocked attribute. Remove the
redundant first patch.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): free disk space before Docker build in test-server-root-path
The Dockerfile.non_root build ran out of disk on the CI runner. Remove
Android SDK, .NET, Boost, and GHC toolchains (~12GB) to free space.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 02:46:23 +08:00
uv tool install 'litellm[proxy]'
2025-12-19 04:00:48 +08:00
litellm --model gpt-4o
```
2025-12-18 05:00:15 +08:00
```python
2025-12-19 04:00:48 +08:00
import openai
2025-12-18 05:00:15 +08:00
2025-12-19 04:00:48 +08:00
client = openai.OpenAI(api_key="anything", base_url="http://0.0.0.0:4000")
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello!"}]
2025-12-18 05:00:15 +08:00
)
```
2025-12-19 04:00:48 +08:00
[**Docs: LLM Providers** ](https://docs.litellm.ai/docs/providers )
2023-12-12 00:30:55 +08:00
2025-12-19 04:00:48 +08:00
< / details >
2023-12-12 00:30:55 +08:00
2025-12-19 04:00:48 +08:00
< details >
< summary > < b > Agents< / b > - Invoke A2A Agents (Python SDK + AI Gateway)< / summary >
2023-12-12 00:30:55 +08:00
2025-12-19 04:00:48 +08:00
[**Supported Providers** ](https://docs.litellm.ai/docs/a2a#add-a2a-agents ) - LangGraph, Vertex AI Agent Engine, Azure AI Foundry, Bedrock AgentCore, Pydantic AI
2024-02-28 14:07:13 +08:00
2025-12-19 04:00:48 +08:00
### Python SDK - A2A Protocol
2024-02-28 14:07:13 +08:00
2023-08-06 06:12:34 +08:00
```python
2025-12-19 04:00:48 +08:00
from litellm.a2a_protocol import A2AClient
from a2a.types import SendMessageRequest, MessageSendParams
from uuid import uuid4
client = A2AClient(base_url="http://localhost:10001")
request = SendMessageRequest(
id=str(uuid4()),
params=MessageSendParams(
message={
"role": "user",
"parts": [{"kind": "text", "text": "Hello!"}],
"messageId": uuid4().hex,
2024-12-17 00:36:57 +08:00
}
2025-12-19 04:00:48 +08:00
)
)
response = await client.send_message(request)
2023-08-06 06:10:49 +08:00
```
2023-10-29 03:29:44 +08:00
2025-12-19 04:00:48 +08:00
### AI Gateway (Proxy Server)
2023-10-29 03:29:44 +08:00
2025-12-19 04:00:48 +08:00
**Step 1.** [Add your Agent to the AI Gateway ](https://docs.litellm.ai/docs/a2a#adding-your-agent )
2023-10-29 03:29:44 +08:00
2025-12-19 04:00:48 +08:00
**Step 2.** Call Agent via A2A SDK
2023-10-29 03:29:44 +08:00
2025-12-19 04:00:48 +08:00
```python
from a2a.client import A2ACardResolver, A2AClient
from a2a.types import MessageSendParams, SendMessageRequest
from uuid import uuid4
import httpx
base_url = "http://localhost:4000/a2a/my-agent" # LiteLLM proxy + agent name
headers = {"Authorization": "Bearer sk-1234"} # LiteLLM Virtual Key
async with httpx.AsyncClient(headers=headers) as httpx_client:
resolver = A2ACardResolver(httpx_client=httpx_client, base_url=base_url)
agent_card = await resolver.get_agent_card()
client = A2AClient(httpx_client=httpx_client, agent_card=agent_card)
request = SendMessageRequest(
id=str(uuid4()),
params=MessageSendParams(
message={
"role": "user",
"parts": [{"kind": "text", "text": "Hello!"}],
"messageId": uuid4().hex,
}
)
)
response = await client.send_message(request)
2023-10-29 03:25:58 +08:00
```
2025-12-19 04:00:48 +08:00
[**Docs: A2A Agent Gateway** ](https://docs.litellm.ai/docs/a2a )
2024-04-21 00:48:49 +08:00
2025-12-19 04:00:48 +08:00
< / details >
2023-12-26 14:57:37 +08:00
2025-12-19 04:00:48 +08:00
< details >
< summary > < b > MCP Tools< / b > - Connect MCP servers to any LLM (Python SDK + AI Gateway)< / summary >
2024-02-28 14:07:13 +08:00
2025-12-19 04:00:48 +08:00
### Python SDK - MCP Bridge
2023-12-28 14:28:33 +08:00
2025-12-19 04:00:48 +08:00
```python
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
from litellm import experimental_mcp_client
import litellm
2024-06-02 07:53:06 +08:00
2025-12-19 04:00:48 +08:00
server_params = StdioServerParameters(command="python", args=["mcp_server.py"])
2023-12-27 20:00:37 +08:00
2025-12-19 04:00:48 +08:00
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
2023-12-27 20:00:37 +08:00
2025-12-19 04:00:48 +08:00
# Load MCP tools in OpenAI format
tools = await experimental_mcp_client.load_mcp_tools(session=session, format="openai")
2024-02-28 14:07:13 +08:00
2025-12-19 04:00:48 +08:00
# Use with any LiteLLM model
response = await litellm.acompletion(
model="gpt-4o",
messages=[{"role": "user", "content": "What's 3 + 5?"}],
tools=tools
)
2023-12-26 14:57:37 +08:00
```
2025-12-19 04:00:48 +08:00
### AI Gateway - MCP Gateway
2024-07-26 11:10:02 +08:00
2025-12-19 04:00:48 +08:00
**Step 1.** [Add your MCP Server to the AI Gateway ](https://docs.litellm.ai/docs/mcp#adding-your-mcp )
2024-07-26 11:10:02 +08:00
2025-12-19 04:00:48 +08:00
**Step 2.** Call MCP tools via `/chat/completions`
2024-06-02 07:53:06 +08:00
```bash
2025-12-19 04:00:48 +08:00
curl -X POST 'http://0.0.0.0:4000/v1/chat/completions' \
-H 'Authorization: Bearer sk-1234' \
-H 'Content-Type: application/json' \
-d '{
"model": "gpt-4o",
"messages": [{"role": "user", "content": "Summarize the latest open PR"}],
"tools": [{
"type": "mcp",
"server_url": "litellm_proxy/mcp/github",
"server_label": "github_mcp",
"require_approval": "never"
}]
}'
2024-06-02 07:53:06 +08:00
```
2025-12-19 04:00:48 +08:00
### Use with Cursor IDE
2024-06-02 07:53:06 +08:00
2025-12-19 04:00:48 +08:00
```json
{
"mcpServers": {
"LiteLLM": {
2026-02-06 02:50:45 +08:00
"url": "http://localhost:4000/mcp/",
2025-12-19 04:00:48 +08:00
"headers": {
"x-litellm-api-key": "Bearer sk-1234"
}
}
}
}
```
2024-02-10 01:30:16 +08:00
2025-12-19 04:00:48 +08:00
[**Docs: MCP Gateway** ](https://docs.litellm.ai/docs/mcp )
< / details >
2026-04-10 06:41:52 +08:00
### Supported Providers ([Website Supported Models](https://models.litellm.ai/) | [Docs](https://docs.litellm.ai/docs/providers))
2025-10-31 08:05:32 +08:00
| Provider | `/chat/completions` | `/messages` | `/responses` | `/embeddings` | `/image/generations` | `/audio/transcriptions` | `/audio/speech` | `/moderations` | `/batches` | `/rerank` |
|-------------------------------------------------------------------------------------|---------------------|-------------|--------------|---------------|----------------------|-------------------------|-----------------|----------------|-----------|-----------|
2026-01-08 00:16:54 +08:00
| [Abliteration (`abliteration`) ](https://docs.litellm.ai/docs/providers/abliteration ) | ✅ | | | | | | | | | |
2025-10-31 08:05:32 +08:00
| [AI/ML API (`aiml`) ](https://docs.litellm.ai/docs/providers/aiml ) | ✅ | ✅ | ✅ | ✅ | ✅ | | | | | |
| [AI21 (`ai21`) ](https://docs.litellm.ai/docs/providers/ai21 ) | ✅ | ✅ | ✅ | | | | | | | |
| [AI21 Chat (`ai21_chat`) ](https://docs.litellm.ai/docs/providers/ai21 ) | ✅ | ✅ | ✅ | | | | | | | |
| [Aleph Alpha ](https://docs.litellm.ai/docs/providers/aleph_alpha ) | ✅ | ✅ | ✅ | | | | | | | |
2025-12-19 21:37:34 +08:00
| [Amazon Nova ](https://docs.litellm.ai/docs/providers/amazon_nova ) | ✅ | ✅ | ✅ | | | | | | | |
2025-10-31 08:05:32 +08:00
| [Anthropic (`anthropic`) ](https://docs.litellm.ai/docs/providers/anthropic ) | ✅ | ✅ | ✅ | | | | | | ✅ | |
| [Anthropic Text (`anthropic_text`) ](https://docs.litellm.ai/docs/providers/anthropic ) | ✅ | ✅ | ✅ | | | | | | ✅ | |
| [Anyscale ](https://docs.litellm.ai/docs/providers/anyscale ) | ✅ | ✅ | ✅ | | | | | | | |
| [AssemblyAI (`assemblyai`) ](https://docs.litellm.ai/docs/pass_through/assembly_ai ) | ✅ | ✅ | ✅ | | | ✅ | | | | |
| [Auto Router (`auto_router`) ](https://docs.litellm.ai/docs/proxy/auto_routing ) | ✅ | ✅ | ✅ | | | | | | | |
| [AWS - Bedrock (`bedrock`) ](https://docs.litellm.ai/docs/providers/bedrock ) | ✅ | ✅ | ✅ | ✅ | | | | | | ✅ |
| [AWS - Sagemaker (`sagemaker`) ](https://docs.litellm.ai/docs/providers/aws_sagemaker ) | ✅ | ✅ | ✅ | ✅ | | | | | | |
| [Azure (`azure`) ](https://docs.litellm.ai/docs/providers/azure ) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| [Azure AI (`azure_ai`) ](https://docs.litellm.ai/docs/providers/azure_ai ) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| [Azure Text (`azure_text`) ](https://docs.litellm.ai/docs/providers/azure ) | ✅ | ✅ | ✅ | | | ✅ | ✅ | ✅ | ✅ | |
| [Baseten (`baseten`) ](https://docs.litellm.ai/docs/providers/baseten ) | ✅ | ✅ | ✅ | | | | | | | |
| [Bytez (`bytez`) ](https://docs.litellm.ai/docs/providers/bytez ) | ✅ | ✅ | ✅ | | | | | | | |
| [Cerebras (`cerebras`) ](https://docs.litellm.ai/docs/providers/cerebras ) | ✅ | ✅ | ✅ | | | | | | | |
| [Clarifai (`clarifai`) ](https://docs.litellm.ai/docs/providers/clarifai ) | ✅ | ✅ | ✅ | | | | | | | |
| [Cloudflare AI Workers (`cloudflare`) ](https://docs.litellm.ai/docs/providers/cloudflare_workers ) | ✅ | ✅ | ✅ | | | | | | | |
| [Codestral (`codestral`) ](https://docs.litellm.ai/docs/providers/codestral ) | ✅ | ✅ | ✅ | | | | | | | |
| [Cohere (`cohere`) ](https://docs.litellm.ai/docs/providers/cohere ) | ✅ | ✅ | ✅ | ✅ | | | | | | ✅ |
| [Cohere Chat (`cohere_chat`) ](https://docs.litellm.ai/docs/providers/cohere ) | ✅ | ✅ | ✅ | | | | | | | |
| [CometAPI (`cometapi`) ](https://docs.litellm.ai/docs/providers/cometapi ) | ✅ | ✅ | ✅ | ✅ | | | | | | |
| [CompactifAI (`compactifai`) ](https://docs.litellm.ai/docs/providers/compactifai ) | ✅ | ✅ | ✅ | | | | | | | |
| [Custom (`custom`) ](https://docs.litellm.ai/docs/providers/custom_llm_server ) | ✅ | ✅ | ✅ | | | | | | | |
| [Custom OpenAI (`custom_openai`) ](https://docs.litellm.ai/docs/providers/openai_compatible ) | ✅ | ✅ | ✅ | | | ✅ | ✅ | ✅ | ✅ | |
| [Dashscope (`dashscope`) ](https://docs.litellm.ai/docs/providers/dashscope ) | ✅ | ✅ | ✅ | | | | | | | |
| [Databricks (`databricks`) ](https://docs.litellm.ai/docs/providers/databricks ) | ✅ | ✅ | ✅ | | | | | | | |
| [DataRobot (`datarobot`) ](https://docs.litellm.ai/docs/providers/datarobot ) | ✅ | ✅ | ✅ | | | | | | | |
| [Deepgram (`deepgram`) ](https://docs.litellm.ai/docs/providers/deepgram ) | ✅ | ✅ | ✅ | | | ✅ | | | | |
| [DeepInfra (`deepinfra`) ](https://docs.litellm.ai/docs/providers/deepinfra ) | ✅ | ✅ | ✅ | | | | | | | |
| [Deepseek (`deepseek`) ](https://docs.litellm.ai/docs/providers/deepseek ) | ✅ | ✅ | ✅ | | | | | | | |
2026-02-08 14:29:07 +08:00
| [ElevenLabs (`elevenlabs`) ](https://docs.litellm.ai/docs/providers/elevenlabs ) | ✅ | ✅ | ✅ | | | ✅ | ✅ | | | |
2025-10-31 08:05:32 +08:00
| [Empower (`empower`) ](https://docs.litellm.ai/docs/providers/empower ) | ✅ | ✅ | ✅ | | | | | | | |
| [Fal AI (`fal_ai`) ](https://docs.litellm.ai/docs/providers/fal_ai ) | ✅ | ✅ | ✅ | | ✅ | | | | | |
| [Featherless AI (`featherless_ai`) ](https://docs.litellm.ai/docs/providers/featherless_ai ) | ✅ | ✅ | ✅ | | | | | | | |
| [Fireworks AI (`fireworks_ai`) ](https://docs.litellm.ai/docs/providers/fireworks_ai ) | ✅ | ✅ | ✅ | | | | | | | |
| [FriendliAI (`friendliai`) ](https://docs.litellm.ai/docs/providers/friendliai ) | ✅ | ✅ | ✅ | | | | | | | |
| [Galadriel (`galadriel`) ](https://docs.litellm.ai/docs/providers/galadriel ) | ✅ | ✅ | ✅ | | | | | | | |
2025-12-04 13:22:08 +08:00
| [GitHub Copilot (`github_copilot`) ](https://docs.litellm.ai/docs/providers/github_copilot ) | ✅ | ✅ | ✅ | ✅ | | | | | | |
2025-10-31 08:05:32 +08:00
| [GitHub Models (`github`) ](https://docs.litellm.ai/docs/providers/github ) | ✅ | ✅ | ✅ | | | | | | | |
| [Google - PaLM ](https://docs.litellm.ai/docs/providers/palm ) | ✅ | ✅ | ✅ | | | | | | | |
| [Google - Vertex AI (`vertex_ai`) ](https://docs.litellm.ai/docs/providers/vertex ) | ✅ | ✅ | ✅ | ✅ | ✅ | | | | | |
| [Google AI Studio - Gemini (`gemini`) ](https://docs.litellm.ai/docs/providers/gemini ) | ✅ | ✅ | ✅ | | | | | | | |
| [GradientAI (`gradient_ai`) ](https://docs.litellm.ai/docs/providers/gradient_ai ) | ✅ | ✅ | ✅ | | | | | | | |
| [Groq AI (`groq`) ](https://docs.litellm.ai/docs/providers/groq ) | ✅ | ✅ | ✅ | | | | | | | |
| [Heroku (`heroku`) ](https://docs.litellm.ai/docs/providers/heroku ) | ✅ | ✅ | ✅ | | | | | | | |
| [Hosted VLLM (`hosted_vllm`) ](https://docs.litellm.ai/docs/providers/vllm ) | ✅ | ✅ | ✅ | | | | | | | |
| [Huggingface (`huggingface`) ](https://docs.litellm.ai/docs/providers/huggingface ) | ✅ | ✅ | ✅ | ✅ | | | | | | ✅ |
| [Hyperbolic (`hyperbolic`) ](https://docs.litellm.ai/docs/providers/hyperbolic ) | ✅ | ✅ | ✅ | | | | | | | |
| [IBM - Watsonx.ai (`watsonx`) ](https://docs.litellm.ai/docs/providers/watsonx ) | ✅ | ✅ | ✅ | ✅ | | | | | | |
| [Infinity (`infinity`) ](https://docs.litellm.ai/docs/providers/infinity ) | | | | ✅ | | | | | | |
| [Jina AI (`jina_ai`) ](https://docs.litellm.ai/docs/providers/jina_ai ) | | | | ✅ | | | | | | |
| [Lambda AI (`lambda_ai`) ](https://docs.litellm.ai/docs/providers/lambda_ai ) | ✅ | ✅ | ✅ | | | | | | | |
| [Lemonade (`lemonade`) ](https://docs.litellm.ai/docs/providers/lemonade ) | ✅ | ✅ | ✅ | | | | | | | |
| [LiteLLM Proxy (`litellm_proxy`) ](https://docs.litellm.ai/docs/providers/litellm_proxy ) | ✅ | ✅ | ✅ | ✅ | ✅ | | | | | |
| [Llamafile (`llamafile`) ](https://docs.litellm.ai/docs/providers/llamafile ) | ✅ | ✅ | ✅ | | | | | | | |
| [LM Studio (`lm_studio`) ](https://docs.litellm.ai/docs/providers/lm_studio ) | ✅ | ✅ | ✅ | | | | | | | |
| [Maritalk (`maritalk`) ](https://docs.litellm.ai/docs/providers/maritalk ) | ✅ | ✅ | ✅ | | | | | | | |
| [Meta - Llama API (`meta_llama`) ](https://docs.litellm.ai/docs/providers/meta_llama ) | ✅ | ✅ | ✅ | | | | | | | |
| [Mistral AI API (`mistral`) ](https://docs.litellm.ai/docs/providers/mistral ) | ✅ | ✅ | ✅ | ✅ | | | | | | |
| [Moonshot (`moonshot`) ](https://docs.litellm.ai/docs/providers/moonshot ) | ✅ | ✅ | ✅ | | | | | | | |
| [Morph (`morph`) ](https://docs.litellm.ai/docs/providers/morph ) | ✅ | ✅ | ✅ | | | | | | | |
| [Nebius AI Studio (`nebius`) ](https://docs.litellm.ai/docs/providers/nebius ) | ✅ | ✅ | ✅ | ✅ | | | | | | |
| [NLP Cloud (`nlp_cloud`) ](https://docs.litellm.ai/docs/providers/nlp_cloud ) | ✅ | ✅ | ✅ | | | | | | | |
| [Novita AI (`novita`) ](https://novita.ai/models/llm?utm_source=github_litellm&utm_medium=github_readme&utm_campaign=github_link ) | ✅ | ✅ | ✅ | | | | | | | |
| [Nscale (`nscale`) ](https://docs.litellm.ai/docs/providers/nscale ) | ✅ | ✅ | ✅ | | | | | | | |
| [Nvidia NIM (`nvidia_nim`) ](https://docs.litellm.ai/docs/providers/nvidia_nim ) | ✅ | ✅ | ✅ | | | | | | | |
| [OCI (`oci`) ](https://docs.litellm.ai/docs/providers/oci ) | ✅ | ✅ | ✅ | | | | | | | |
| [Ollama (`ollama`) ](https://docs.litellm.ai/docs/providers/ollama ) | ✅ | ✅ | ✅ | ✅ | | | | | | |
| [Ollama Chat (`ollama_chat`) ](https://docs.litellm.ai/docs/providers/ollama ) | ✅ | ✅ | ✅ | | | | | | | |
| [Oobabooga (`oobabooga`) ](https://docs.litellm.ai/docs/providers/openai_compatible ) | ✅ | ✅ | ✅ | | | ✅ | ✅ | ✅ | ✅ | |
| [OpenAI (`openai`) ](https://docs.litellm.ai/docs/providers/openai ) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| [OpenAI-like (`openai_like`) ](https://docs.litellm.ai/docs/providers/openai_compatible ) | | | | ✅ | | | | | | |
| [OpenRouter (`openrouter`) ](https://docs.litellm.ai/docs/providers/openrouter ) | ✅ | ✅ | ✅ | | | | | | | |
| [OVHCloud AI Endpoints (`ovhcloud`) ](https://docs.litellm.ai/docs/providers/ovhcloud ) | ✅ | ✅ | ✅ | | | | | | | |
| [Perplexity AI (`perplexity`) ](https://docs.litellm.ai/docs/providers/perplexity ) | ✅ | ✅ | ✅ | | | | | | | |
| [Petals (`petals`) ](https://docs.litellm.ai/docs/providers/petals ) | ✅ | ✅ | ✅ | | | | | | | |
| [Predibase (`predibase`) ](https://docs.litellm.ai/docs/providers/predibase ) | ✅ | ✅ | ✅ | | | | | | | |
| [Recraft (`recraft`) ](https://docs.litellm.ai/docs/providers/recraft ) | | | | | ✅ | | | | | |
| [Replicate (`replicate`) ](https://docs.litellm.ai/docs/providers/replicate ) | ✅ | ✅ | ✅ | | | | | | | |
| [Sagemaker Chat (`sagemaker_chat`) ](https://docs.litellm.ai/docs/providers/aws_sagemaker ) | ✅ | ✅ | ✅ | | | | | | | |
| [Sambanova (`sambanova`) ](https://docs.litellm.ai/docs/providers/sambanova ) | ✅ | ✅ | ✅ | | | | | | | |
| [Snowflake (`snowflake`) ](https://docs.litellm.ai/docs/providers/snowflake ) | ✅ | ✅ | ✅ | | | | | | | |
| [Text Completion Codestral (`text-completion-codestral`) ](https://docs.litellm.ai/docs/providers/codestral ) | ✅ | ✅ | ✅ | | | | | | | |
| [Text Completion OpenAI (`text-completion-openai`) ](https://docs.litellm.ai/docs/providers/text_completion_openai ) | ✅ | ✅ | ✅ | | | ✅ | ✅ | ✅ | ✅ | |
| [Together AI (`together_ai`) ](https://docs.litellm.ai/docs/providers/togetherai ) | ✅ | ✅ | ✅ | | | | | | | |
| [Topaz (`topaz`) ](https://docs.litellm.ai/docs/providers/topaz ) | ✅ | ✅ | ✅ | | | | | | | |
| [Triton (`triton`) ](https://docs.litellm.ai/docs/providers/triton-inference-server ) | ✅ | ✅ | ✅ | | | | | | | |
| [V0 (`v0`) ](https://docs.litellm.ai/docs/providers/v0 ) | ✅ | ✅ | ✅ | | | | | | | |
| [Vercel AI Gateway (`vercel_ai_gateway`) ](https://docs.litellm.ai/docs/providers/vercel_ai_gateway ) | ✅ | ✅ | ✅ | | | | | | | |
| [VLLM (`vllm`) ](https://docs.litellm.ai/docs/providers/vllm ) | ✅ | ✅ | ✅ | | | | | | | |
| [Volcengine (`volcengine`) ](https://docs.litellm.ai/docs/providers/volcano ) | ✅ | ✅ | ✅ | | | | | | | |
| [Voyage AI (`voyage`) ](https://docs.litellm.ai/docs/providers/voyage ) | | | | ✅ | | | | | | |
| [WandB Inference (`wandb`) ](https://docs.litellm.ai/docs/providers/wandb_inference ) | ✅ | ✅ | ✅ | | | | | | | |
| [Watsonx Text (`watsonx_text`) ](https://docs.litellm.ai/docs/providers/watsonx ) | ✅ | ✅ | ✅ | | | | | | | |
| [xAI (`xai`) ](https://docs.litellm.ai/docs/providers/xai ) | ✅ | ✅ | ✅ | | | | | | | |
| [Xinference (`xinference`) ](https://docs.litellm.ai/docs/providers/xinference ) | | | | ✅ | | | | | | |
2025-05-28 02:05:22 +08:00
2023-10-01 00:48:45 +08:00
[**Read the Docs** ](https://docs.litellm.ai/docs/ )
2023-10-18 04:38:55 +08:00
2026-04-10 06:41:52 +08:00
---
## Get Started
You can use LiteLLM through either the Proxy Server or Python SDK. Both give you a unified interface to access multiple LLMs (100+ LLMs). Choose the option that best fits your needs:
< table style = {{width: ' 100 % ' , tableLayout: ' fixed ' } } >
< thead >
< tr >
< th style = {{width: ' 14 % ' } } > < / th >
< th style = {{width: ' 43 % ' } } > < strong > < a href = "https://docs.litellm.ai/docs/simple_proxy" > LiteLLM AI Gateway< / a > < / strong > < / th >
< th style = {{width: ' 43 % ' } } > < strong > < a href = "https://docs.litellm.ai/docs/" > LiteLLM Python SDK< / a > < / strong > < / th >
< / tr >
< / thead >
< tbody >
< tr >
< td style = {{width: ' 14 % ' } } > < strong > Use Case< / strong > < / td >
< td style = {{width: ' 43 % ' } } > Central service (LLM Gateway) to access multiple LLMs< / td >
< td style = {{width: ' 43 % ' } } > Use LiteLLM directly in your Python code< / td >
< / tr >
< tr >
< td style = {{width: ' 14 % ' } } > < strong > Who Uses It?< / strong > < / td >
< td style = {{width: ' 43 % ' } } > Gen AI Enablement / ML Platform Teams< / td >
< td style = {{width: ' 43 % ' } } > Developers building LLM projects< / td >
< / tr >
< tr >
< td style = {{width: ' 14 % ' } } > < strong > Key Features< / strong > < / td >
< td style = {{width: ' 43 % ' } } > Centralized API gateway with authentication and authorization, multi-tenant cost tracking and spend management per project/user, per-project customization (logging, guardrails, caching), virtual keys for secure access control, admin dashboard UI for monitoring and management< / td >
< td style = {{width: ' 43 % ' } } > Direct Python library integration in your codebase, Router with retry/fallback logic across multiple deployments (e.g. Azure/OpenAI) - < a href = "https://docs.litellm.ai/docs/routing" > Router< / a > , application-level load balancing and cost tracking, exception handling with OpenAI-compatible errors, observability callbacks (Lunary, MLflow, Langfuse, etc.)< / td >
< / tr >
< / tbody >
< / table >
**Stable Release:** Use docker images with the `-stable` tag. These have undergone 12 hour load tests, before being published. [More information about the release cycle here ](https://docs.litellm.ai/docs/proxy/release_cycle )
Support for more providers. Missing a provider or LLM Platform, raise a [feature request ](https://github.com/BerriAI/litellm/issues/new?assignees=&labels=enhancement&projects=&template=feature_request.yml&title=%5BFeature%5D%3A+ ).
### Run in Developer Mode
#### Services
2025-09-25 00:57:21 +08:00
1. Setup .env file in root
2. Run dependant services `docker-compose up db prometheus`
2025-06-07 05:19:28 +08:00
2026-04-10 06:41:52 +08:00
#### Backend
2025-09-25 00:57:21 +08:00
1. (In root) create virtual environment `python -m venv .venv`
2. Activate virtual environment `source .venv/bin/activate`
build: migrate packaging, CI, and Docker from Poetry to uv (#25007)
* build: migrate packaging metadata to uv
* ci: move automation and local tooling to uv
* docker: migrate image builds and runtime setup to uv
* docs: update install and deployment guidance for uv
* chore: align auxiliary scripts and tests with uv
* test: harden test_litellm isolation
* fix: keep release and health check images self-contained
* build: pin uv tooling and health check deps
* test: isolate bedrock image request formatting from suite state
* test: cover sandbox executor requirements flow
* ci: fix circleci no-op command steps
* ci: fix circleci publish workflow parsing
* fix: stabilize remaining uv migration CI checks
* ci: increase matrix test timeout headroom
* fix: restore published docker and license coverage
* fix: restore proxy runtime build parity
* fix: restore proxy extras parity and venv migrations
* ci: persist uv path across circleci steps
* fix: keep psycopg binary in default test env
* docker: preserve prisma cache across stages
* test: run local proxy checks through uv python
* build: restore runtime deps moved into ci
* build: refresh uv lock after upstream merge
* fix: restore module import in test_check_migration after merge
The conflict resolution imported only the function but the test body
references check_migration as a module throughout.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: revert dependency promotions, remove nodejs-wheel-binaries, fix Docker layer caching
- Move google-generativeai, Pillow, tenacity back to ci group (they are
lazily imported and bloat the base SDK install needlessly)
- Remove nodejs-wheel-binaries from extra_proxy and proxy-dev (redundant
in Docker where system Node.js is already installed via apk)
- Remove all nodejs-wheel node replacement and venv npm patching blocks
from Dockerfiles since the wheel is no longer installed
- Add --no-default-groups to CodSpeed benchmark workflow so the benchmark
environment matches the old minimal pip install footprint
- Apply standard uv two-phase Docker pattern: copy metadata first, install
deps (cached layer), then copy source and install project
- Replace CircleCI enterprise no-op with proper uv sync command
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore: regenerate uv.lock after removing nodejs-wheel-binaries
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): use cache/restore instead of cache to prevent cache poisoning
The old workflow used actions/cache/restore (read-only). The uv migration
changed it to actions/cache (read-write), which zizmor flags as a cache
poisoning risk. Restore the safer read-only variant.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): disable setup-uv built-in cache to silence cache-poisoning alert
The setup-uv action enables caching by default, which zizmor flags as a
cache poisoning risk. Disable it since we already use a read-only
cache/restore step.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): disable setup-uv cache in publish workflow
Silences zizmor cache-poisoning alert. Publishing workflow runs
infrequently on protected branches so caching adds no real benefit.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(test): remove duplicate verbose_logger mock in test_check_migration
The logger was patched twice — first via mocker.patch() then via
mocker.patch.object(autospec=True). The second call fails because
autospec cannot inspect an already-mocked attribute. Remove the
redundant first patch.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): free disk space before Docker build in test-server-root-path
The Dockerfile.non_root build ran out of disk on the CI runner. Remove
Android SDK, .NET, Boost, and GHC toolchains (~12GB) to free space.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 02:46:23 +08:00
3. Install dependencies `uv sync --all-extras --group proxy-dev`
4. `uv run prisma generate`
2026-01-19 20:27:00 +08:00
5. `prisma generate`
6. Start proxy backend `python litellm/proxy/proxy_cli.py`
2025-06-07 05:19:28 +08:00
2026-04-10 06:41:52 +08:00
#### Frontend
2025-09-25 00:57:21 +08:00
1. Navigate to `ui/litellm-dashboard`
2. Install dependencies `npm install`
3. Run `npm run dev` to start the dashboard
2024-11-14 12:52:17 +08:00
2026-04-10 06:41:52 +08:00
### Verify Docker Image Signatures
2026-04-07 13:53:23 +08:00
All LiteLLM Docker images published to GHCR 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:< release-tag >
```
**Verify using a 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 \
--key https://raw.githubusercontent.com/BerriAI/litellm/< release-tag > /cosign.pub \
ghcr.io/berriai/litellm:< release-tag >
```
Replace `<release-tag>` with the version you are deploying (e.g. `v1.83.0-stable` ).
2026-04-10 06:41:52 +08:00
---
2024-03-03 09:18:48 +08:00
# Enterprise
For companies that need better security, user management and professional support
2026-04-05 09:20:39 +08:00
[Get an Enterprise License ](https://litellm.ai/enterprise )
2026-03-26 11:17:10 +08:00
[Talk to founders ](https://enterprise.litellm.ai/demo )
2024-03-03 09:18:48 +08:00
2025-08-10 07:26:33 +08:00
This covers:
2024-03-03 09:18:48 +08:00
- ✅ **Features under the [LiteLLM Commercial License](https://docs.litellm.ai/docs/proxy/enterprise):**
- ✅ **Feature Prioritization**
- ✅ **Custom Integrations**
- ✅ **Professional Support - Dedicated discord + slack**
- ✅ **Custom SLAs**
- ✅ **Secure access with Single Sign-On**
2025-06-07 05:19:28 +08:00
# Contributing
We welcome contributions to LiteLLM! Whether you're fixing bugs, adding features, or improving documentation, we appreciate your help.
## Quick Start for Contributors
build: migrate packaging, CI, and Docker from Poetry to uv (#25007)
* build: migrate packaging metadata to uv
* ci: move automation and local tooling to uv
* docker: migrate image builds and runtime setup to uv
* docs: update install and deployment guidance for uv
* chore: align auxiliary scripts and tests with uv
* test: harden test_litellm isolation
* fix: keep release and health check images self-contained
* build: pin uv tooling and health check deps
* test: isolate bedrock image request formatting from suite state
* test: cover sandbox executor requirements flow
* ci: fix circleci no-op command steps
* ci: fix circleci publish workflow parsing
* fix: stabilize remaining uv migration CI checks
* ci: increase matrix test timeout headroom
* fix: restore published docker and license coverage
* fix: restore proxy runtime build parity
* fix: restore proxy extras parity and venv migrations
* ci: persist uv path across circleci steps
* fix: keep psycopg binary in default test env
* docker: preserve prisma cache across stages
* test: run local proxy checks through uv python
* build: restore runtime deps moved into ci
* build: refresh uv lock after upstream merge
* fix: restore module import in test_check_migration after merge
The conflict resolution imported only the function but the test body
references check_migration as a module throughout.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: revert dependency promotions, remove nodejs-wheel-binaries, fix Docker layer caching
- Move google-generativeai, Pillow, tenacity back to ci group (they are
lazily imported and bloat the base SDK install needlessly)
- Remove nodejs-wheel-binaries from extra_proxy and proxy-dev (redundant
in Docker where system Node.js is already installed via apk)
- Remove all nodejs-wheel node replacement and venv npm patching blocks
from Dockerfiles since the wheel is no longer installed
- Add --no-default-groups to CodSpeed benchmark workflow so the benchmark
environment matches the old minimal pip install footprint
- Apply standard uv two-phase Docker pattern: copy metadata first, install
deps (cached layer), then copy source and install project
- Replace CircleCI enterprise no-op with proper uv sync command
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore: regenerate uv.lock after removing nodejs-wheel-binaries
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): use cache/restore instead of cache to prevent cache poisoning
The old workflow used actions/cache/restore (read-only). The uv migration
changed it to actions/cache (read-write), which zizmor flags as a cache
poisoning risk. Restore the safer read-only variant.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): disable setup-uv built-in cache to silence cache-poisoning alert
The setup-uv action enables caching by default, which zizmor flags as a
cache poisoning risk. Disable it since we already use a read-only
cache/restore step.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): disable setup-uv cache in publish workflow
Silences zizmor cache-poisoning alert. Publishing workflow runs
infrequently on protected branches so caching adds no real benefit.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(test): remove duplicate verbose_logger mock in test_check_migration
The logger was patched twice — first via mocker.patch() then via
mocker.patch.object(autospec=True). The second call fails because
autospec cannot inspect an already-mocked attribute. Remove the
redundant first patch.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(ci): free disk space before Docker build in test-server-root-path
The Dockerfile.non_root build ran out of disk on the CI runner. Remove
Android SDK, .NET, Boost, and GHC toolchains (~12GB) to free space.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 02:46:23 +08:00
This requires uv to be installed.
2025-08-15 08:15:29 +08:00
2025-06-07 05:19:28 +08:00
```bash
git clone https://github.com/BerriAI/litellm.git
cd litellm
make install-dev # Install development dependencies
make format # Format your code
make lint # Run all linting checks
make test-unit # Run unit tests
2025-08-15 08:15:29 +08:00
make format-check # Check formatting only
2025-06-07 05:19:28 +08:00
```
For detailed contributing guidelines, see [CONTRIBUTING.md ](CONTRIBUTING.md ).
2026-04-25 05:17:46 +08:00
> **📖 Contributing to documentation?** The LiteLLM docs have moved to a separate repository: [BerriAI/litellm-docs](https://github.com/BerriAI/litellm-docs). Please open doc PRs there. Docs are served at [docs.litellm.ai](https://docs.litellm.ai).
2025-06-07 05:19:28 +08:00
## Code Quality / Linting
2024-12-11 07:44:59 +08:00
LiteLLM follows the [Google Python Style Guide ](https://google.github.io/styleguide/pyguide.html ).
2025-06-07 05:19:28 +08:00
Our automated checks include:
- **Black** for code formatting
- **Ruff** for linting and code quality
- **MyPy** for type checking
- **Circular import detection**
- **Import safety checks**
2024-12-11 07:44:59 +08:00
2025-06-07 05:19:28 +08:00
All these checks must pass before your PR can be merged.
2024-12-11 07:44:59 +08:00
2023-08-28 23:59:34 +08:00
# Support / talk with founders
2024-02-28 14:07:13 +08:00
2023-08-24 23:43:18 +08:00
- [Schedule Demo 👋 ](https://calendly.com/d/4mp-gd3-k5k/berriai-1-1-onboarding-litellm-hosted-version )
2023-08-09 21:09:28 +08:00
- [Community Discord 💭 ](https://discord.gg/wuPM9dRgDw )
2025-09-10 23:48:37 +08:00
- [Community Slack 💭 ](https://www.litellm.ai/support )
2023-08-09 21:09:28 +08:00
- Our emails ✉️ ishaan@berri.ai / krrish@berri.ai
2023-07-29 00:11:27 +08:00
2023-08-28 23:59:34 +08:00
# Contributors
2023-08-28 23:50:12 +08:00
<!-- ALL - CONTRIBUTORS - LIST:START - Do not remove or modify this section -->
<!-- prettier - ignore - start -->
<!-- markdownlint - disable -->
<!-- markdownlint - restore -->
<!-- prettier - ignore - end -->
<!-- ALL - CONTRIBUTORS - LIST:END -->
2023-08-28 23:56:19 +08:00
< a href = "https://github.com/BerriAI/litellm/graphs/contributors" >
< img src = "https://contrib.rocks/image?repo=BerriAI/litellm" / >
< / a >