litellm

BerriAI活跃维护

统一调用 100+ 家 LLM API 的 AI 网关,用 OpenAI 格式或原生格式接入,自带成本追踪、限流护栏、负载均衡和日志。

The fastest, litest AI Gateway. Rust core with Python SDK. Call 100+ LLM APIs in OpenAI (or native) format with cost tracking, guardrails, load balancing, and logging [Bedrock, Azure, OpenAI, Anthropic, OpenAI, VertexAI, vLLM, Nvidia NIM]

v1.108.3发布于 2026-11-07 22:29 UTC63,032star +180 / 7 天13,150fork同步于 2026-11-10 11:18 UTC

怎么上手

由 README 提炼,执行前请确认
uv add litellm
uv tool install 'litellm[proxy]'
litellm --model gpt-4o
硬件要求按 README 说明

README 未说明显存或 GPU 要求,作为网关/代理服务运行,不依赖本地 GPU

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

自托管 AI 网关,用 OpenAI 格式统一调用 100+ LLM 供应商

统一调用 100+ 家 LLM API 的 AI 网关,用 OpenAI 格式或原生格式接入,自带成本追踪、限流护栏、负载均衡和日志。

核心能力

  • 用 OpenAI 格式统一调用 100+ 家 LLM 供应商
  • 提供 Python SDK 与 Proxy Server 两种用法
  • 内置虚拟密钥、花费追踪与负载均衡
  • 支持 guardrails 护栏与请求日志记录
  • 宣称 1k RPS 下 P95 延迟 8ms

容易踩的坑

litellm 与 litellm-core 文件重叠,同一环境只能装一个 SDK 发行版;从源码构建 core 需 Git、uv 和 Rust 工具链;Proxy 默认监听 0.0.0.0:4000,调用时 base_url 需指向该端口

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v1.108.3
  1. v1.110.0-dev.2pre-release2026-11-08 · 2026-11-08 02:25 UTC
    查看更新说明

    Verify Docker Image Signature

    All LiteLLM Docker images are signed with cosign. This release is signed with the key introduced in commit e82a3c6.

    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 published signing key:

    cosign verify \
      --key https://raw.githubusercontent.com/BerriAI/litellm/e82a3c646908ba0a6ee0beddc4310d7a6cac4065/cosign.pub \
      ghcr.io/berriai/litellm:v1.110.0-dev.2
    

    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:

    cosign verify \
      --key https://raw.githubusercontent.com/BerriAI/litellm/v1.110.0-dev.2/cosign.pub \
      ghcr.io/berriai/litellm:v1.110.0-dev.2
    

    Expected output:

    The following checks were performed on each of these signatures:
      - The cosign claims were validated
      - The signatures were verified against the specified public key
    

    What's Changed

  2. v1.108.31.108.3 (LTS)最新正式版2026-11-07 · 2026-11-07 22:29 UTC

    [!TIP] The lts image tag always points to the latest LTS release. Pull ghcr.io/berriai/litellm:lts to stay on the newest LTS patch

    Verify this release

    cosign verify \
      --key https://raw.githubusercontent.com/BerriAI/litellm/e82a3c646908ba0a6ee0beddc4310d7a6cac4065/cosign.pub \
      ghcr.io/berriai/litellm:v1.108.3
    

    Same command for litellm-database, litellm-non_root and the docker.io/litellm/* images

    What's new in 1.108.3 (LTS)

    11 PRs. 3 fixed. No action needed to upgrade

    Changes

    • AWS Bedrock: Fixed every request failing on a Bedrock deployment with api_base: "", which answered 500 or 400 (#50449)
    • MCP: Fixed tool results over 1 MiB failing with SSE stream ended without a response, broken since v1.103.0 (#47034)
    • Guardrails: Fixed model-level post_call guardrails checking each response twice and calling the moderation provider twice (#50463)

    Backport #50484 · Backport #50487 · Full changelog

  3. v1.110.0-dev.1pre-release2026-11-07 · 2026-11-07 04:36 UTC
    查看更新说明

    Verify Docker Image Signature

    All LiteLLM Docker images are signed with cosign. This release is signed with the key introduced in commit e82a3c6.

    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 published signing key:

    cosign verify \
      --key https://raw.githubusercontent.com/BerriAI/litellm/e82a3c646908ba0a6ee0beddc4310d7a6cac4065/cosign.pub \
      ghcr.io/berriai/litellm:v1.110.0-dev.1
    

    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:

    cosign verify \
      --key https://raw.githubusercontent.com/BerriAI/litellm/v1.110.0-dev.1/cosign.pub \
      ghcr.io/berriai/litellm:v1.110.0-dev.1
    

    Expected output:

    The following checks were performed on each of these signatures:
      - The cosign claims were validated
      - The signatures were verified against the specified public key
    

    What's Changed

  4. v1.108.21.108.2 (LTS)2026-11-06 · 2026-11-06 22:07 UTC
    查看更新说明

    [!TIP] The lts image tag always points to the latest LTS release. Pull ghcr.io/berriai/litellm:lts to stay on the newest LTS patch

    Verify this release

    cosign verify \
      --key https://raw.githubusercontent.com/BerriAI/litellm/e82a3c646908ba0a6ee0beddc4310d7a6cac4065/cosign.pub \
      ghcr.io/berriai/litellm:v1.108.2
    

    Same command for litellm-database, litellm-non_root and the docker.io/litellm/* images

    What's new in 1.108.2 (LTS)

    12 PRs. 11 fixed, 1 changed. No action needed to upgrade

    Changes

    • OpenAI: Fixed openai/ deployments with an empty api_key sending OPENAI_ADMIN_KEY as the bearer token (#50218)
    • AWS Bedrock: Fixed Converse service_tier so unsupported tiers answer 400 and reserved, auto and standard_only are honored (#50360)
    • AWS Bedrock: Fixed Invoke dropping the per-turn-control-2026-07-01 beta on Claude 4.5 and newer (#50362)
    • Vertex AI and Gemini: Fixed chirp text-to-speech ignoring vertex_location, so US and EU deployments call their multi-region host (#50392)
    • Chat completions: Fixed response_format: json_object on openai/responses/* and azure/responses/* answering 400 about the word json (#50267)
    • Chat completions: Fixed base64 PDFs sent to Claude as image_url answering 400, and Bedrock JSON schema calls dropping thinking (#50280)
    • Responses API: Fixed /v1/responses/compact returning 500 when a during_call guardrail is on by default (#50274)
    • Embeddings, images and audio: Fixed audio transcription errors echoing the full provider reply, transcript included, to clients and logs (#50325)
    • MCP: Changed hosted MCP tools that a translated route cannot run to return a clear 400, or be dropped with drop_params (#50348)
    • Routing and fallbacks: Fixed groups that accept unmatched tags rejecting requests after affinity or cooldown filtering (#48470)
    • Routing and fallbacks: Fixed prompt caching routing not pinning follow-ups to one deployment when turn_off_message_logging is on (#50276)
    • Cost tracking and pricing: Fixed spend rows being dropped and valid keys getting 401 while Postgres restarts or shuts down (#50132)

    Backport #50297 · Backport #50326 · Full changelog

  5. v1.108.11.108.1 (LTS)2026-11-05 · 2026-11-05 23:42 UTC
    查看更新说明

    [!TIP] The lts image tag always points to the latest LTS release. Pull ghcr.io/berriai/litellm:lts to stay on the newest LTS patch

    Verify Docker Image Signature

    All LiteLLM Docker images are signed with cosign. This release is signed with the key introduced in commit e82a3c6.

    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 published signing key:

    cosign verify \
      --key https://raw.githubusercontent.com/BerriAI/litellm/e82a3c646908ba0a6ee0beddc4310d7a6cac4065/cosign.pub \
      ghcr.io/berriai/litellm:v1.108.1
    

    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:

    cosign verify \
      --key https://raw.githubusercontent.com/BerriAI/litellm/v1.108.1/cosign.pub \
      ghcr.io/berriai/litellm:v1.108.1
    

    Expected output:

    The following checks were performed on each of these signatures:
      - The cosign claims were validated
      - The signatures were verified against the specified public key
    

    What's Changed

    Full Changelog: https://github.com/BerriAI/litellm/compare/v1.108.0...v1.108.1

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    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 Jump to Supported LLM 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)

    OSS Adopters


    Features

    All Supported Endpoints - /chat/completions, /responses, /embeddings, /images, /audio, /batches, /rerank, /a2a, /messages and more.

    Python SDK

    uv add litellm
    

    An independent litellm-core distribution provides the Python SDK with the same import litellm API and runtime dependencies. It has no optional extras, CLI entry points, or bundled dashboard. Install one SDK distribution per environment because litellm and litellm-core own overlapping Python files. Use litellm for the proxy, CLI, and optional extras

    Build and install core from this checkout while its release integration is pending:

    python scripts/build_core_distribution.py --out-dir dist/core
    python -m pip install dist/core/litellm_core-*.whl
    

    The builder requires Git, uv and the Rust build toolchain. It reads the release version from the root pyproject.toml, leaves source files unchanged, and produces a wheel and a self-contained sdist in dist/core. Run installation in a fresh environment without litellm

    from litellm import completion
    import os
    
    os.environ["OPENAI_API_KEY"] = "your-openai-key"
    os.environ["ANTHROPIC_API_KEY"] = "your-anthropic-key"
    
    # OpenAI
    response = completion(model="openai/gpt-4o", messages=[{"role": "user", "content": "Hello!"}])
    
    # Anthropic  
    response = completion(model="anthropic/claude-sonnet-4-20250514", messages=[{"role": "user", "content": "Hello!"}])
    

    AI Gateway (Proxy Server)

    Getting Started - E2E Tutorial - Setup virtual keys, make your first request

    uv tool install 'litellm[proxy]'
    litellm --model gpt-4o
    
    import openai
    
    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!"}]
    )
    

    Python SDK

    Docs: Autorouter SDK

    Install with uv add litellm and set OPENAI_API_KEY for the models below.

    import asyncio
    from litellm import Router
    
    router = Router(model_list=[
        {"model_name": "fast", "litellm_params": {"model": "openai/gpt-6-luna"}},
        {"model_name": "capable", "litellm_params": {"model": "openai/gpt-6.1-sol"}},
        {"model_name": "auto", "litellm_params": {
            "model": "auto_router/complexity_router",
            "complexity_router_config": {
                "classifier_type": "heuristic",
                "tiers": {"SIMPLE": "fast", "MEDIUM": "fast",
                          "COMPLEX": "capable", "REASONING": "capable"},
                "return_raw_model_name": True,
            },
            "complexity_router_default_model": "capable",
        }},
    ])
    response = asyncio.run(router.acompletion(
        model="auto", messages=[{"role": "user", "content": "What is 2+2?"}],
    ))
    print(response.model, response.choices[0].message.content)
    

    AI Gateway (Proxy Server)

    Create an Auto Router, then call its model name. Replace auto and the URL below with yours, and set LITELLM_API_KEY to your virtual key.

    curl http://localhost:4000/v1/chat/completions \
      -H "Authorization: Bearer $LITELLM_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"model":"auto","messages":[{"role":"user","content":"What is 2+2?"}]}'
    

    Supported Providers - LangGraph, Vertex AI Agent Engine, Azure AI Foundry, Bedrock AgentCore, Pydantic AI

    Python SDK - A2A Protocol

    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,
            }
        )
    )
    response = await client.send_message(request)
    

    AI Gateway (Proxy Server)

    Step 1. Add your Agent to the AI Gateway — set protocolVersion to 1.0 or 0.3 per agent

    Step 2. Call Agent via A2A SDK (requires a2a-sdk>=1.1.0)

    import httpx
    from a2a.client import A2ACardResolver, ClientConfig, ClientFactory
    from a2a.types import Message, Part, Role, SendMessageRequest
    from a2a.utils.constants import TransportProtocol
    from uuid import uuid4
    
    base_url = "http://localhost:4000/a2a/my-agent"  # LiteLLM proxy + agent name
    headers = {"Authorization": "Bearer <your-master-key>"}    # LiteLLM master key or a virtual key
    
    async with httpx.AsyncClient(headers=headers, timeout=60.0) as http_client:
        resolver = A2ACardResolver(httpx_client=http_client, base_url=base_url)
        agent_card = await resolver.get_agent_card()
        config = ClientConfig(
            httpx_client=http_client,
            streaming=False,
            supported_protocol_bindings=[TransportProtocol.JSONRPC, TransportProtocol.HTTP_JSON],
        )
        client = ClientFactory(config).create(agent_card)
    
        request = SendMessageRequest(
            message=Message(
                message_id=uuid4().hex,
                role=Role.ROLE_USER,
                parts=[Part(text="Hello!")],
            )
        )
        async for event in client.send_message(request):
            populated = event.ListFields()
            if populated and populated[0][0].name in ("message", "msg"):
                print("".join(getattr(p, "text", "") or "" for p in populated[0][1].parts))
    

    Docs: A2A Agent Gateway

    Python SDK - MCP Bridge

    from mcp import ClientSession, StdioServerParameters
    from mcp.client.stdio import stdio_client
    from litellm import mcp_client
    import litellm
    
    server_params = StdioServerParameters(command="python", args=["mcp_server.py"])
    
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
    
            # Load MCP tools in OpenAI format
            tools = await mcp_client.load_mcp_tools(session=session, format="openai")
    
            # Use with any LiteLLM model
            response = await litellm.acompletion(
                model="gpt-4o",
                messages=[{"role": "user", "content": "What's 3 + 5?"}],
                tools=tools
            )
    

    AI Gateway - MCP Gateway

    Step 1. Add your MCP Server to the AI Gateway

    Step 2. Call MCP tools via /chat/completions

    curl -X POST 'http://0.0.0.0:4000/v1/chat/completions' \
      -H 'Authorization: Bearer <your-master-key>' \
      -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"
        }]
      }'
    

    Use with Cursor IDE

    {
      "mcpServers": {
        "LiteLLM": {
          "url": "http://localhost:4000/mcp/",
          "headers": {
            "x-litellm-api-key": "Bearer <your-master-key>"
          }
        }
      }
    }
    

    For MCP OAuth, an upstream may advertise dynamic client registration but refuse requests with HTTP 401 or 403. If the provider requires a pre-registered OAuth app, configure its credentials.client_id and, when required, credentials.client_secret on the MCP server. This skips dynamic registration in the gateway sign-in flow. The provider must approve the app for MCP access; reaching its authorization page does not establish that login or tool calls will succeed

    Docs: MCP Gateway

    Python SDK - Agents

    import litellm
    from litellm import Harness, sandbox
    
    result = litellm.agent(
        Harness.CLAUDE_CODE,  # or Harness.CODEX, Harness.OPENCODE, Harness.PI, Harness.DEEPAGENTS
        "Find why tests/test_router.py is flaky and fix it.",
        sandbox=sandbox.local("./repo"),
        model="litellm_proxy/claude-sonnet-4-5",  # a model group on your AI Gateway
    )
    
    print(result.text, result.cost, [f.path for f in result.files])
    

    Set LITELLM_PROXY_API_BASE and LITELLM_PROXY_API_KEY and every model call the agent makes goes through your AI Gateway, tagged harness,claude_code. Drop the litellm_proxy/ prefix to call a provider directly. Install starlette uvicorn plus the agent's CLI (claude, codex, opencode or pi), or deepagents langchain-litellm for Deep Agents.

    Docs: Agent Harnesses

    Supported Providers (Website Supported Models | Docs)

    Provider/chat/completions/messages/responses/embeddings/image/generations/audio/transcriptions/audio/speech/moderations/batches/rerank
    Abliteration (abliteration)✅
    AI/ML API (aiml)✅✅✅✅✅
    AI21 (ai21)✅✅✅
    AI21 Chat (ai21_chat)✅✅✅
    Aleph Alpha✅✅✅
    Amazon Nova✅✅✅
    Anthropic (anthropic)✅✅✅✅
    Anthropic Text (anthropic_text)✅✅✅✅
    Anyscale✅✅✅
    AssemblyAI (assemblyai)✅✅✅✅
    Auto Router (auto_router)✅✅✅
    AWS - Bedrock (bedrock)✅✅✅✅✅
    AWS - Sagemaker (sagemaker)✅✅✅✅
    Azure (azure)✅✅✅✅✅✅✅✅✅
    Azure AI (azure_ai)✅✅✅✅✅✅✅✅✅
    Azure Text (azure_text)✅✅✅✅✅✅✅
    Baseten (baseten)✅✅✅
    Bytez (bytez)✅✅✅
    Cerebras (cerebras)✅✅✅
    Clarifai (clarifai)✅✅✅
    CLF AI Gateway (clf_ai_gateway)✅✅✅
    Cloudflare AI Workers (cloudflare)✅✅✅
    Codestral (codestral)✅✅✅
    Cognition (cognition)✅✅✅
    Cohere (cohere)✅✅✅✅✅
    Cohere Chat (cohere_chat)✅✅✅
    CometAPI (cometapi)✅✅✅✅
    CompactifAI (compactifai)✅✅✅
    CoralBricks (coralbricks)✅✅✅
    Custom (custom)✅✅✅
    Custom OpenAI (custom_openai)✅✅✅✅✅✅✅
    Dashscope (dashscope)✅✅✅✅✅
    Databricks (databricks)✅✅✅
    DataRobot (datarobot)✅✅✅
    Deepgram (deepgram)✅✅✅✅
    DeepInfra (deepinfra)✅✅✅
    Deepseek (deepseek)✅✅✅
    Eden AI (edenai)✅✅✅✅✅✅✅
    ElevenLabs (elevenlabs)✅✅✅✅✅
    EmpirioLabs AI (empiriolabs)✅✅
    Empower (empower)✅✅✅
    eu/jev Decisions API (eu_jev)
    Fal AI (fal_ai)✅✅✅✅
    Featherless AI (featherless_ai)✅✅✅
    Fireworks AI (fireworks_ai)✅✅✅
    FriendliAI (friendliai)✅✅✅
    Galadriel (galadriel)✅✅✅
    GitHub Copilot (github_copilot)✅✅✅✅
    GitHub Models (github)✅✅✅
    Google - PaLM✅✅✅
    Google - Vertex AI (vertex_ai)✅✅✅✅✅
    Google AI Studio - Gemini (gemini)✅✅✅
    GradientAI (gradient_ai)✅✅✅
    Groq AI (groq)✅✅✅
    Heroku (heroku)✅✅✅
    Hosted VLLM (hosted_vllm)✅✅✅
    Huggingface (huggingface)✅✅✅✅✅
    Hyperbolic (hyperbolic)✅✅✅
    IBM - Watsonx.ai (watsonx)✅✅✅✅
    Infinity (infinity)✅
    Jina AI (jina_ai)✅
    Lambda AI (lambda_ai)✅✅✅
    Lemonade (lemonade)✅✅✅
    LiteLLM Proxy (litellm_proxy)✅✅✅✅✅
    Llamafile (llamafile)✅✅✅
    LM Studio (lm_studio)✅✅✅
    Maritalk (maritalk)✅✅✅
    Meta - Llama API (meta_llama)✅✅✅
    Mistral AI API (mistral)✅✅✅✅
    ModelScope (modelscope)✅✅✅✅
    Moonshot (moonshot)✅✅✅
    Morph (morph)✅✅✅
    Nace (nace)
    Nebius AI Studio (nebius)✅✅✅✅
    NLP Cloud (nlp_cloud)✅✅✅
    Novita AI (novita)✅✅✅
    Nscale (nscale)✅✅✅
    Nvidia NIM (nvidia_nim)✅✅✅
    OCI (oci)✅✅✅
    Ollama (ollama)✅✅✅✅
    Ollama Chat (ollama_chat)✅✅✅
    Oobabooga (oobabooga)✅✅✅✅✅✅✅
    OpenAI (openai)✅✅✅✅✅✅✅✅✅
    OpenAI-like (openai_like)✅
    OpenRouter (openrouter)✅✅✅
    OVHCloud AI Endpoints (ovhcloud)✅✅✅
    Parallel AI (parallel_ai)
    Perplexity AI (perplexity)✅✅✅
    Petals (petals)✅✅✅
    Pinstripes (pinstripes)✅✅✅
    Predibase (predibase)✅✅✅
    Qianwen AI Platform (qwen_ai_platform)✅✅✅✅✅✅
    QwenCloud (qwencloud)✅✅✅✅✅✅
    Recraft (recraft)✅
    Replicate (replicate)✅✅✅
    Sagemaker Chat (sagemaker_chat)✅✅✅
    Sail (sail)✅✅✅
    Sambanova (sambanova)✅✅✅
    ScaleDown (scaledown)✅
    Snowflake (snowflake)✅✅✅
    Strands Decider (strands_decider)
    Text Completion Codestral (text-completion-codestral)✅✅✅
    Text Completion OpenAI (text-completion-openai)✅✅✅✅✅✅✅
    Together AI (together_ai)✅✅✅
    Topaz (topaz)✅✅✅
    Triton (triton)✅✅✅
    Typesafe Decisions API (typesafe)
    V0 (v0)✅✅✅
    Vercel AI Gateway (vercel_ai_gateway)✅✅✅
    VLLM (vllm)✅✅✅
    Volcengine (volcengine)✅✅✅
    VoyageAI by MongoDB (voyage)✅
    WandB Inference (wandb)✅✅✅
    Watsonx Text (watsonx_text)✅✅✅
    xAI (xai)✅✅✅
    Xinference (xinference)✅
    ZeroGPU (zerogpu)✅✅✅

    Read the Docs


    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:

    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

    Support for more providers. Missing a provider or LLM Platform, raise a feature request.

    Deploy on AWS or GCP with Terraform

    Run the LiteLLM proxy as a production-ready componentized stack (gateway, backend, UI on separate services; managed Postgres + Redis + object store) using the published Terraform modules. Both modules are on the public Terraform Registry — no auth needed.

    AWS — ECS Fargate + Aurora + ElastiCache + ALB

    Launch in AWS CloudShell — opens an in-browser shell, already authenticated to your AWS account. Once inside, run:

    git clone https://github.com/BerriAI/litellm.git
    cd litellm/terraform/litellm/aws/examples/default
    cp terraform.tfvars.example terraform.tfvars   # edit region/tenant/env
    terraform init && terraform apply
    

    Module page →

    Or call the module from your own root config:

    # main.tf
    terraform {
      required_version = ">= 1.6.0"
      required_providers {
        aws = { source = "hashicorp/aws", version = "~> 5.60" }
      }
    }
    
    provider "aws" {
      region = "us-west-2"
    }
    
    module "litellm" {
      source  = "BerriAI/litellm/aws"
      version = "~> 1.89"
    
      region = "us-west-2"
      azs    = ["us-west-2a", "us-west-2b"]
      tenant = "acme"
      env    = "prod"
    
      # Production: provide an ACM cert. Without one, set allow_plaintext_alb = true
      # (dev/trial only).
      # acm_certificate_arn = "arn:aws:acm:us-west-2:111122223333:certificate/..."
      allow_plaintext_alb = true
    }
    
    output "litellm_url" {
      value = module.litellm.alb_dns_name
    }
    
    terraform init
    terraform apply
    

    Provider API keys live in AWS Secrets Manager; reference ARNs via gateway_extra_secrets. Full input list and architecture diagram on the registry page.

    GCP — Cloud Run + Cloud SQL + Memorystore + HTTPS LB

    Open in Cloud Shell

    Real 1-click. Opens Cloud Shell, clones the terraform-google-litellm module mirror at the latest stable release (a small download instead of the full litellm repo), and walks you through terraform apply via a built-in DeployStack tutorial. Pick the project, the tutorial sets up the Artifact Registry remote repo, writes terraform.tfvars from your answers, and runs apply

    Module page →

    To call the module from your own config instead, Cloud Run can't pull from ghcr.io directly, so first set up a one-time Artifact Registry remote repo backed by GHCR:

    gcloud artifacts repositories create litellm \
      --location=us-central1 \
      --repository-format=docker \
      --mode=remote-repository \
      --remote-docker-repo=https://ghcr.io \
      --project=my-gcp-project
    

    Then:

    # main.tf
    terraform {
      required_version = ">= 1.6.0"
      required_providers {
        google      = { source = "hashicorp/google",      version = "~> 6.10" }
        google-beta = { source = "hashicorp/google-beta", version = "~> 6.10" }
      }
    }
    
    provider "google"      { project = "my-gcp-project"; region = "us-central1" }
    provider "google-beta" { project = "my-gcp-project"; region = "us-central1" }
    
    module "litellm" {
      source  = "BerriAI/litellm/google"
      version = "~> 1.89"
    
      project_id = "my-gcp-project"
      region     = "us-central1"
      tenant     = "acme"
      env        = "prod"
    
      # Replace my-gcp-project with your GCP project ID (same value as project_id above).
      image_registry = "us-central1-docker.pkg.dev/my-gcp-project/litellm/berriai"
    
      # Production: provide DNS already pointing at the LB IP for Google-managed certs.
      # Without one, set allow_plaintext_lb = true (dev/trial only).
      # lb_domains         = ["proxy.example.com"]
      allow_plaintext_lb = true
    }
    
    output "litellm_url" {
      value = module.litellm.load_balancer_url
    }
    
    terraform init
    terraform apply
    

    Provider API keys live in Secret Manager; reference resource IDs (e.g. projects/my-gcp-project/secrets/openai-api-key) via gateway_extra_secrets. Full input list and architecture diagram on the registry page.

    Both stacks include
    • The full componentized split (gateway / backend / UI as independent services)
    • Managed Postgres (writer + reader) and Redis
    • Versioned object store for proxy state + file uploads
    • An auto-generated LITELLM_MASTER_KEY in your cloud's secret manager
    • A one-off migration job that runs prisma migrate deploy before the proxy starts
    • The same proxy_config surface as the Helm chart — pass YAML as a typed map

    The Terraform modules live at terraform/litellm/aws/ and terraform/litellm/gcp/ in this repo; the registry entries are read-only mirrors updated on each release.

    Run in Developer Mode

    Services
    1. Setup .env file in root
    2. Run dependent services docker-compose up db prometheus
    Backend
    1. Run make bootstrap
    2. Start proxy backend: uv run python litellm/proxy/proxy_cli.py
    Frontend
    1. Navigate to ui/litellm-dashboard (dependencies were already installed w/ make bootstrap)
    2. Start dashboard: npm run dev

    Verify Docker Image Signatures

    All LiteLLM Docker images published to GHCR are signed with cosign. Releases are signed with the key introduced in commit e82a3c6.

    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 published signing key:

    cosign verify \
      --key https://raw.githubusercontent.com/BerriAI/litellm/e82a3c646908ba0a6ee0beddc4310d7a6cac4065/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:

    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).


    Enterprise

    For companies that need better security, user management and professional support

    Get an Enterprise License Talk to founders

    This covers:

    • ✅ Features under the LiteLLM Commercial License:
    • ✅ Feature Prioritization
    • ✅ Custom Integrations
    • ✅ Professional Support - Dedicated discord + slack
    • ✅ Custom SLAs
    • ✅ Secure access with Single Sign-On

    Contributing

    We welcome contributions to LiteLLM! Whether you're fixing bugs, adding features, or improving documentation, we appreciate your help.

    If you want to work closely with our team, check out LiteLLM OSS Champions, our program for trusted OSS contributors with their own Slack channel and a voice in the roadmap

    Quick Start for Contributors

    This requires uv to be installed.

    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
    make format-check   # Check formatting only
    

    For detailed contributing guidelines, see CONTRIBUTING.md.

    📖 Contributing to documentation? The LiteLLM docs have moved to a separate repository: BerriAI/litellm-docs. Please open doc PRs there. Docs are served at docs.litellm.ai.

    Code Quality / Linting

    LiteLLM follows the Google Python Style Guide.

    Our automated checks include:

    • Ruff for formatting, linting, and code quality
    • basedpyright for type checking
    • Circular import detection
    • Import safety checks

    All these checks must pass before your PR can be merged.

    Support / talk with founders

    Contributors