Skip to content

LibreChat: using the VIDAI Control Plane as the backend

LibreChat's librechat.yaml supports custom endpoints. Add one pointing at the control plane and every user on your LibreChat deployment can pick your VIDAI models from the endpoint dropdown.

TL;DR

Add to librechat.yaml:

endpoints:
  custom:
    - name: "VIDAI Control Plane"
      apiKey: "${VIDAI_API_KEY}"
      baseURL: "https://your-vidai-server.example.com/v1"
      models:
        default: ["gpt-4o-mini", "claude-sonnet-4.5", "claude-haiku-4-5"]
        fetch: false
      titleConvo: true
      titleModel: "gpt-4o-mini"
      modelDisplayLabel: "VIDAI"

Set VIDAI_API_KEY in your .env and restart LibreChat. The endpoint appears in the top-of-conversation picker.

Prerequisites

  • LibreChat deployed (Docker Compose, Helm, or bare install).
  • Control plane base URL and an API key from API Keys.
  • Models registered on the Models page — the names go in models.default.

Attribution

Every LibreChat user's conversation authenticates with the single VIDAI_API_KEY env var. Per-user attribution requires either:

  • One custom endpoint per team in librechat.yaml, each with its own key — teams appear as separate rows on Chargeback.
  • User-provided keys: set userProvide: true on the endpoint so each LibreChat user pastes their own VIDAI key in Settings → API Keys — clean per-user attribution.
endpoints:
  custom:
    - name: "VIDAI Control Plane"
      apiKey: "user_provided"    # each user brings their own
      baseURL: "https://your-vidai-server.example.com/v1"
      models:
        default: ["gpt-4o-mini", "claude-sonnet-4.5"]

Multiple endpoints

Register several custom endpoints for different model families or different teams:

endpoints:
  custom:
    - name: "VIDAI · General"
      apiKey: "${VIDAI_GENERAL_KEY}"
      baseURL: "https://your-vidai-server.example.com/v1"
      models: { default: ["gpt-4o-mini"] }
    - name: "VIDAI · Compliance"
      apiKey: "${VIDAI_COMPLIANCE_KEY}"
      baseURL: "https://your-vidai-server.example.com/v1"
      models: { default: ["claude-sonnet-4.5"] }

Each shows as a separate option in the endpoint dropdown.

Verify it works

Open LibreChat, pick VIDAI Control Plane, choose a model, and send:

reply with exactly: ok

A row appears on Request Logs.

If something's off

Raise an issue at github.com/vidaiUK/vidai-quickstart/issues with the librechat.yaml endpoint block (masking keys). We'll get it sorted.

Where to go next