# Claude Desktop with OpenCheese

> Run Claude Desktop on OpenCheese in its third-party inference mode: Developer Mode, the generated OpenCheese.json, importing it, and what to check after.
>
> Web page: https://opencheese.dev/en/docs/claude-desktop/ · Every docs page: https://opencheese.dev/llms.txt

Claude Desktop is Anthropic's graphical app for Windows and macOS. It reaches OpenCheese through
its third-party inference mode, which is set up from a configuration file you import inside
the app, not from the terminal. There is no Claude Desktop for Linux: use
[Claude Code](https://opencheese.dev/en/docs/claude-code.md) there.

## 1. Install the app, but do not sign in

Download Claude Desktop from [claude.com/download](https://claude.com/download): Windows 10
build 19041 or newer (the `.msix` installer), or macOS 14 Sonoma or newer (the `.dmg`).

Open it and stop at the sign-in screen. Do not sign in and do not create an Anthropic account:
third-party mode replaces that sign-in, and an account signed in first sends your requests to
Anthropic rather than to OpenCheese.

## 2. Enable Developer Mode

The configuration window stays hidden until Developer Mode is on. From the app menu (on
Windows, the menu button in the top-left corner of the sign-in screen):

1. Open **Help**.
2. Open **Troubleshooting**.
3. Click **Enable Developer Mode**.

A **Developer** menu now appears beside **Help**. Open it and click **Configure Third-Party
Inference…**, and leave that window open.

If the window opens read-only and says the configuration is organization-managed, an
administrator has pushed a profile to your device, and it cannot be configured this way.

## 3. Download the configuration

Sign in to the OpenCheese dashboard, open **Configuration**, choose the **Claude Code** tab and its
**Claude Desktop** switch, pick an API key and confirm your password, then download
`OpenCheese.json`. The app names the configuration after the file, so keep the name unless you
want a different label.

The file looks like this:

```json
{
  "$schemaVersion": 2,
  "inference": {
    "provider": "gateway",
    "baseUrl": "https://api.opencheese.dev",
    "credential": {
      "kind": "static",
      "apiKey": "YOUR_OPENCHEESE_API_KEY"
    }
  },
  "models": {
    "prefer1mContext": true,
    "pricing": {
      "enabled": true
    }
  }
}
```

- `baseUrl` must not end in `/v1`: the app adds `/v1/models` and `/v1/messages` itself.
- No model list is needed: the app reads the models your plan includes from `/v1/models` each
  time it starts.
- The file holds your API key in plain text. Delete the downloaded copy once the import has
  finished; the app keeps its own.

## 4. Import it and restart

Back in the configuration window:

1. Open the configuration picker in the top-right corner.
2. Click **Import configuration…** and select the downloaded file.
3. Check that **Connection** shows **Gateway** and that the base URL and API key are filled in.
4. Click **Apply Changes**, then **Apply locally**. The app writes the configuration and
   relaunches itself.

Imported configurations are stored in:

| System | Folder |
| --- | --- |
| Windows | `%LOCALAPPDATA%\Claude-3p\configLibrary\` |
| macOS | `~/Library/Application Support/Claude-3p/configLibrary/` |

## 5. Check it works

- After the relaunch, the sign-in screen offers the OpenCheese deployment instead of an
  Anthropic account. Choose it.
- The model picker lists the Claude models your plan includes. If it is empty, the app could
  not reach OpenCheese when it started.
- The app reads the configuration once at launch. If anything looks stale, quit it completely
  and reopen it; closing the window is not enough.
- To see which settings the app read, use **Help → Troubleshooting → Copy Managed
  Configuration Report** (secrets are redacted).

Usage appears in the dashboard under **Transactions**, grouped as one session per
conversation.
