Skip to main content
GoModel speaks the same OpenAI-compatible API as the LiteLLM proxy, so most applications only need a new base URL and key. The work is in the gateway config, and gomodel migrate litellm does most of it.

1. Convert the config

Run a dry run first. It prints the migration report and the generated config, and writes nothing:
Then write the files:
With Docker (the image runs as a non-root user, so pass yours to write into the mounted directory):
--out writes three files and refuses to overwrite them unless you pass --force: os.environ/NAME references become ${NAME}, so the environment you already run LiteLLM with keeps working. include: files are followed.

2. Review the report

Read MIGRATION_REPORT.md before sending traffic. It has three lists:
  • Review before switching traffic: things you must finish, such as guardrails, model access groups, or a Langfuse callback. GoModel guardrails are off until you configure them.
  • Not migrated: settings with no GoModel equivalent, named one by one. Nothing is dropped silently.
  • Behavior changes: settings that were converted but behave a little differently, such as routing strategies.

3. Run GoModel next to LiteLLM

Start GoModel with the generated files on another port. Add the variables listed under Environment in the report (the ones LiteLLM already read with os.environ/) to .env, creating it if the converter wrote none. GoModel refuses to start while the variable server.master_key reads is unset. Then send a few test requests with the models your clients use:
compose.yaml
Load .env with Compose env_file (or GoModel’s own .env loader when you run the binary from that directory). docker run --env-file reads values literally, so it would keep the quotes .env puts around values such as inline JSON credentials. When you run the binary directly, a variable already exported in your shell, such as OPENAI_API_KEY, wins over the same name in .env.
GET /v1/models lists the same model names LiteLLM did. Then move clients over one team at a time.

4. Recreate keys, teams, and budgets

LiteLLM keeps virtual keys, teams, users, budgets, and spend in its Postgres database, so config.yaml does not carry them. GoModel models the same ideas with a user path hierarchy: Create them in the dashboard or with the admin API. Clients get new sk_gom_... keys.

What changes for clients

How settings map

Provider names follow GoModel’s environment conventions: a deployment using LiteLLM’s default key variable (OPENAI_API_KEY) becomes provider openai, one reading OPENAI_EU_API_KEY becomes openai-eu, and each Azure deployment becomes its own provider, such as azure-gpt-4o-prod. Providers GoModel does not support yet, such as Replicate or SageMaker, are listed under Not migrated in the report.
Last modified on October 3, 2026