> ## Documentation Index
> Fetch the complete documentation index at: https://docs.paretoinference.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Chat apps

> Connect Open WebUI, NextChat, AnythingLLM, Cherry Studio, LibreChat, Chatbox, or SillyTavern to Pareto.

Add Pareto to your chat app as a custom OpenAI-compatible provider. The app uses your Pareto endpoint and key.

Each successful test sent a chat message in the app and received a streamed answer. Results apply to the tested versions and settings, not every app feature.

| App           | Version tested | Result                                                                                     |
| ------------- | -------------- | ------------------------------------------------------------------------------------------ |
| Open WebUI    | 0.11.4         | Streamed chat, model list, and titles passed on September 23, 2026.                        |
| NextChat      | 2.16.1         | Streamed chat and titles passed with the server settings below on September 23, 2026.      |
| AnythingLLM   | 1.16.2         | Streamed chat and model list passed with Max Tokens raised on September 23, 2026.          |
| Cherry Studio | 2.1.2          | Streamed chat, model sync, and titles passed on September 23, 2026.                        |
| LibreChat     | 0.8.7          | Streamed chat, model list, and titles passed with `dropParams` on September 23, 2026.      |
| Chatbox       | 1.23.4         | Streamed chat, model fetch, and titles passed on September 23, 2026.                       |
| SillyTavern   | 1.19.0         | Streamed chat and model list passed with Max Response Length raised on September 23, 2026. |

Setting names can differ in other app versions.

## Connection values

| Setting    | Value                                |
| ---------- | ------------------------------------ |
| API format | OpenAI Chat Completions              |
| Base URL   | `https://api.paretoinference.com/v1` |
| API key    | Your Pareto API key                  |
| Model ID   | `z-ai/glm-5.3-flash`                 |

Get your key from the [Pareto dashboard](https://paretoinference.com/dashboard). Get prepaid credits before you continue.

Most apps show the model reasoning in a separate block above the answer. The model reasoning counts toward the response token limit. If an app sets a low limit, the reasoning can use all of it and the answer is empty. Some apps also send requests for titles, tags, or suggestions. These requests use Pareto credits and count toward your concurrent request limit.

## Open WebUI

Use the [Open WebUI guide](https://github.com/open-webui/open-webui) to install Open WebUI.

### Add Pareto

1. Open **Admin Panel** → **Settings** → **Connections**.
2. In **OpenAI API**, select **+** to add a connection.
3. Enter these values.

| Field     | Value                                   |
| --------- | --------------------------------------- |
| URL       | `https://api.paretoinference.com/v1`    |
| Key       | Your Pareto key                         |
| API Type  | `Chat Completions`                      |
| Model IDs | Keep empty, or add `z-ai/glm-5.3-flash` |

4. Save the connection.
5. Select `z-ai/glm-5.3-flash` in the model menu of a new chat.

Do not set **API Type** to **Responses**. Pareto serves Chat Completions only.

### Docker

You can also add Pareto when you start Open WebUI for the first time.

```bash theme={"system"}
docker run -d -p 3000:8080 \
  -e OPENAI_API_BASE_URLS="https://api.paretoinference.com/v1" \
  -e OPENAI_API_KEYS="$PARETO_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
```

Open WebUI reads these variables only on the first start. After that, change the connection in the **Admin Panel**.

Open WebUI sends title, tag, and follow-up requests after the first message. To send fewer requests, turn off tag and follow-up generation in **Admin Panel** → **Settings** → **Interface**.

## NextChat

Use the [NextChat guide](https://github.com/ChatGPTNextWeb/NextChat) to deploy NextChat. Pareto works when the NextChat server holds your key.

### Add Pareto

Start NextChat with these environment variables.

```bash theme={"system"}
docker run -d -p 3000:3000 \
  -e OPENAI_API_KEY="$PARETO_API_KEY" \
  -e BASE_URL="https://api.paretoinference.com" \
  -e CUSTOM_MODELS="-all,+z-ai/glm-5.3-flash@OpenAI" \
  -e DEFAULT_MODEL="z-ai/glm-5.3-flash@OpenAI" \
  yidadaa/chatgpt-next-web:v2.16.1
```

`BASE_URL` has no `/v1`. NextChat adds the API path. NextChat does not read the Pareto model list, so `CUSTOM_MODELS` adds the model.

Do not use the **Custom Endpoint** setting in the NextChat browser settings. In that mode, the browser calls Pareto directly, and the request fails.

Anyone who can open your NextChat page uses your Pareto key. Protect the page before other people can open it. See the NextChat guide.

NextChat shows the model reasoning in the answer text. NextChat also sends title and history summary requests. To send fewer requests, turn off **Auto Generate Title** in the NextChat settings.

## AnythingLLM

Use the [AnythingLLM guide](https://github.com/Mintplex-Labs/anything-llm) to install AnythingLLM.

### Add Pareto

Start AnythingLLM with the Generic OpenAI provider.

```bash theme={"system"}
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.paretoinference.com/v1 \
  -e GENERIC_OPEN_AI_API_KEY="$PARETO_API_KEY" \
  -e GENERIC_OPEN_AI_MODEL_PREF=z-ai/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. The default is `1024`. With the default, a long answer can use all tokens for reasoning, and no answer shows.

Keep the default AnythingLLM embedder. Pareto does not serve embeddings.

## Cherry Studio

Use the [Cherry Studio downloads](https://github.com/CherryHQ/cherry-studio/releases) to install Cherry Studio.

### Add Pareto

1. Open **Settings** → **Model Provider**.
2. Select **Add Provider**.
3. Enter these values.

| Field               | Value                             |
| ------------------- | --------------------------------- |
| Provider Name       | `Pareto Inference`                |
| API Key             | Your Pareto key                   |
| OpenAI endpoint URL | `https://api.paretoinference.com` |

4. Keep the **OpenAI Responses** and **Anthropic** endpoint fields empty.
5. Turn on the provider.
6. Select **Sync models**, then add `z-ai/glm-5.3-flash`.
7. Open **Settings** → **Default Model**.
8. Set **Default Assistant Model** and **Quick Model** to the Pareto model.
9. Select the Pareto model in the model menu of a chat.

Cherry Studio adds `/v1` to the endpoint URL. `https://api.paretoinference.com/v1` also works. Do not end the URL with `#`.

<Warning>
  Set the **Quick Model** to the Pareto model. Cherry Studio uses the Quick Model for chat titles. With the default Quick Model, Cherry Studio sends your conversation text to its own service to make titles.
</Warning>

## LibreChat

Use the [LibreChat guide](https://github.com/danny-avila/LibreChat) to install LibreChat.

### Add Pareto

1. Add `PARETO_API_KEY` to the LibreChat `.env` file. Set it to your Pareto key.
2. Add this endpoint to `librechat.yaml`.

```yaml theme={"system"}
endpoints:
  custom:
    - name: "Pareto"
      apiKey: ${PARETO_API_KEY}
      baseURL: "https://api.paretoinference.com/v1"
      models:
        default: ["z-ai/glm-5.3-flash"]
        fetch: true
      titleConvo: true
      titleModel: "current_model"
      modelDisplayLabel: "Pareto"
      dropParams: ["user"]
```

3. For Docker, mount `librechat.yaml` in `docker-compose.override.yml`.

```yaml theme={"system"}
services:
  api:
    volumes:
      - type: bind
        source: ./librechat.yaml
        target: /app/librechat.yaml
```

4. Restart LibreChat.
5. In the model menu, select **Pareto** → `z-ai/glm-5.3-flash`.

Keep `dropParams: ["user"]`. LibreChat sends a `user` field by default. Pareto rejects this field with HTTP 400.

## Chatbox

Use the [Chatbox downloads](https://chatboxai.app) to install Chatbox.

### Add Pareto

1. Open **Settings** → **Model Provider**.
2. Select **Add** → **Add Custom Provider**.
3. Enter the name `Pareto Inference`.
4. Set **API Mode** to **OpenAI API Compatible**.
5. Select **Add**.
6. Enter these values on the provider page.

| Field    | Value                                |
| -------- | ------------------------------------ |
| API Key  | Your Pareto key                      |
| API Host | `https://api.paretoinference.com/v1` |
| API Path | Keep empty                           |

7. Make sure the preview shows `https://api.paretoinference.com/v1/chat/completions`.
8. In **Model**, select **Fetch** and add `z-ai/glm-5.3-flash`.
9. Select `z-ai/glm-5.3-flash` in the model menu below the chat box.

Do not use **OpenAI Responses API Compatible**. Pareto serves Chat Completions only.

## SillyTavern

Use the [SillyTavern guide](https://github.com/SillyTavern/SillyTavern) to install SillyTavern.

### Add Pareto

1. Open **API Connections**.
2. Enter these values.

| Field                      | Value                                |
| -------------------------- | ------------------------------------ |
| API                        | `Chat Completion`                    |
| Chat Completion Source     | `Custom (OpenAI-compatible)`         |
| Custom Endpoint (Base URL) | `https://api.paretoinference.com/v1` |
| Custom API Key             | Your Pareto key                      |
| Model ID                   | `z-ai/glm-5.3-flash`                 |

3. Select **Connect**. Make sure the status shows **Valid**.
4. Open **AI Response Configuration**.
5. Set **Max Response Length (tokens)** to `2048` or more.
6. Keep **Context Size (tokens)** larger than **Max Response Length**.
7. Keep **Multiple swipes per generation** at `1`.

The base URL includes `/v1`. With the default **Max Response Length** of `300`, the reasoning can use all tokens, and the answer is empty. If **Multiple swipes per generation** is more than `1`, Pareto rejects the request with HTTP 400. Do not use a **Logit Bias** preset. Pareto rejects `logit_bias` with HTTP 400.

## Check the connection

Send a short message in a new chat. The answer uses Pareto credits.

Pareto returns HTTP 429 when the account has no credits for the request, or when too many requests arrive at the same time. Pareto returns HTTP 503 when it is at capacity or temporarily unavailable, and HTTP 502 when a model request fails.

See [Troubleshooting](/errors) for Pareto errors.
