Skip to content

LibreChat ​

A ChatGPT-style chat UI. Add plugboard as a custom endpoint, and optionally as an Anthropic endpoint for the Messages API.

Connect ​

The LibreChat container reaches plugboard through the host, so plugboard must bind a non-loopback address with keys set (Serving other machines). In librechat.yaml:

yaml
version: 1.3.17
cache: true
endpoints:
  custom:
    - name: 'Plugboard'
      apiKey: '${PLUGBOARD_KEY}'
      baseURL: 'http://host.docker.internal:4010/v1'
      models:
        default: ['fast']
        fetch: true
      titleConvo: true
      titleModel: 'fast'
      modelDisplayLabel: 'Plugboard'
    - name: 'Plugboard (Claude)'
      provider: 'anthropic'
      apiKey: '${PLUGBOARD_KEY}'
      baseURL: 'http://host.docker.internal:4010'
      headers:
        anthropic-version: '2023-06-01'
      models:
        default: ['fast']
        fetch: false

The OpenAI-shaped endpoint's base URL ends in /v1; the Anthropic one is the plugboard origin. Put PLUGBOARD_KEY in .env and mount the file with docker-compose.override.yml:

yml
services:
  api:
    volumes:
      - type: bind
        source: ./librechat.yaml
        target: /app/librechat.yaml
    extra_hosts:
      # Linux only. Docker Desktop already provides host.docker.internal.
      - "host.docker.internal:host-gateway"

extra_hosts is for Linux; Docker Desktop provides host.docker.internal. Restart with docker compose down && docker compose up -d. The files are in examples/librechat/.

What works ​

Streaming, tool calls, images and the model list on the OpenAI endpoint; streaming and tools on the Anthropic endpoint.

Limits ​

  • LibreChat silently drops a custom endpoint that lacks name, baseURL, apiKey or models (with fetch: true or a non-empty default). Check those first when an endpoint is missing.
  • An unresolved ${VAR} fails with "Missing API Key" or "Missing Base URL".
  • titleConvo: true costs one extra request per conversation; keep titleModel a cheap alias.