---
title: "OpenCode"
description: "Point OpenCode at your private-gpt server for fully local AI coding."
---

[OpenCode](https://opencode.ai) is an open-source AI coding agent with terminal, IDE, and desktop interfaces. It supports custom OpenAI-compatible providers via the `@ai-sdk/openai-compatible` package, so it works with `private-gpt` out of the box.

## Compatibility

| Feature | Status | Notes |
|---|:---:|---|
| Chat & streaming | ✅ | |
| Tool use / function calling | ✅ | Model-dependent |
| File tools (read, write, edit) | ✅ | Managed by OpenCode |
| MCP servers | ✅ | Configured in OpenCode |
| Multi-session agents | ✅ | |
| Images | ❌ | Not supported |

---

## Prerequisites

- OpenCode installed — see [opencode.ai](https://opencode.ai)
- `private-gpt` server running (see [serve](/configuration/cli#serve))

---

## Run

`private-gpt run` generates a config file at `~/.config/opencode/private-gpt.json`, sets `OPENCODE_CONFIG` to point at it, and launches OpenCode:

```bash
private-gpt run opencode
```

The server is started automatically if it is not already running. Pass `--no-server` to skip that check when the server is managed externally.

**With a specific model:**

```bash
private-gpt run opencode --model my-model
```

On first launch, press `Ctrl+P` → **Switch Model** → select the model under **PrivateGPT**.

---

## Manual setup

If you prefer to manage the configuration yourself:

**1. Create the config file**

Create `~/.config/opencode/private-gpt.json` (a separate file to avoid overriding your default OpenCode config):

```json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "private-gpt": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "PrivateGPT",
      "options": {
        "baseURL": "http://localhost:8080/v1",
        "apiKey": "secret-key"
      },
      "models": {
        "default": {
          "name": "PrivateGPT - default",
          "limit": {
            "context": 8096,
            "output": 1024
          }
        }
      }
    }
  }
}
```

Replace `secret-key` with the value of `server.auth.secret` from your `private-gpt` settings. If auth is disabled, any non-empty string works.

**2. Launch with the custom config**

```bash
export OPENCODE_CONFIG=~/.config/opencode/private-gpt.json
opencode
```

On first launch, press `Ctrl+P` → **Switch Model** → select the model under **PrivateGPT**.
