NewPoint any agent at UberLLM — one key, every model, list price or less.

LibreChat custom endpoint for UberLLM (librechat.yaml)

Add a custom endpoint named UberLLM to librechat.yaml with baseURL https://api.uberllm.dev/v1 and apiKey "${UBERLLM_API_KEY}", put the key in .env, and restart LibreChat. Turn on models.fetch to get the full model list.

Steps

  1. Make a key on your keys page and add credit.
  2. Add the key to the .env file in LibreChat's folder:
UBERLLM_API_KEY=ull_your_key

Use this name, not OPENAI_API_KEY, so the built-in OpenAI endpoint does not pick it up.

  1. Add UberLLM to librechat.yaml (same folder as .env):
version: 1.3.18
cache: true
endpoints:
  custom:
    - name: "UberLLM"
      apiKey: "${UBERLLM_API_KEY}"
      baseURL: "https://api.uberllm.dev/v1"
      models:
        default: ["deepseek/deepseek-v4.1-flash", "google/gemini-3.5-flash", "anthropic/claude-sonnet-5.5"]
        fetch: true
      titleConvo: true
      titleModel: "current_model"
      modelDisplayLabel: "UberLLM"

If your file already has endpoints: custom:, add only the - name: "UberLLM" block to that list. Keep your file's own version line if it is newer.

  1. Docker: make sure the file is mounted. In docker-compose.override.yml:
services:
  api:
    volumes:
      - type: bind
        source: ./librechat.yaml
        target: /app/librechat.yaml
  1. Restart: docker compose down && docker compose up -d (or restart the npm process).
  2. Pick UberLLM in the endpoint menu and choose a model.

What the fields do

  • baseURL: LibreChat adds /chat/completions to it, so stop at /v1.
  • models.default: the models always shown. fetch: true asks UberLLM for its whole list on top of those.
  • titleModel: "current_model": chat titles are written by the model you are chatting with. Set a cheap id such as deepseek/deepseek-v4.1-flash instead to keep title costs near zero.
  • Want each user to bring their own UberLLM key? Set apiKey: "user_provided" and LibreChat asks them for it.

Troubleshooting

  • UberLLM does not appear in the menu: LibreChat did not read the file. Check it is next to .env (or at CONFIG_PATH), mounted in Docker, and read docker compose logs api for a config error. A bad file stops LibreChat from starting.
  • 401: ${UBERLLM_API_KEY} is empty inside the container. Check the .env line and restart.
  • 404 model not found: ids need the maker in front, for example deepseek/deepseek-v4.1-flash.
  • 402 insufficient credits: add credit on the credits page.
  • A model rejects a setting: drop it for this endpoint with dropParams: ["stop"] (or ["user"]).

Keep reading

Models for the default list

These go in models.default; with fetch on, every other model shows too.

ModelModel id (paste this)Price now
DeepSeek V4.1 Flashdeepseek/deepseek-v4.1-flash$0.0070 in · $0.0783 out / 1M
Gemini 3.5 Flashgoogle/gemini-3.5-flash$0.0592 in · $0.3555 out / 1M
Claude Sonnet 5.5anthropic/claude-sonnet-5.5$0.7610 in · $3.80 out / 1M
GPT-5.5openai/gpt-5.5$0.9625 in · $5.78 out / 1M
Kimi K3moonshotai/kimi-k3$0.0032 in · $0.2475 out / 1M
GLM 5.3z-ai/glm-5.3$0.0023 in · $0.0469 out / 1M
Gemma 3 27Bgoogle/gemma-3-27b-it$0.0188 in · $0.0471 out / 1M
Qwen3 VL 235B A22Bqwen/qwen3-vl-235b-a22b-instruct$0.0022 in · $0.0199 out / 1M

Prices at the last hourly build, no fee added · every model →

FAQ

How do I add UberLLM to LibreChat?

Add a custom endpoint in librechat.yaml with name "UberLLM", baseURL https://api.uberllm.dev/v1 and apiKey "${UBERLLM_API_KEY}", put the key in .env and restart. models.fetch: true lists every model.

Can each LibreChat user use their own UberLLM key?

Yes. Set apiKey: "user_provided" on the UberLLM endpoint and LibreChat asks each user for their key.