203 lines
4.3 KiB
Plaintext
203 lines
4.3 KiB
Plaintext
---
|
|
title: Models
|
|
description: Configuring an LLM provider and model.
|
|
---
|
|
|
|
opencode uses the [AI SDK](https://ai-sdk.dev/) and [Models.dev](https://models.dev) to support for **75+ LLM providers** and it supports running local models.
|
|
|
|
---
|
|
|
|
## Providers
|
|
|
|
You can configure providers in your opencode config under the `provider` section.
|
|
|
|
---
|
|
|
|
### Defaults
|
|
|
|
Most popular providers are preloaded by default. If you've added the credentials for a provider through `opencode auth login`, they'll be available when you start opencode.
|
|
|
|
---
|
|
|
|
### Custom
|
|
|
|
You can add custom providers by specifying the npm package for the provider and the models you want to use.
|
|
|
|
```json title="opencode.json" {5,9-11}
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"provider": {
|
|
"moonshot": {
|
|
"npm": "@ai-sdk/openai-compatible",
|
|
"options": {
|
|
"baseURL": "https://api.moonshot.ai/v1"
|
|
},
|
|
"models": {
|
|
"kimi-k2-0711-preview": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Base URL
|
|
|
|
You can customize the base URL for any provider by setting the `baseURL` option. This is useful when using proxy services or custom endpoints.
|
|
|
|
```json title="opencode.json" {6}
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"provider": {
|
|
"anthropic": {
|
|
"options": {
|
|
"baseURL": "https://api.anthropic.com/v1"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### OpenRouter
|
|
|
|
Many OpenRouter models are preloaded by default - you can customize these or add your own.
|
|
|
|
Here's an example of specifying a provider
|
|
|
|
```json title="opencode.json"
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"provider": {
|
|
"openrouter": {
|
|
"models": {
|
|
"moonshotai/kimi-k2": {
|
|
"options": {
|
|
"provider": {
|
|
"order": ["baseten"],
|
|
"allow_fallbacks": false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
You can also add additional models
|
|
|
|
```json title="opencode.json"
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"provider": {
|
|
"openrouter": {
|
|
"models": {
|
|
"somecoolnewmodel": {},
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Local
|
|
|
|
You can configure local model like ones served through LM Studio or Ollama. To
|
|
do so, you'll need to specify a couple of things.
|
|
|
|
Here's an example of configuring a local model from LM Studio:
|
|
|
|
```json title="opencode.json" {4-15}
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"provider": {
|
|
"lmstudio": {
|
|
"npm": "@ai-sdk/openai-compatible",
|
|
"name": "LM Studio (local)",
|
|
"options": {
|
|
"baseURL": "http://127.0.0.1:1234/v1"
|
|
},
|
|
"models": {
|
|
"google/gemma-3n-e4b": {
|
|
"name": "Gemma 3n-e4b (local)"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
In this example:
|
|
|
|
- `lmstudio` is the custom provider ID. We'll use this later.
|
|
- `npm` specifies the package to use for this provider. Here, `@ai-sdk/openai-compatible` is used for any OpenAI-compatible API.
|
|
- `name` is the display name for the provider in the UI.
|
|
- `options.baseURL` is the endpoint for the local server.
|
|
- `models` is a map of model IDs to their configurations. The model name will be displayed in the model selection list.
|
|
|
|
Similarly, to configure a local model from Ollama:
|
|
|
|
```json title="opencode.json" {5,7}
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"provider": {
|
|
"ollama": {
|
|
"npm": "@ai-sdk/openai-compatible",
|
|
"options": {
|
|
"baseURL": "http://localhost:11434/v1"
|
|
},
|
|
"models": {
|
|
"llama2": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
To set one of these as the default model, you can set the `model` key at the
|
|
root.
|
|
|
|
```json title="opencode.json" {3}
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"model": "lmstudio/google/gemma-3n-e4b"
|
|
}
|
|
```
|
|
|
|
Here the full ID is `provider_id/model_id`, where `provider_id` is the key in the `provider` list we set above and `model_id` is the key from the `provider.models` list.
|
|
|
|
---
|
|
|
|
## Select a model
|
|
|
|
If you have multiple models, you can select the model you want by typing in:
|
|
|
|
```bash frame="none"
|
|
/models
|
|
```
|
|
|
|
---
|
|
|
|
## Loading models
|
|
|
|
When opencode starts up, it checks for the following:
|
|
|
|
1. The model list in the opencode config.
|
|
|
|
```json title="opencode.json"
|
|
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"model": "anthropic/claude-sonnet-4-20250514"
|
|
}
|
|
```
|
|
|
|
The format here is `provider/model`.
|
|
|
|
2. The last used model.
|
|
|
|
3. The first model using an internal priority.
|