2026-02-21 04:07:06 +09:00
# Configuration Reference
2026-01-19 14:51:26 +09:00
2026-03-27 12:20:40 +09:00
Complete reference for Oh My OpenCode plugin configuration. During the rename transition, the runtime recognizes both `oh-my-openagent.json[c]` and legacy `oh-my-opencode.json[c]` files.
2026-02-21 17:23:28 +09:00
---
## Table of Contents
- [Getting Started ](#getting-started )
- [File Locations ](#file-locations )
- [Quick Start Example ](#quick-start-example )
- [Core Concepts ](#core-concepts )
- [Agents ](#agents )
- [Categories ](#categories )
- [Model Resolution ](#model-resolution )
- [Task System ](#task-system )
- [Background Tasks ](#background-tasks )
- [Sisyphus Agent ](#sisyphus-agent )
- [Sisyphus Tasks ](#sisyphus-tasks )
- [Features ](#features )
- [Skills ](#skills )
- [Hooks ](#hooks )
- [Commands ](#commands )
- [Browser Automation ](#browser-automation )
- [Tmux Integration ](#tmux-integration )
- [Git Master ](#git-master )
- [Comment Checker ](#comment-checker )
- [Notification ](#notification )
- [MCPs ](#mcps )
- [LSP ](#lsp )
- [Advanced ](#advanced )
- [Runtime Fallback ](#runtime-fallback )
2026-03-27 12:59:36 +09:00
- [Model Capabilities ](#model-capabilities )
2026-02-21 17:23:28 +09:00
- [Hashline Edit ](#hashline-edit )
- [Experimental ](#experimental )
- [Reference ](#reference )
- [Environment Variables ](#environment-variables )
- [Provider-Specific ](#provider-specific )
---
## Getting Started
### File Locations
2026-01-19 14:51:26 +09:00
2026-03-27 12:20:40 +09:00
User config is loaded first, then project config overrides it. In each directory, the compatibility layer recognizes both the renamed and legacy basenames.
2026-01-23 17:05:45 +09:00
2026-03-27 12:20:40 +09:00
1. Project config: `.opencode/oh-my-openagent.json[c]` or `.opencode/oh-my-opencode.json[c]`
2026-02-21 17:05:30 +09:00
2. User config (`.jsonc` preferred over `.json` ):
2026-01-23 17:05:45 +09:00
2026-03-27 12:20:40 +09:00
| Platform | Path candidates |
| ----------- | --------------- |
| macOS/Linux | `~/.config/opencode/oh-my-openagent.json[c]` , `~/.config/opencode/oh-my-opencode.json[c]` |
| Windows | `%APPDATA%\opencode\oh-my-openagent.json[c]` , `%APPDATA%\opencode\oh-my-opencode.json[c]` |
2026-01-23 17:05:45 +09:00
2026-03-27 12:59:36 +09:00
**Rename compatibility: ** The published package and CLI binary remain `oh-my-opencode` . OpenCode plugin registration prefers `oh-my-openagent` , while legacy `oh-my-opencode` entries and config basenames still load during the transition. Config detection checks `oh-my-opencode` before `oh-my-openagent` , so if both plugin config basenames exist in the same directory, the legacy `oh-my-opencode.*` file currently wins.
2026-02-21 17:05:30 +09:00
JSONC supports `// line comments` , `/* block comments */` , and trailing commas.
2026-01-23 17:05:45 +09:00
2026-02-21 17:23:28 +09:00
Enable schema autocomplete:
2026-03-06 20:50:11 +09:00
2026-02-21 17:05:30 +09:00
``` json
2026-03-06 20:50:11 +09:00
{
2026-03-27 12:20:40 +09:00
"$schema" : "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/oh-my-opencode.schema.json"
2026-03-06 20:50:11 +09:00
}
2026-01-23 17:05:45 +09:00
```
2026-03-27 12:20:40 +09:00
Run `bunx oh-my-opencode install` for guided setup. Run `opencode models` to list available models.
2026-01-23 17:05:45 +09:00
2026-02-21 17:23:28 +09:00
### Quick Start Example
2026-01-19 14:51:26 +09:00
2026-02-21 17:23:28 +09:00
Here's a practical starting configuration:
2026-02-21 04:07:06 +09:00
2026-02-21 17:05:30 +09:00
``` jsonc
{
2026-03-27 12:20:40 +09:00
"$schema" : "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/oh-my-opencode.schema.json" ,
2026-01-19 14:51:26 +09:00
2026-02-21 17:05:30 +09:00
"agents" : {
2026-02-21 17:23:28 +09:00
// Main orchestrator: Claude Opus or Kimi K2.5 work best
2026-02-21 17:05:30 +09:00
"sisyphus" : {
"model" : "kimi-for-coding/k2p5" ,
2026-04-17 14:52:19 +09:00
"ultrawork" : { "model" : "anthropic/claude-opus-4-7" , "variant" : "max" } ,
2026-02-21 17:05:30 +09:00
} ,
2026-01-19 14:51:26 +09:00
2026-03-06 20:50:11 +09:00
// Research agents: cheap fast models are fine
"librarian" : { "model" : "google/gemini-3-flash" } ,
"explore" : { "model" : "github-copilot/grok-code-fast-1" } ,
2026-02-21 17:05:30 +09:00
2026-03-07 02:33:32 +09:00
// Architecture consultation: GPT-5.4 or Claude Opus
"oracle" : { "model" : "openai/gpt-5.4" , "variant" : "high" } ,
2026-02-21 17:05:30 +09:00
2026-02-21 17:23:28 +09:00
// Prometheus inherits sisyphus model; just add prompt guidance
2026-03-06 20:50:11 +09:00
"prometheus" : {
"prompt_append" : "Leverage deep & quick agents heavily, always in parallel." ,
} ,
2026-02-21 17:05:30 +09:00
} ,
2026-01-19 14:51:26 +09:00
2026-02-21 17:05:30 +09:00
"categories" : {
2026-03-27 12:20:40 +09:00
// quick - trivial tasks
2026-02-21 17:05:30 +09:00
"quick" : { "model" : "opencode/gpt-5-nano" } ,
2026-01-19 14:51:26 +09:00
2026-03-27 12:20:40 +09:00
// unspecified-low - moderate tasks
2026-03-06 20:50:11 +09:00
"unspecified-low" : { "model" : "anthropic/claude-sonnet-4-6" } ,
2026-01-19 14:51:26 +09:00
2026-03-27 12:20:40 +09:00
// unspecified-high - complex work
2026-04-17 14:52:19 +09:00
"unspecified-high" : { "model" : "anthropic/claude-opus-4-7" , "variant" : "max" } ,
2026-01-19 14:51:26 +09:00
2026-03-27 12:20:40 +09:00
// writing - docs/prose
2026-03-06 20:50:11 +09:00
"writing" : { "model" : "google/gemini-3-flash" } ,
2026-01-19 14:51:26 +09:00
2026-03-27 12:20:40 +09:00
// visual-engineering - Gemini dominates visual tasks
2026-03-06 20:50:11 +09:00
"visual-engineering" : {
"model" : "google/gemini-3.1-pro" ,
"variant" : "high" ,
} ,
2026-02-21 17:23:28 +09:00
// Custom category for git operations
2026-02-21 17:05:30 +09:00
"git" : {
"model" : "opencode/gpt-5-nano" ,
"description" : "All git operations" ,
2026-03-06 20:50:11 +09:00
"prompt_append" : "Focus on atomic commits, clear messages, and safe operations." ,
} ,
2026-02-21 17:05:30 +09:00
} ,
2026-01-19 14:51:26 +09:00
2026-02-21 17:23:28 +09:00
// Limit expensive providers; let cheap ones run freely
2026-02-21 17:05:30 +09:00
"background_task" : {
2026-03-06 20:50:11 +09:00
"providerConcurrency" : {
"anthropic" : 3 ,
"openai" : 3 ,
"opencode" : 10 ,
"zai-coding-plan" : 10 ,
} ,
"modelConcurrency" : {
2026-04-17 14:52:19 +09:00
"anthropic/claude-opus-4-7" : 2 ,
2026-03-06 20:50:11 +09:00
"opencode/gpt-5-nano" : 20 ,
} ,
2026-01-19 14:51:26 +09:00
} ,
2026-02-21 17:05:30 +09:00
"experimental" : { "aggressive_truncation" : true , "task_system" : true } ,
2026-03-06 20:50:11 +09:00
"tmux" : { "enabled" : false } ,
2026-01-19 14:51:26 +09:00
}
```
2026-02-21 17:23:28 +09:00
---
2026-01-19 14:51:26 +09:00
2026-02-21 17:23:28 +09:00
## Core Concepts
### Agents
2026-04-13 21:21:17 +09:00
Override built-in agent settings. Available agents: `sisyphus` , `hephaestus` , `prometheus` , `oracle` , `librarian` , `explore` , `multimodal-looker` , `metis` , `momus` , `atlas` , `sisyphus-junior` .
2026-01-19 14:51:26 +09:00
``` json
{
"agents" : {
2026-02-21 17:05:30 +09:00
"explore" : { "model" : "anthropic/claude-haiku-4-5" , "temperature" : 0.5 } ,
"multimodal-looker" : { "disable" : true }
2026-01-19 14:51:26 +09:00
}
}
```
2026-02-21 17:23:28 +09:00
Disable agents entirely: `{ "disabled_agents": ["oracle", "multimodal-looker"] }`
2026-01-29 06:00:32 +05:30
2026-03-27 12:59:36 +09:00
Core agents receive an injected runtime `order` field for deterministic Tab cycling in the UI: Sisyphus = 1, Hephaestus = 2, Prometheus = 3, Atlas = 4. This is not a user-configurable config key.
2026-02-21 17:23:28 +09:00
#### Agent Options
2026-01-29 06:00:32 +05:30
2026-03-27 12:20:40 +09:00
| Option | Type | Description |
| ----------------- | -------------- | --------------------------------------------------------------- |
| `model` | string | Model override (`provider/model` ) |
2026-03-27 12:24:51 +09:00
| `fallback_models` | string\|array | Fallback models on API errors. Supports strings or mixed arrays of strings and object entries with per-model settings |
| `temperature` | number | Sampling temperature |
| `top_p` | number | Top-p sampling |
| `prompt` | string | Replace system prompt. Supports `file://` URIs |
| `prompt_append` | string | Append to system prompt. Supports `file://` URIs |
2026-03-06 20:50:11 +09:00
| `tools` | array | Allowed tools list |
| `disable` | boolean | Disable this agent |
| `mode` | string | Agent mode |
| `color` | string | UI color |
| `permission` | object | Per-tool permissions (see below) |
| `category` | string | Inherit model from category |
2026-03-27 12:20:40 +09:00
| `variant` | string | Model variant: `max` , `high` , `medium` , `low` , `xhigh` . Normalized to supported values |
2026-03-06 20:50:11 +09:00
| `maxTokens` | number | Max response tokens |
| `thinking` | object | Anthropic extended thinking |
2026-03-27 12:59:36 +09:00
| `reasoningEffort` | string | OpenAI reasoning: `none` , `minimal` , `low` , `medium` , `high` , `xhigh` . Normalized to supported values |
2026-03-06 20:50:11 +09:00
| `textVerbosity` | string | Text verbosity: `low` , `medium` , `high` |
| `providerOptions` | object | Provider-specific options |
2026-01-29 06:00:32 +05:30
2026-02-21 17:23:28 +09:00
#### Anthropic Extended Thinking
2026-01-19 14:51:26 +09:00
``` json
{
"agents" : {
2026-02-21 17:05:30 +09:00
"oracle" : { "thinking" : { "type" : "enabled" , "budgetTokens" : 200000 } }
2026-01-19 14:51:26 +09:00
}
}
```
2026-02-21 17:23:28 +09:00
#### Agent Permissions
Control what tools an agent can use:
2026-01-19 14:51:26 +09:00
``` json
{
"agents" : {
"explore" : {
"permission" : {
"edit" : "deny" ,
"bash" : "ask" ,
"webfetch" : "allow"
}
}
}
}
```
2026-03-06 20:50:11 +09:00
| Permission | Values |
| -------------------- | --------------------------------------------------------------------------- |
| `edit` | `ask` / `allow` / `deny` |
| `bash` | `ask` / `allow` / `deny` or per-command: `{ "git": "allow", "rm": "deny" }` |
| `webfetch` | `ask` / `allow` / `deny` |
| `doom_loop` | `ask` / `allow` / `deny` |
| `external_directory` | `ask` / `allow` / `deny` |
2026-01-19 14:51:26 +09:00
2026-03-27 12:20:40 +09:00
#### Fallback Models with Per-Model Settings
`fallback_models` accepts either a single model string or an array. Array entries can be plain strings or objects with individual model settings:
``` jsonc
{
"agents" : {
"sisyphus" : {
2026-04-17 14:52:19 +09:00
"model" : "anthropic/claude-opus-4-7" ,
2026-03-27 12:20:40 +09:00
"fallback_models" : [
// Simple string fallback
"openai/gpt-5.4" ,
// Object with per-model settings
{
"model" : "google/gemini-3.1-pro" ,
"variant" : "high" ,
"temperature" : 0.2
} ,
{
"model" : "anthropic/claude-sonnet-4-6" ,
"thinking" : { "type" : "enabled" , "budgetTokens" : 64000 }
}
]
}
}
}
```
Object entries support: `model` , `variant` , `reasoningEffort` , `temperature` , `top_p` , `maxTokens` , `thinking` .
#### File URIs for Prompts
2026-03-27 12:59:36 +09:00
Both `prompt` and `prompt_append` support loading content from files via `file://` URIs. Category-level `prompt_append` supports the same URI forms.
2026-03-27 12:20:40 +09:00
``` jsonc
{
"agents" : {
"sisyphus" : {
"prompt_append" : "file:///absolute/path/to/prompt.txt"
} ,
"oracle" : {
"prompt" : "file://./relative/to/project/prompt.md"
} ,
"explore" : {
"prompt_append" : "file://~/home/dir/prompt.txt"
}
2026-03-27 12:59:36 +09:00
} ,
"categories" : {
"custom" : {
"model" : "anthropic/claude-sonnet-4-6" ,
"prompt_append" : "file://./category-context.md"
}
2026-03-27 12:20:40 +09:00
}
}
```
2026-03-27 12:59:36 +09:00
Paths can be absolute (`file:///abs/path` ), relative to project root (`file://./rel/path` ), or home-relative (`file://~/home/path` ). If a file URI cannot be decoded, resolved, or read, OmO inserts a warning placeholder into the prompt instead of failing hard.
2026-02-21 17:23:28 +09:00
### Categories
2026-01-19 14:51:26 +09:00
2026-02-21 17:23:28 +09:00
Domain-specific model delegation used by the `task()` tool. When Sisyphus delegates work, it picks a category, not a model name.
2026-01-19 14:51:26 +09:00
2026-02-21 17:23:28 +09:00
#### Built-in Categories
2026-01-19 14:51:26 +09:00
2026-03-06 20:50:11 +09:00
| Category | Default Model | Description |
| -------------------- | ------------------------------- | ---------------------------------------------- |
| `visual-engineering` | `google/gemini-3.1-pro` (high) | Frontend, UI/UX, design, animation |
2026-03-12 01:00:41 +09:00
| `ultrabrain` | `openai/gpt-5.4` (xhigh) | Deep logical reasoning, complex architecture |
2026-03-31 17:26:40 -07:00
| `deep` | `openai/gpt-5.4` (medium) | Autonomous problem-solving, thorough research |
2026-03-06 20:50:11 +09:00
| `artistry` | `google/gemini-3.1-pro` (high) | Creative/unconventional approaches |
2026-03-18 18:31:11 +09:00
| `quick` | `openai/gpt-5.4-mini` | Trivial tasks, typo fixes, single-file changes |
2026-03-06 20:50:11 +09:00
| `unspecified-low` | `anthropic/claude-sonnet-4-6` | General tasks, low effort |
2026-04-17 14:52:19 +09:00
| `unspecified-high` | `anthropic/claude-opus-4-7` (max) | General tasks, high effort |
2026-03-06 20:50:11 +09:00
| `writing` | `google/gemini-3-flash` | Documentation, prose, technical writing |
2026-02-21 17:05:30 +09:00
> **Note**: Built-in defaults only apply if the category is present in your config. Otherwise the system default model is used.
2026-02-21 17:23:28 +09:00
#### Category Options
2026-02-21 17:05:30 +09:00
2026-03-06 20:50:11 +09:00
| Option | Type | Default | Description |
| ------------------- | ------------- | ------- | ------------------------------------------------------------------- |
| `model` | string | - | Model override |
2026-03-27 12:24:51 +09:00
| `fallback_models` | string\|array | - | Fallback models on API errors. Supports strings or mixed arrays of strings and object entries with per-model settings |
2026-03-06 20:50:11 +09:00
| `temperature` | number | - | Sampling temperature |
| `top_p` | number | - | Top-p sampling |
| `maxTokens` | number | - | Max response tokens |
| `thinking` | object | - | Anthropic extended thinking |
2026-03-27 12:20:40 +09:00
| `reasoningEffort` | string | - | OpenAI reasoning effort. Unsupported values are normalized |
2026-03-06 20:50:11 +09:00
| `textVerbosity` | string | - | Text verbosity |
| `tools` | array | - | Allowed tools |
| `prompt_append` | string | - | Append to system prompt |
2026-03-27 12:20:40 +09:00
| `variant` | string | - | Model variant. Unsupported values are normalized |
2026-03-06 20:50:11 +09:00
| `description` | string | - | Shown in `task()` tool prompt |
| `is_unstable_agent` | boolean | `false` | Force background mode + monitoring. Auto-enabled for Gemini models. |
2026-02-21 17:05:30 +09:00
2026-02-21 17:23:28 +09:00
Disable categories: `{ "disabled_categories": ["ultrabrain"] }`
2026-01-25 15:02:41 +09:00
2026-02-21 17:23:28 +09:00
### Model Resolution
2026-01-25 15:02:41 +09:00
2026-03-27 12:59:36 +09:00
Runtime priority:
2026-01-25 15:02:41 +09:00
2026-03-27 12:59:36 +09:00
1. **UI-selected model ** - model chosen in the OpenCode UI, for primary agents
2. **User override ** - model set in config → used exactly as-is. Even on cold cache, explicit user configuration takes precedence over hardcoded fallback chains
3. **Category default ** - model inherited from the assigned category config
4. **User `fallback_models` ** - user-configured fallback list is tried before built-in fallback chains
5. **Provider fallback chain ** - built-in provider/model chain from OmO source
6. **System default ** - OpenCode's configured default model
2026-03-27 12:20:40 +09:00
#### Model Settings Compatibility
2026-03-27 12:59:36 +09:00
Model settings are compatibility-normalized against model capabilities instead of failing hard.
Normalized fields:
- `variant` - downgraded to the closest supported value
- `reasoningEffort` - downgraded to the closest supported value, or removed if unsupported
- `temperature` - removed if unsupported by the model metadata
- `top_p` - removed if unsupported by the model metadata
- `maxTokens` - capped to the model's reported max output limit
- `thinking` - removed if the target model does not support thinking
2026-03-27 12:20:40 +09:00
Examples:
- Claude models do not support `reasoningEffort` - it is removed automatically
- GPT-4.1 does not support reasoning - `reasoningEffort` is removed
- o-series models support `none` through `high` - `xhigh` is downgraded to `high`
- GPT-5 supports `none` , `minimal` , `low` , `medium` , `high` , `xhigh` - all pass through
2026-03-27 12:59:36 +09:00
Capability data comes from provider runtime metadata first. OmO also ships bundled models.dev-backed capability data, supports a refreshable local models.dev cache, and falls back to heuristic family detection plus alias rules when exact metadata is unavailable. `bunx oh-my-opencode doctor` surfaces capability diagnostics and warns when a configured model relies on compatibility fallback.
2026-01-26 16:02:34 +09:00
2026-02-21 17:23:28 +09:00
#### Agent Provider Chains
2026-01-26 16:02:34 +09:00
2026-03-06 20:50:11 +09:00
| Agent | Default Model | Provider Priority |
| --------------------- | ------------------- | ---------------------------------------------------------------------------- |
2026-04-17 14:52:19 +09:00
| **Sisyphus ** | `claude-opus-4-7` | `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)` → `opencode-go/kimi-k2.5` → `kimi-for-coding/k2p5` → `opencode\|moonshotai\|moonshotai-cn\|firmware\|ollama-cloud\|aihubmix/kimi-k2.5` → `openai\|github-copilot\|opencode/gpt-5.4 (medium)` → `zai-coding-plan\|opencode/glm-5` → `opencode/big-pickle` |
2026-03-27 12:59:36 +09:00
| **Hephaestus ** | `gpt-5.4` | `gpt-5.4 (medium)` |
2026-04-17 14:52:19 +09:00
| **oracle ** | `gpt-5.4` | `openai\|github-copilot\|opencode/gpt-5.4 (high)` → `google\|github-copilot\|opencode/gemini-3.1-pro (high)` → `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)` → `opencode-go/glm-5` |
2026-04-21 13:38:23 +09:00
| **librarian ** | `gpt-5.4-mini-fast` | `openai/gpt-5.4-mini-fast` → `opencode-go\|vercel/minimax-m2.7-highspeed` → `opencode-go\|vercel/minimax-m2.7` → `anthropic\|opencode\|vercel/claude-haiku-4-5` → `openai\|opencode\|vercel/gpt-5.4-nano` |
| **explore ** | `gpt-5.4-mini-fast` | `openai/gpt-5.4-mini-fast` → `opencode-go\|vercel/minimax-m2.7-highspeed` → `opencode-go\|vercel/minimax-m2.7` → `anthropic\|opencode\|vercel/claude-haiku-4-5` → `openai\|opencode\|vercel/gpt-5.4-nano` |
2026-03-28 15:57:27 +09:00
| **multimodal-looker ** | `gpt-5.4` | `openai\|opencode/gpt-5.4 (medium)` → `opencode-go/kimi-k2.5` → `zai-coding-plan/glm-4.6v` → `openai\|github-copilot\|opencode/gpt-5-nano` |
2026-04-17 14:52:19 +09:00
| **Prometheus ** | `claude-opus-4-7` | `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)` → `openai\|github-copilot\|opencode/gpt-5.4 (high)` → `opencode-go/glm-5` → `google\|github-copilot\|opencode/gemini-3.1-pro` |
| **Metis ** | `claude-opus-4-7` | `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)` → `openai\|github-copilot\|opencode/gpt-5.4 (high)` → `opencode-go/glm-5` → `kimi-for-coding/k2p5` |
| **Momus ** | `gpt-5.4` | `openai\|github-copilot\|opencode/gpt-5.4 (xhigh)` → `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)` → `google\|github-copilot\|opencode/gemini-3.1-pro (high)` → `opencode-go/glm-5` |
2026-03-28 15:57:27 +09:00
| **Atlas ** | `claude-sonnet-4-6` | `anthropic\|github-copilot\|opencode/claude-sonnet-4-6` → `opencode-go/kimi-k2.5` → `openai\|github-copilot\|opencode/gpt-5.4 (medium)` → `opencode-go/minimax-m2.7` |
2026-01-26 16:02:34 +09:00
2026-02-21 17:23:28 +09:00
#### Category Provider Chains
2026-01-26 16:02:34 +09:00
2026-03-06 20:50:11 +09:00
| Category | Default Model | Provider Priority |
| ---------------------- | ------------------- | -------------------------------------------------------------- |
2026-04-17 14:52:19 +09:00
| **visual-engineering ** | `gemini-3.1-pro` | `google\|github-copilot\|opencode/gemini-3.1-pro (high)` → `zai-coding-plan\|opencode/glm-5` → `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)` → `opencode-go/glm-5` → `kimi-for-coding/k2p5` |
| **ultrabrain ** | `gpt-5.4` | `openai\|opencode/gpt-5.4 (xhigh)` → `google\|github-copilot\|opencode/gemini-3.1-pro (high)` → `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)` → `opencode-go/glm-5` |
| **deep ** | `gpt-5.4` | `openai\|github-copilot\|venice\|opencode/gpt-5.4 (medium)` → `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)` → `google\|github-copilot\|opencode/gemini-3.1-pro (high)` |
| **artistry ** | `gemini-3.1-pro` | `google\|github-copilot\|opencode/gemini-3.1-pro (high)` → `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)` → `openai\|github-copilot\|opencode/gpt-5.4` |
2026-03-28 15:57:27 +09:00
| **quick ** | `gpt-5.4-mini` | `openai\|github-copilot\|opencode/gpt-5.4-mini` → `anthropic\|github-copilot\|opencode/claude-haiku-4-5` → `google\|github-copilot\|opencode/gemini-3-flash` → `opencode-go/minimax-m2.7` → `opencode/gpt-5-nano` |
| **unspecified-low ** | `claude-sonnet-4-6` | `anthropic\|github-copilot\|opencode/claude-sonnet-4-6` → `openai\|opencode/gpt-5.3-codex (medium)` → `opencode-go/kimi-k2.5` → `google\|github-copilot\|opencode/gemini-3-flash` → `opencode-go/minimax-m2.7` |
2026-04-17 14:52:19 +09:00
| **unspecified-high ** | `claude-opus-4-7` | `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)` → `openai\|github-copilot\|opencode/gpt-5.4 (high)` → `zai-coding-plan\|opencode/glm-5` → `kimi-for-coding/k2p5` → `opencode-go/glm-5` → `opencode/kimi-k2.5` → `opencode\|moonshotai\|moonshotai-cn\|firmware\|ollama-cloud\|aihubmix/kimi-k2.5` |
2026-03-28 15:57:27 +09:00
| **writing ** | `gemini-3-flash` | `google\|github-copilot\|opencode/gemini-3-flash` → `opencode-go/kimi-k2.5` → `anthropic\|github-copilot\|opencode/claude-sonnet-4-6` → `opencode-go/minimax-m2.7` |
2026-01-26 16:02:34 +09:00
2026-03-27 12:20:40 +09:00
Run `bunx oh-my-opencode doctor --verbose` to see effective model resolution for your config.
2026-01-26 16:02:34 +09:00
2026-02-21 17:23:28 +09:00
---
2026-01-19 14:51:26 +09:00
2026-02-21 17:23:28 +09:00
## Task System
2026-01-26 16:24:14 +09:00
2026-02-21 17:23:28 +09:00
### Background Tasks
2026-01-26 16:24:14 +09:00
2026-02-21 17:23:28 +09:00
Control parallel agent execution and concurrency limits.
2026-01-26 16:24:14 +09:00
2026-02-21 04:07:06 +09:00
``` json
{
2026-02-21 17:23:28 +09:00
"background_task" : {
"defaultConcurrency" : 5 ,
"staleTimeoutMs" : 180000 ,
"providerConcurrency" : { "anthropic" : 3 , "openai" : 5 , "google" : 10 } ,
2026-04-17 14:52:19 +09:00
"modelConcurrency" : { "anthropic/claude-opus-4-7" : 2 }
2026-02-21 04:07:06 +09:00
}
}
```
2026-01-26 16:24:14 +09:00
2026-03-06 20:50:11 +09:00
| Option | Default | Description |
| --------------------- | -------- | --------------------------------------------------------------------- |
| `defaultConcurrency` | - | Max concurrent tasks (all providers) |
| `staleTimeoutMs` | `180000` | Interrupt tasks with no activity (min: 60000) |
| `providerConcurrency` | - | Per-provider limits (key = provider name) |
| `modelConcurrency` | - | Per-model limits (key = `provider/model` ). Overrides provider limits. |
2026-01-19 14:51:26 +09:00
2026-02-21 17:23:28 +09:00
Priority: `modelConcurrency` > `providerConcurrency` > `defaultConcurrency`
2026-01-19 14:51:26 +09:00
2026-02-21 17:23:28 +09:00
### Sisyphus Agent
Configure the main orchestration system.
2026-01-19 14:51:26 +09:00
``` json
{
"sisyphus_agent" : {
"disabled" : false ,
"default_builder_enabled" : false ,
"planner_enabled" : true ,
"replace_plan" : true
}
}
```
2026-03-06 20:50:11 +09:00
| Option | Default | Description |
| ------------------------- | ------- | --------------------------------------------------------------- |
| `disabled` | `false` | Disable all Sisyphus orchestration, restore original build/plan |
| `default_builder_enabled` | `false` | Enable OpenCode-Builder agent (off by default) |
| `planner_enabled` | `true` | Enable Prometheus (Planner) agent |
| `replace_plan` | `true` | Demote default plan agent to subagent mode |
2026-02-21 17:23:28 +09:00
2026-02-21 17:05:30 +09:00
Sisyphus agents can also be customized under `agents` using their names: `Sisyphus` , `OpenCode-Builder` , `Prometheus (Planner)` , `Metis (Plan Consultant)` .
2026-01-19 14:51:26 +09:00
2026-02-21 17:23:28 +09:00
### Sisyphus Tasks
Enable the Sisyphus Tasks system for cross-session task tracking.
2026-01-19 14:51:26 +09:00
2026-02-21 04:07:06 +09:00
``` json
{
2026-02-21 17:23:28 +09:00
"sisyphus" : {
"tasks" : {
"enabled" : false ,
"storage_path" : ".sisyphus/tasks" ,
"claude_code_compat" : false
}
2026-01-19 14:51:26 +09:00
}
}
```
2026-03-06 20:50:11 +09:00
| Option | Default | Description |
| -------------------- | ----------------- | ------------------------------------------ |
| `enabled` | `false` | Enable Sisyphus Tasks system |
| `storage_path` | `.sisyphus/tasks` | Storage path (relative to project root) |
| `claude_code_compat` | `false` | Enable Claude Code path compatibility mode |
2026-01-29 06:00:32 +05:30
2026-02-21 17:23:28 +09:00
---
2026-01-19 14:51:26 +09:00
2026-02-21 17:23:28 +09:00
## Features
2026-02-12 13:11:06 -05:00
2026-02-21 17:23:28 +09:00
### Skills
2026-02-12 13:11:06 -05:00
2026-02-21 17:23:28 +09:00
Skills bring domain-specific expertise and embedded MCPs.
2026-02-12 13:11:06 -05:00
2026-03-06 20:50:11 +09:00
Built-in skills: `playwright` , `playwright-cli` , `agent-browser` , `dev-browser` , `git-master` , `frontend-ui-ux`
2026-02-12 13:11:06 -05:00
2026-02-21 17:23:28 +09:00
Disable built-in skills: `{ "disabled_skills": ["playwright"] }`
#### Skills Configuration
2026-02-12 13:11:06 -05:00
``` json
{
2026-02-21 17:23:28 +09:00
"skills" : {
"sources" : [
{ "path" : "./my-skills" , "recursive" : true } ,
"https://example.com/skill.yaml"
] ,
"enable" : [ "my-skill" ] ,
"disable" : [ "other-skill" ] ,
"my-skill" : {
"description" : "What it does" ,
"template" : "Custom prompt template" ,
"from" : "source-file.ts" ,
"model" : "custom/model" ,
"agent" : "custom-agent" ,
"subtask" : true ,
"argument-hint" : "usage hint" ,
"license" : "MIT" ,
"compatibility" : ">= 3.0.0" ,
"metadata" : { "author" : "Your Name" } ,
"allowed-tools" : [ "read" , "bash" ]
2026-02-12 13:11:06 -05:00
}
}
}
```
2026-03-06 20:50:11 +09:00
| `sources` option | Default | Description |
| ---------------- | ------- | ------------------------------- |
| `path` | - | Local path or remote URL |
| `recursive` | `false` | Recurse into subdirectories |
| `glob` | - | Glob pattern for file selection |
2026-02-21 17:23:28 +09:00
### Hooks
2026-01-21 11:17:46 +09:00
2026-02-21 17:05:30 +09:00
Disable built-in hooks via `disabled_hooks` :
2026-01-21 11:17:46 +09:00
2026-02-21 04:07:06 +09:00
``` json
2026-03-19 11:37:30 +09:00
{ "disabled_hooks" : [ "comment-checker" ] }
2026-02-21 04:07:06 +09:00
```
2026-01-21 11:17:46 +09:00
2026-03-19 11:37:30 +09:00
Available hooks: `todo-continuation-enforcer` , `context-window-monitor` , `session-recovery` , `session-notification` , `comment-checker` , `grep-output-truncator` , `tool-output-truncator` , `directory-agents-injector` , `directory-readme-injector` , `empty-task-response-detector` , `think-mode` , `anthropic-context-window-limit-recovery` , `rules-injector` , `background-notification` , `auto-update-checker` , `startup-toast` , `keyword-detector` , `agent-usage-reminder` , `non-interactive-env` , `interactive-bash-session` , `compaction-context-injector` , `thinking-block-validator` , `claude-code-hooks` , `ralph-loop` , `preemptive-compaction` , `auto-slash-command` , `sisyphus-junior-notepad` , `no-sisyphus-gpt` , `start-work` , `runtime-fallback`
2026-01-21 11:17:46 +09:00
2026-02-21 17:05:30 +09:00
**Notes: **
2026-03-06 20:50:11 +09:00
2026-03-27 12:20:40 +09:00
- `directory-agents-injector` - auto-disabled on OpenCode 1.1.37+ (native AGENTS.md support)
- `no-sisyphus-gpt` - **do not disable ** . It blocks incompatible GPT models for Sisyphus while allowing the dedicated GPT-5.4 prompt path.
2026-02-21 17:05:30 +09:00
- `startup-toast` is a sub-feature of `auto-update-checker` . Disable just the toast by adding `startup-toast` to `disabled_hooks` .
2026-03-27 12:20:40 +09:00
- `session-recovery` - automatically recovers from recoverable session errors (missing tool results, unavailable tools, thinking block violations). Shows toast notifications during recovery. Enable `experimental.auto_resume` for automatic retry after recovery.
2026-02-21 04:07:06 +09:00
2026-02-21 17:23:28 +09:00
### Commands
2026-01-21 11:17:46 +09:00
2026-02-21 17:05:30 +09:00
Disable built-in commands via `disabled_commands` :
2026-01-21 11:17:46 +09:00
2026-02-21 04:07:06 +09:00
``` json
2026-02-21 17:05:30 +09:00
{ "disabled_commands" : [ "init-deep" , "start-work" ] }
2026-02-21 04:07:06 +09:00
```
2026-01-21 11:17:46 +09:00
2026-03-06 20:50:11 +09:00
Available commands: `init-deep` , `ralph-loop` , `ulw-loop` , `cancel-ralph` , `refactor` , `start-work` , `stop-continuation` , `handoff`
2026-01-21 11:17:46 +09:00
2026-02-21 04:07:06 +09:00
### Browser Automation
2026-01-21 11:17:46 +09:00
2026-03-06 20:50:11 +09:00
| Provider | Interface | Installation |
| ---------------------- | --------- | --------------------------------------------------- |
| `playwright` (default) | MCP tools | Auto-installed via npx |
| `agent-browser` | Bash CLI | `bun add -g agent-browser && agent-browser install` |
2026-02-21 04:07:06 +09:00
2026-02-21 17:05:30 +09:00
Switch provider:
2026-02-21 04:07:06 +09:00
``` json
2026-02-21 17:05:30 +09:00
{ "browser_automation_engine" : { "provider" : "agent-browser" } }
2026-02-21 04:07:06 +09:00
```
2026-01-21 11:17:46 +09:00
2026-02-21 17:23:28 +09:00
### Tmux Integration
2026-01-21 11:17:46 +09:00
2026-02-21 17:05:30 +09:00
Run background subagents in separate tmux panes. Requires running inside tmux with `opencode --port <port>` .
2026-01-21 11:17:46 +09:00
``` json
{
2026-02-21 04:07:06 +09:00
"tmux" : {
"enabled" : true ,
"layout" : "main-vertical" ,
"main_pane_size" : 60 ,
"main_pane_min_width" : 120 ,
"agent_pane_min_width" : 40
2026-01-21 11:17:46 +09:00
}
}
```
2026-03-06 20:50:11 +09:00
| Option | Default | Description |
| ---------------------- | --------------- | ----------------------------------------------------------------------------------- |
| `enabled` | `false` | Enable tmux pane spawning |
| `layout` | `main-vertical` | `main-vertical` / `main-horizontal` / `tiled` / `even-horizontal` / `even-vertical` |
| `main_pane_size` | `60` | Main pane % (20– 80) |
| `main_pane_min_width` | `120` | Min main pane columns |
| `agent_pane_min_width` | `40` | Min agent pane columns |
2026-02-21 04:07:06 +09:00
### Git Master
2026-02-21 17:23:28 +09:00
Configure git commit behavior:
2026-01-29 06:00:32 +05:30
``` json
2026-02-21 17:05:30 +09:00
{ "git_master" : { "commit_footer" : true , "include_co_authored_by" : true } }
2026-01-29 06:00:32 +05:30
```
2026-02-21 04:07:06 +09:00
### Comment Checker
2026-01-29 06:00:32 +05:30
2026-02-21 17:23:28 +09:00
Customize the comment quality checker:
2026-01-29 06:00:32 +05:30
``` json
2026-03-06 20:50:11 +09:00
{
"comment_checker" : {
"custom_prompt" : "Your message. Use {{comments}} placeholder."
}
}
2026-01-29 06:00:32 +05:30
```
2026-02-21 04:07:06 +09:00
### Notification
2026-01-29 06:00:32 +05:30
2026-02-21 17:23:28 +09:00
Force-enable session notifications:
2026-01-29 06:00:32 +05:30
``` json
2026-02-21 17:05:30 +09:00
{ "notification" : { "force_enable" : true } }
2026-01-29 06:00:32 +05:30
```
2026-03-27 12:20:40 +09:00
`force_enable` (`false` ) - force session-notification even if external notification plugins are detected.
2026-01-29 06:00:32 +05:30
2026-02-21 04:07:06 +09:00
### MCPs
2026-01-19 14:51:26 +09:00
2026-02-21 17:05:30 +09:00
Built-in MCPs (enabled by default): `websearch` (Exa AI), `context7` (library docs), `grep_app` (GitHub code search).
2026-01-19 14:51:26 +09:00
``` json
2026-02-21 17:05:30 +09:00
{ "disabled_mcps" : [ "websearch" , "context7" , "grep_app" ] }
2026-01-19 14:51:26 +09:00
```
2026-02-21 04:07:06 +09:00
### LSP
2026-01-19 14:51:26 +09:00
2026-02-21 17:23:28 +09:00
Configure Language Server Protocol integration:
2026-01-19 14:51:26 +09:00
``` json
{
"lsp" : {
"typescript-language-server" : {
"command" : [ "typescript-language-server" , "--stdio" ] ,
"extensions" : [ ".ts" , ".tsx" ] ,
2026-02-21 17:05:30 +09:00
"priority" : 10 ,
"env" : { "NODE_OPTIONS" : "--max-old-space-size=4096" } ,
2026-03-06 20:50:11 +09:00
"initialization" : {
"preferences" : { "includeInlayParameterNameHints" : "all" }
}
2026-01-19 14:51:26 +09:00
} ,
2026-02-21 17:05:30 +09:00
"pylsp" : { "disabled" : true }
2026-01-19 14:51:26 +09:00
}
}
```
2026-03-06 20:50:11 +09:00
| Option | Type | Description |
| ---------------- | ------- | ------------------------------------ |
| `command` | array | Command to start LSP server |
| `extensions` | array | File extensions (e.g. `[".ts"]` ) |
| `priority` | number | Priority when multiple servers match |
| `env` | object | Environment variables |
| `initialization` | object | Init options passed to server |
| `disabled` | boolean | Disable this server |
2026-01-29 06:00:32 +05:30
2026-02-21 17:23:28 +09:00
---
## Advanced
### Runtime Fallback
Auto-switches to backup models on API errors.
2026-02-22 01:45:32 +09:00
**Simple configuration ** (enable/disable with defaults):
2026-03-06 20:50:11 +09:00
2026-02-22 01:45:32 +09:00
``` json
{ "runtime_fallback" : true }
{ "runtime_fallback" : false }
```
**Advanced configuration ** (full control):
2026-03-06 20:50:11 +09:00
2026-02-21 17:23:28 +09:00
``` json
{
"runtime_fallback" : {
"enabled" : true ,
"retry_on_errors" : [ 400 , 429 , 503 , 529 ] ,
"max_fallback_attempts" : 3 ,
"cooldown_seconds" : 60 ,
"timeout_seconds" : 30 ,
"notify_on_fallback" : true
}
}
```
2026-03-06 20:50:11 +09:00
| Option | Default | Description |
| ----------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `enabled` | `false` | Enable runtime fallback |
| `retry_on_errors` | `[400,429,503,529]` | HTTP codes that trigger fallback. Also handles classified provider key errors. |
| `max_fallback_attempts` | `3` | Max fallback attempts per session (1– 20) |
| `cooldown_seconds` | `60` | Seconds before retrying a failed model |
| `timeout_seconds` | `30` | Seconds before forcing next fallback. **Set to `0` to disable timeout-based escalation and provider retry message detection. ** |
| `notify_on_fallback` | `true` | Toast notification on model switch |
2026-02-21 17:23:28 +09:00
Define `fallback_models` per agent or category:
``` json
{
"agents" : {
"sisyphus" : {
2026-04-17 14:52:19 +09:00
"model" : "anthropic/claude-opus-4-7" ,
2026-03-26 18:46:19 +01:00
"fallback_models" : [
"openai/gpt-5.4" ,
{
"model" : "google/gemini-3.1-pro" ,
"variant" : "high"
}
]
2026-02-21 17:23:28 +09:00
}
}
}
```
2026-03-26 18:46:19 +01:00
`fallback_models` also supports object-style entries so you can attach settings to a specific fallback model:
``` json
{
"agents" : {
"sisyphus" : {
2026-04-17 14:52:19 +09:00
"model" : "anthropic/claude-opus-4-7" ,
2026-03-26 18:46:19 +01:00
"fallback_models" : [
"openai/gpt-5.4" ,
{
"model" : "anthropic/claude-sonnet-4-6" ,
"variant" : "high" ,
"thinking" : { "type" : "enabled" , "budgetTokens" : 12000 }
} ,
{
"model" : "openai/gpt-5.3-codex" ,
"reasoningEffort" : "high" ,
"temperature" : 0.2 ,
"top_p" : 0.95 ,
"maxTokens" : 8192
}
]
}
}
}
```
Mixed arrays are allowed, so string entries and object entries can appear together in the same fallback chain.
#### Object-style `fallback_models`
Object entries use the following shape:
| Field | Type | Description |
| ----- | ---- | ----------- |
| `model` | string | Fallback model ID. Provider prefix is optional when OmO can inherit the current/default provider. |
| `variant` | string | Explicit variant override for this fallback entry. |
| `reasoningEffort` | string | OpenAI reasoning effort override for this fallback entry. |
| `temperature` | number | Temperature applied if this fallback model becomes active. |
| `top_p` | number | Top-p applied if this fallback model becomes active. |
| `maxTokens` | number | Max response tokens applied if this fallback model becomes active. |
| `thinking` | object | Anthropic thinking config applied if this fallback model becomes active. |
Per-model settings are **fallback-only ** . They are promoted only when that specific fallback model is actually selected, so they do not override your primary model settings when the primary model resolves successfully.
`thinking` uses the same shape as the normal agent/category option:
| Field | Type | Description |
| ----- | ---- | ----------- |
| `type` | string | `enabled` or `disabled` |
| `budgetTokens` | number | Optional Anthropic thinking budget |
Object entries can also omit the provider prefix when OmO can infer it from the current/default provider. If you provide both inline variant syntax in `model` and an explicit `variant` field, the explicit `variant` field wins.
#### Full examples
**1. Simple string chain **
Use strings when you only need an ordered fallback chain:
``` json
{
"agents" : {
"atlas" : {
"model" : "anthropic/claude-sonnet-4-6" ,
"fallback_models" : [
"anthropic/claude-haiku-4-5" ,
"openai/gpt-5.4" ,
"google/gemini-3.1-pro"
]
}
}
}
```
**2. Same-provider shorthand **
If the primary model already establishes the provider, fallback entries can omit the prefix:
``` json
{
"agents" : {
"atlas" : {
"model" : "openai/gpt-5.4" ,
"fallback_models" : [
"gpt-5.4-mini" ,
{
"model" : "gpt-5.3-codex" ,
"reasoningEffort" : "medium" ,
"maxTokens" : 4096
}
]
}
}
}
```
In this example OmO treats `gpt-5.4-mini` and `gpt-5.3-codex` as OpenAI fallback entries because the current/default provider is already `openai` .
**3. Mixed cross-provider chain **
Mix string entries and object entries when only some fallback models need special settings:
``` json
{
"agents" : {
"sisyphus" : {
2026-04-17 14:52:19 +09:00
"model" : "anthropic/claude-opus-4-7" ,
2026-03-26 18:46:19 +01:00
"fallback_models" : [
"openai/gpt-5.4" ,
{
"model" : "anthropic/claude-sonnet-4-6" ,
"variant" : "high" ,
"thinking" : { "type" : "enabled" , "budgetTokens" : 12000 }
} ,
{
"model" : "google/gemini-3.1-pro" ,
"variant" : "high"
}
]
}
}
}
```
**4. Category-level fallback chain **
`fallback_models` works the same way under `categories` :
``` json
{
"categories" : {
"deep" : {
"model" : "openai/gpt-5.3-codex" ,
"fallback_models" : [
{
"model" : "openai/gpt-5.4" ,
"reasoningEffort" : "xhigh" ,
"maxTokens" : 12000
} ,
{
2026-04-17 14:52:19 +09:00
"model" : "anthropic/claude-opus-4-7" ,
2026-03-26 18:46:19 +01:00
"variant" : "max" ,
"temperature" : 0.2
} ,
"google/gemini-3.1-pro(high)"
]
}
}
}
```
**5. Full object entry with every supported field **
This shows every supported object-style parameter in one place:
``` json
{
"agents" : {
"oracle" : {
"model" : "openai/gpt-5.4" ,
"fallback_models" : [
{
"model" : "openai/gpt-5.3-codex(low)" ,
"variant" : "xhigh" ,
"reasoningEffort" : "high" ,
"temperature" : 0.3 ,
"top_p" : 0.9 ,
"maxTokens" : 8192 ,
"thinking" : {
"type" : "disabled"
}
}
]
}
}
}
```
In this example the explicit `"variant": "xhigh"` overrides the inline `(low)` suffix in `"model"` .
This final example is a **complete shape reference ** . In real configs, prefer provider-appropriate settings:
- use `reasoningEffort` for OpenAI reasoning models
- use `thinking` for Anthropic thinking-capable models
- use `variant` , `temperature` , `top_p` , and `maxTokens` only when that fallback model supports them
2026-03-27 12:59:36 +09:00
### Model Capabilities
OmO can refresh a local models.dev capability snapshot on startup. This cache is controlled by `model_capabilities` .
``` jsonc
{
"model_capabilities" : {
"enabled" : true ,
"auto_refresh_on_start" : true ,
"refresh_timeout_ms" : 5000 ,
"source_url" : "https://models.dev/api.json"
}
}
```
| Option | Default behavior | Description |
| ------ | ---------------- | ----------- |
| `enabled` | enabled unless explicitly set to `false` | Master switch for model capability refresh behavior |
| `auto_refresh_on_start` | refresh on startup unless explicitly set to `false` | Refresh the local models.dev cache during startup checks |
| `refresh_timeout_ms` | `5000` | Timeout for the startup refresh attempt |
| `source_url` | `https://models.dev/api.json` | Override the models.dev source URL |
Notes:
- Startup refresh runs through the auto-update checker hook.
- Manual refresh is available via `bunx oh-my-opencode refresh-model-capabilities` .
- Provider runtime metadata still takes priority when OmO resolves capabilities for compatibility checks.
2026-02-21 17:23:28 +09:00
### Hashline Edit
2026-03-02 15:20:02 +09:00
Replaces the built-in `Edit` tool with a hash-anchored version using `LINE#ID` references to prevent stale-line edits. Disabled by default.
2026-02-21 17:23:28 +09:00
``` json
2026-03-02 15:20:02 +09:00
{ "hashline_edit" : true }
2026-02-21 17:23:28 +09:00
```
2026-03-02 15:20:02 +09:00
When enabled, two companion hooks are active: `hashline-read-enhancer` (annotates Read output) and `hashline-edit-diff-enhancer` (shows diffs). Opt-in by setting `hashline_edit: true` . Disable the companion hooks individually via `disabled_hooks` if needed.
2026-02-21 17:23:28 +09:00
### Experimental
2026-01-19 14:51:26 +09:00
``` json
{
"experimental" : {
2026-02-21 17:05:30 +09:00
"truncate_all_tool_outputs" : false ,
"aggressive_truncation" : false ,
"auto_resume" : false ,
2026-02-20 02:31:18 +11:00
"disable_omo_env" : false ,
2026-03-28 15:24:18 +09:00
"task_system" : true ,
2026-01-29 06:00:32 +05:30
"dynamic_context_pruning" : {
"enabled" : false ,
"notification" : "detailed" ,
2026-02-21 17:05:30 +09:00
"turn_protection" : { "enabled" : true , "turns" : 3 } ,
2026-03-06 20:50:11 +09:00
"protected_tools" : [
"task" ,
"todowrite" ,
"todoread" ,
"lsp_rename" ,
"session_read" ,
"session_write" ,
"session_search"
] ,
2026-01-29 06:00:32 +05:30
"strategies" : {
2026-02-21 17:05:30 +09:00
"deduplication" : { "enabled" : true } ,
"supersede_writes" : { "enabled" : true , "aggressive" : false } ,
"purge_errors" : { "enabled" : true , "turns" : 5 }
2026-01-29 06:00:32 +05:30
}
}
}
}
```
2026-03-06 20:50:11 +09:00
| Option | Default | Description |
| ---------------------------------------- | ---------- | ------------------------------------------------------------------------------------ |
| `truncate_all_tool_outputs` | `false` | Truncate all tool outputs (not just whitelisted) |
| `aggressive_truncation` | `false` | Aggressively truncate when token limit exceeded |
| `auto_resume` | `false` | Auto-resume after thinking block recovery |
| `disable_omo_env` | `false` | Disable auto-injected `<omo-env>` block (date/time/locale). Improves cache hit rate. |
2026-04-03 18:32:12 +09:00
| `task_system` | `false` | Enable Sisyphus task system |
2026-03-06 20:50:11 +09:00
| `dynamic_context_pruning.enabled` | `false` | Auto-prune old tool outputs to manage context window |
| `dynamic_context_pruning.notification` | `detailed` | Pruning notifications: `off` / `minimal` / `detailed` |
| `turn_protection.turns` | `3` | Recent turns protected from pruning (1– 10) |
| `strategies.deduplication` | `true` | Remove duplicate tool calls |
| `strategies.supersede_writes` | `true` | Prune write inputs when file later read |
| `strategies.supersede_writes.aggressive` | `false` | Prune any write if ANY subsequent read exists |
| `strategies.purge_errors.turns` | `5` | Turns before pruning errored tool inputs |
2026-01-19 14:51:26 +09:00
2026-02-21 17:23:28 +09:00
---
## Reference
### Environment Variables
2026-01-19 14:51:26 +09:00
2026-03-06 20:50:11 +09:00
| Variable | Description |
| --------------------- | ----------------------------------------------------------------- |
2026-02-21 17:05:30 +09:00
| `OPENCODE_CONFIG_DIR` | Override OpenCode config directory (useful for profile isolation) |
2026-04-11 14:14:45 +09:00
| `OMO_SEND_ANONYMOUS_TELEMETRY` | Set to `0` , `false` , or `no` to disable anonymous telemetry |
| `OMO_DISABLE_POSTHOG` | Legacy telemetry opt-out flag. Set to `1` or `true` to disable PostHog |
| `POSTHOG_API_KEY` | Optional override for the built-in PostHog project API key |
| `POSTHOG_HOST` | Override the PostHog ingestion host. Defaults to `https://us.i.posthog.com` |
2026-02-21 04:07:06 +09:00
2026-02-21 17:23:28 +09:00
### Provider-Specific
2026-02-21 04:07:06 +09:00
2026-02-21 17:23:28 +09:00
#### Google Auth
2026-02-21 04:07:06 +09:00
2026-02-21 17:05:30 +09:00
Install [`opencode-antigravity-auth` ](https://github.com/NoeFabris/opencode-antigravity-auth ) for Google Gemini. Provides multi-account load balancing, dual quota, and variant-based thinking.
2026-02-21 04:07:06 +09:00
2026-02-21 17:23:28 +09:00
#### Ollama
2026-02-21 04:07:06 +09:00
2026-02-21 17:05:30 +09:00
**Must ** disable streaming to avoid JSON parse errors:
2026-02-21 04:07:06 +09:00
``` json
{
"agents" : {
2026-02-21 17:05:30 +09:00
"explore" : { "model" : "ollama/qwen3-coder" , "stream" : false }
2026-02-21 04:07:06 +09:00
}
}
```
2026-02-21 17:05:30 +09:00
Common models: `ollama/qwen3-coder` , `ollama/ministral-3:14b` , `ollama/lfm2.5-thinking`
2026-02-21 04:07:06 +09:00
2026-02-21 17:05:30 +09:00
See [Ollama Troubleshooting ](../troubleshooting/ollama.md ) for `JSON Parse error: Unexpected EOF` issues.