Skip to main content

LibreChat

LibreChat is a self-hosted, multi-model chat app. It connects to any OpenAI-compatible service through a custom endpoint in its librechat.yaml config, so the proxy slots in next to whatever else you run.

Before you start

Do the shared setup from How-to guides first: the proxy must be running and funded.

LibreChat runs in Docker by default, so — like Open WebUI — the container can't reach localhost:9376 on your host. Read the Docker networking note: point LibreChat at http://host.docker.internal:9376/v1 and bind the proxy off loopback (PROXY_SERVER_LISTEN=0.0.0.0:9376).

Connect it

Add a custom endpoint to librechat.yaml

Add ZeroSignal under endpoints.custom:

endpoints:
custom:
- name: 'ZeroSignal'
apiKey: 'zerosignal' # any non-empty value; the proxy ignores it
baseURL: 'http://host.docker.internal:9376/v1' # localhost:9376/v1 if LibreChat runs natively
models:
default: ['qwen3-coder'] # a starting model; used until the list loads
fetch: true # pull the live catalog from /v1/models
titleConvo: true
titleModel: 'qwen3-coder' # a real model id from the catalog
modelDisplayLabel: 'ZeroSignal'

fetch: true tells LibreChat to populate the model dropdown from the proxy's /v1/models. titleModel must be a concrete model id — it's what LibreChat uses to name conversations.

(Optional) Keep the key out of the file

The key is a throwaway, but if you'd rather not hardcode it, use an environment variable and set it in .env:

apiKey: '${ZEROSIGNAL_KEY}'
# .env
ZEROSIGNAL_KEY=zerosignal

Restart LibreChat

For a Docker install, make sure librechat.yaml is mounted (via docker-compose.override.yml) and restart:

docker compose down && docker compose up -d

A native install just needs a restart. The ZeroSignal endpoint now appears in the model/endpoint switcher.

Start a chat

Pick ZeroSignal in the endpoint switcher, choose a model, and send a message. The first reply confirms the path works end to end.

Troubleshooting

SymptomFix
ZeroSignal endpoint doesn't appearAll three pieces must line up: the endpoints.custom block in librechat.yaml, the mounted config in Docker, and (if used) the .env key. Restart after editing.
Endpoint appears but every chat errorsThe container can't reach the proxy. Use host.docker.internal in baseURL and bind the proxy to 0.0.0.0:9376. On Linux add --add-host=host.docker.internal:host-gateway.
Empty model listfetch: true failed to reach /v1/models (same networking cause as above), or the proxy was down. The models.default list is the fallback.
wallet_unfunded / payment errorszs-proxy fund — see Wallet & funding.

What's next