Chat apps
Add caft as a custom OpenAI-compatible provider.
Base URL https://api.caft.dev/v1, your caft key, model glm-5.3-flash. Two things apply to every app:
- Reasoning counts toward the response token limit. With a low limit the answer can come back empty, so raise it.
- Title, tag and suggestion requests use credits too.
Open WebUI
Admin Panel → Settings → Connections, then + under OpenAI API:
| Field | Value |
|---|---|
| URL | https://api.caft.dev/v1 |
| Key | Your caft API key |
| API Type | Chat Completions (not Responses) |
| Model IDs | Empty, or glm-5.3-flash |
Or set it on first start (Open WebUI reads these only once):
docker run -d -p 3000:8080 \ -e OPENAI_API_BASE_URLS="https://api.caft.dev/v1" \ -e OPENAI_API_KEYS="$CAFT_API_KEY" \ -e ENABLE_OLLAMA_API=False \ -v open-webui:/app/backend/data --name open-webui \ ghcr.io/open-webui/open-webui:v0.11.4
To cut background requests, turn off tag and follow-up generation in Settings → Interface.
NextChat
The key lives on the NextChat server:
docker run -d -p 3000:3000 \ -e OPENAI_API_KEY="$CAFT_API_KEY" \ -e BASE_URL="https://api.caft.dev" \ -e CUSTOM_MODELS="-all,+glm-5.3-flash@OpenAI" \ -e DEFAULT_MODEL="glm-5.3-flash@OpenAI" \ yidadaa/chatgpt-next-web:v2.16.1
BASE_URL has no /v1. CUSTOM_MODELS adds the model because NextChat doesn't read the model list. Don't use the browser's Custom Endpoint setting: the browser would call caft directly and fail.
AnythingLLM
docker run -d -p 3001:3001 --cap-add SYS_ADMIN \ -v anythingllm_storage:/app/server/storage \ -e STORAGE_DIR=/app/server/storage \ -e LLM_PROVIDER=generic-openai \ -e GENERIC_OPEN_AI_BASE_PATH=https://api.caft.dev/v1 \ -e GENERIC_OPEN_AI_API_KEY="$CAFT_API_KEY" \ -e GENERIC_OPEN_AI_MODEL_PREF=glm-5.3-flash \ -e GENERIC_OPEN_AI_MAX_TOKENS=8192 \ mintplexlabs/anythingllm:1.16.2
Keep GENERIC_OPEN_AI_MAX_TOKENS at 8192 or more (default 1024). Keep AnythingLLM's default embedder.
Cherry Studio
Settings → Model Provider → Add Provider:
| Field | Value |
|---|---|
| Provider Name | caft |
| API Key | Your caft API key |
| OpenAI endpoint URL | https://api.caft.dev |
Leave the Responses and Anthropic fields empty, enable the provider, Sync models, and add glm-5.3-flash. Cherry adds /v1; don't end the URL with #.
LibreChat
Add CAFT_API_KEY to .env and this endpoint to librechat.yaml:
endpoints:
custom:
- name: "caft"
apiKey: ${CAFT_API_KEY}
baseURL: "https://api.caft.dev/v1"
models:
default: ["glm-5.3-flash"]
fetch: true
titleConvo: true
titleModel: "current_model"
dropParams: ["user"]On Docker, bind-mount librechat.yaml to /app/librechat.yaml in docker-compose.override.yml. Restart, then pick caft → glm-5.3-flash.
Chatbox
Settings → Model Provider → Add → Add Custom Provider, name it caft, mode OpenAI API Compatible (not Responses):
| Field | Value |
|---|---|
| API Key | Your caft API key |
| API Host | https://api.caft.dev/v1 |
| API Path | Empty |
The preview should read https://api.caft.dev/v1/chat/completions. Fetch models and add glm-5.3-flash.
SillyTavern
API Connections:
| Field | Value |
|---|---|
| API | Chat Completion |
| Chat Completion Source | Custom (OpenAI-compatible) |
| Custom Endpoint | https://api.caft.dev/v1 |
| Custom API Key | Your caft API key |
| Model ID | glm-5.3-flash |
Connect and check for Valid. In AI Response Configuration, set Max Response Length to 2048 or more (default 300), keep Context Size above it, and keep Multiple swipes per generation at 1. Skip Logit Bias presets; logit_bias can be rejected.
Check the connection
Send a short message in a new chat. On errors, see Troubleshooting.