Opencode Desktop configuration
# Setting up OpenCode Desktop with the ElettraGateway provider Step-by-step instructions to configure **OpenCode Desktop** on Windows to use the **ElettraGateway** LLM gateway (`https://llm-api-gw.elettra.eu/v1`) and its models. **Prerequisites** - Windows 10/11 with **OpenCode Desktop** installed (v2.x) - An **ElettraGateway API key** (`sk-...`) - A plain-text editor (Notepad, Notepad++, VS Code…) > All steps below are for your Windows user account. `` means your Windows > user name, e.g. `C:\Users\francesco.guzzi\...`. --- ## Step 1 — Create the configuration file `opencode.jsonc` OpenCode reads its **global configuration** from: ``` C:\Users\\.config\opencode\opencode.jsonc ``` Create the folder and the file if they do not exist yet:  Paste the following content into `opencode.jsonc` and save it: ```jsonc { "$schema": "https://opencode.ai/config.json", "provider": { "elettragateway": { "name": "ElettraGateway", "npm": "@ai-sdk/openai-compatible", "options": { "baseURL": "https://llm-api-gw.elettra.eu/v1" }, "models": { "ds4": { "name": "ds4", "limit": { "context": 384000, "input": 384000, "output": 100000 } }, "qwen38": { "name": "qwen38", "limit": { "context": 262144, "input": 262144, "output": 100000 } }, "qwen38dgx": { "name": "qwen38dgx", "limit": { "context": 262144, "input": 262144, "output": 100000 }, "modalities": { "input": ["text", "image"] } }, "balanced": { "name": "balanced", "limit": { "context": 262144, "input": 262144, "output": 100000 }, "modalities": { "input": ["text", "image"] } }, "top": { "name": "top", "limit": { "context": 1000000, "input": 1000000, "output": 100000 }, "modalities": { "input": ["text", "image"] } }, "fast": { "name": "fast", "limit": { "context": 131000, "input": 131000, "output": 100000 } } } } } } ```  **What this does** - Registers a custom, OpenAI-compatible provider named `ElettraGateway` pointing at the gateway URL. - Declares the available models and their context limits (`limit.context`, `limit.input`, `limit.output`) — this is what OpenCode uses for context accounting. - `modalities.input: ["text", "image"]` marks the models that accept images. > **Tip:** keep the API key **out** of this file (see Step 2). If you prefer a > single file, you can instead put it under `options` as > `"apiKey": "sk-..."`, or use `"apiKey": "{env:ELETTRA_API_KEY}"` and set that > environment variable. --- ## Step 2 — Register your API key The recommended place for the key is the **credentials file**: ``` C:\Users\\.local\share\opencode\auth.json ``` Create it with this content (replace the key with your own): ```json { "elettragateway": { "type": "api", "key": "sk-YOUR-KEY-HERE" } } ```  The key is stored outside your configuration, so `opencode.jsonc` stays safe to share or commit to version control. --- ## Step 3 — Start (or reload) OpenCode Desktop Launch **OpenCode Desktop**. - OpenCode watches the configuration and applies changes live — if the app was already running while you edited `opencode.jsonc`, no restart is needed. - If the new provider does not appear, type `/reload` in the prompt, or close and reopen the app. --- ## Step 4 — Make the models visible in the model picker The desktop app keeps its **own list of which models appear in the model picker**. Models that are not enabled there are hidden, even when they are correctly configured — a frequent cause of *"I only see 3 models"*. 1. Open Settings with **Ctrl+,** (or the command palette → *Open settings*). 2. Go to **Models** — *"Choose which models appear in model picker"*. 3. Switch on the ElettraGateway models you want (`ds4`, `qwen38`, `qwen38dgx`, `balanced`, `top`, `fast`), or use **Enable all models**.  --- ## Step 5 — Select a model and verify 1. Open the model chooser with **Ctrl+'** (or click the model name in the composer). 2. Pick one of the ElettraGateway models, e.g. `top` or `balanced`. 3. Send a test prompt and check that a reply arrives.  You can also mark models as favourites and use the *Manage models* dialog to hide models you never use (for example the free `opencode/*` models). --- ## Troubleshooting | Symptom | Cause / fix | | --- | --- | | Only some models appear in the picker | Step 4: the model is disabled in **Settings → Models** (models not listed there are hidden by default). | | No `ElettraGateway` provider at all | `opencode.jsonc` not found or not valid JSON/JSONC. Check the path from Step 1 and validate the syntax (a missing `}` or a trailing comma breaks the whole file). | | `401` / "API key required" errors | The key is missing or wrong — re-check `auth.json` (Step 2) or the `apiKey` field. | | Changes to `opencode.jsonc` seem ignored | Use `/reload` in the app, or restart it. Config is merged from the global file plus any `opencode.json(c)` in the project folder. | | Still stuck | Inspect the logs: `C:\Users\\.local\share\opencode\log\opencode.log` (background service) and `C:\Users\\AppData\Roaming\ai.opencode.desktop\logs\` (app). Look for `configuration normalization diagnostic` warnings — they point to malformed config. | --- ## Appendix — where things live | What | Path | | --- | --- | | Global configuration (providers, models) | `C:\Users\\.config\opencode\opencode.jsonc` | | CLI/TUI settings (not used by the desktop) | `C:\Users\\.config\opencode\cli.json` | | API keys / credentials | `C:\Users\\.local\share\opencode\auth.json` | | Sessions database | `C:\Users\\.local\share\opencode\opencode.db` | | Service log | `C:\Users\\.local\share\opencode\log\opencode.log` | | Desktop app GUI settings (model visibility, layout, tabs) | `C:\Users\\AppData\Roaming\ai.opencode.desktop\drafts.sqlite` | | Desktop app logs | `C:\Users\\AppData\Roaming\ai.opencode.desktop\logs\` | ## Appendix — useful keyboard shortcuts | Action | Shortcut | | --- | --- | | Open settings | `Ctrl+,` | | Choose model | `Ctrl+'` | | New session | `Ctrl+T` / `Ctrl+N` | | Open project | `Ctrl+O` | | Toggle terminal | `Ctrl+\`` | | Command palette | search everything (Settings → *Search everything*) |