LibreChat is configured by librechat.yaml. Under endpoints.custom you declare a name, an apiKey and a baseURL — exactly DaoXE's shape. The models sub-block decides what users can pick, and LibreChat can even fetch it live from GET /v1/models (cheapest APIs guide).
Why route LibreChat through DaoXE#
- Self-hosted, multi-user. One YAML entry serves your whole instance; keys live server-side, not in browsers.
- Declarative models. List exact IDs, or set
models.fetch: trueto pull the live list from your account. - Per-endpoint tuning. Title generation, parameter injection and stripping are all per-endpoint fields.
Set it up in LibreChat#
- Edit librechat.yaml. Open
librechat.yaml(the path your docker-compose mounts) and add a block underendpoints.custom. - Set name, key, baseURL.
name: "DaoXE";apiKey: "{DAOXE_API_KEY}"— an env reference keeps the key out of the file;baseURL: "https://daoxe.com/v1". - Declare the models. Under
models.defaultlist exact IDs fromGET /v1/models; addmodels.fetch: trueto also pull the live list.defaultstays the fallback if fetching fails. - Restart and select. Restart LibreChat, pick DaoXE in the endpoint selector and a model in the picker, then send a test message.
# librechat.yaml — custom OpenAI-compatible endpoint
endpoints:
custom:
- name: "DaoXE"
apiKey: "${DAOXE_API_KEY}"
baseURL: "https://daoxe.com/v1"
models:
default: ["YOUR_EXACT_MODEL_ID"]
fetch: true
titleConvo: true
titleModel: "current_model"Caveats worth knowing
baseURL ends at /v1: the app appends /chat/completions itself; a full path needs directEndpoint: true to be used verbatim. titleModel: LibreChat's conversation titles default to gpt-3.5-turbo, which your DaoXE key may not serve — set titleModel to a real catalogue ID (or current_model) or title generation fails. Don't name it after a built-in: a custom endpoint called "openAI" or "anthropic" collides with built-ins — use iconURL with a built-in key for the icon instead. addParams / dropParams: per-endpoint fields that inject or strip request parameters — use dropParams if the endpoint rejects a default parameter. Model IDs are account-scoped. More clients: client setup notes.
Verify you actually get the model#
Prove the endpoint works before blaming the client — if this fails, no setting will fix it:
export DAOXE_API_KEY="your_api_key"
# List the exact model IDs your account can call
curl --fail-with-body --show-error --silent \
https://daoxe.com/v1/models \
-H "Authorization: Bearer ${DAOXE_API_KEY}"Prove the endpoint outside LibreChat first, then diff a hard prompt against the official API at temperature 0:
curl --fail-with-body --show-error --silent \
https://daoxe.com/v1/chat/completions \
-H "Authorization: Bearer ${DAOXE_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_EXACT_MODEL_ID",
"max_tokens": 64,
"messages": [{"role": "user", "content": "Say hello in one sentence."}]
}'Verify us — don't trust us
Point the open benchmark at DaoXE and at the official API and compare at temperature 0. Then learn to detect model swapping so a cheaper endpoint can't quietly swap you to a smaller model.
Frequently asked questions#
Can LibreChat use DaoXE?
Yes — an endpoints.custom entry with baseURL: https://daoxe.com/v1, an env-referenced key, and exact model IDs.
Why do conversation titles fail?
The default titleModel is gpt-3.5-turbo, which your key may not serve. Set it to a real ID from GET /v1/models or current_model.
Should the baseURL include /v1?
Yes — LibreChat appends /chat/completions. Only set directEndpoint: true if you give a full path instead.
What does it cost?
Per-model, account-scoped — live pricing; top-up is a flat 1 RMB = $1 of credit on every payment method.
Try DaoXE — and benchmark it yourself
One key for GPT, Claude, Gemini, DeepSeek and more. Point the open benchmark at us and compare — don't take our word for it.