View as /docs.md
Migrate

Migrate from LiteLLM (managed)

Same OpenAI-compatible surface, with a managed gateway instead of self-hosted. Skip the infra; keep the abstraction.

CLI automation for LiteLLM (managed) isn't shipped yet — you'll do this manually below. PRs welcome at packages/aig-cli/src/commands/migrate.ts.

TL;DR — three lines

# 1. set your AIgateway key
export AIGATEWAY_API_KEY="sk-aig-..."

# 2. change the base URL
base_url="https://api.aigateway.sh/v1"  # was (self-hosted, varies)

# 3. search-and-replace the env var name

What changes, line-by-line

The table below is what aig migrate litellm rewrites. If you're doing it by hand, do these in order.

ThingLiteLLM (managed)AIgateway
Base URLyour-litellm-host/v1https://api.aigateway.sh/v1
API key env varLITELLM_MASTER_KEYAIGATEWAY_API_KEY
Provider model formatopenai/gpt-5.4 (LiteLLM style)openai/gpt-5.4 (same)
Self-hosted infraYou run the proxyWe run the edge (CF Workers, global)
ObservabilityLiteLLM logs to your sinkAIgateway logs + tags + per-tag budgets
FailoverConfigured in LiteLLM YAMLConfigured in AIgateway routing rules

Before / after — Python (OpenAI SDK)

BEFORE · LiteLLM (managed)
from openai import OpenAI

client = OpenAI(
    base_url="(self-hosted, varies)",
    api_key=os.environ["LITELLM_MASTER_KEY"],
)
r = client.chat.completions.create(
    model="anthropic/claude-opus-4.7",
    messages=[{"role": "user", "content": "Hi"}],
)
AFTER · AIgateway
from openai import OpenAI

client = OpenAI(
    base_url="https://api.aigateway.sh/v1",
    api_key=os.environ["AIGATEWAY_API_KEY"],
)
r = client.chat.completions.create(
    model="anthropic/claude-opus-4.7",
    messages=[{"role": "user", "content": "Hi"}],
)

Behavioral notes

Credit match

Email your last invoice from LiteLLM (managed) to switch@aigateway.sh and we match the credit up to $1,000 (24-hour turnaround). Or read the full pitch at /switch/litellm.

What to read next