# LobeHub with OpenCheese

> Connect LobeHub to OpenCheese: the New API, OpenAI and Anthropic provider addresses, API key, model list, the Check button, and the features that need more.
>
> Web page: https://opencheese.dev/en/docs/lobehub/ · Every docs page: https://opencheese.dev/llms.txt

[LobeHub](https://github.com/lobehub/lobehub) (formerly LobeChat) reaches OpenCheese through a
provider entry in its settings. Three entries work; their addresses differ, because each SDK
appends a different path.

| Provider entry | Address to enter |
| --- | --- |
| **New API** (recommended) | `https://api.opencheese.dev` |
| **OpenAI** | `https://api.opencheese.dev/v1` |
| **Anthropic** | `https://api.opencheese.dev` (without `/v1`) |

Paste your OpenCheese API key into the entry's API key field and fetch the model list: LobeHub
reads [`/v1/models`](https://opencheese.dev/en/docs/models.md).

## New API

The **New API** entry speaks the right format for each model: the Anthropic format for Claude
models, the Responses API for GPT models, and Chat Completions for the rest. Each LobeHub topic
appears in the dashboard as one session.

One exception: models LobeHub recognises as Gemini are sent in Google's own format, which
OpenCheese does not serve. Use those through the **OpenAI** entry.

## OpenAI and Anthropic

The **OpenAI** entry sends every model through Chat Completions; the address must end in
`/v1`. The **Anthropic** entry is for Claude models only. With these two entries each request
shows as its own session in the dashboard.

## The Check button

**Check** sends one test message with a model LobeHub picks, not the one you added:

- LobeHub 1.x checks with a hardcoded model that OpenCheese does not have, so the check fails
  while chat works.
- LobeHub 2.x has a model dropdown beside **Check**: choose an OpenCheese model there.

A failed check with "Model ... does not exist on OpenCheese" therefore says nothing about your
setup. Send a message in a chat instead, or check the key from a terminal:

```bash
curl -s https://api.opencheese.dev/v1/models \
  -H "Authorization: Bearer $OPENCHEESE_API_KEY" | jq -r '.data[].id'
```

## What does not work

- **Memory** needs an embeddings endpoint, which OpenCheese does not offer: LobeHub's memory
  search quietly finds nothing.
- **System tasks** such as topic titles use LobeHub's own default model until you point them at
  an OpenCheese model under **Settings → System Tasks** (called System Agent in older versions).

## LobeHub in Docker

When LobeHub runs in Docker with **Use Client Request Mode** off, its server makes the
requests from inside the container: `https://api.opencheese.dev` works, while a `localhost`
address means the container itself.
