Complete reference for oh-my-opencode-slim configuration and capabilities.
Presets are pre-configured agent model mappings for different provider combinations. The installer generates these automatically based on your available providers, and you can switch between them instantly.
The installer can discover the latest OpenCode free models by running:
opencode models --refresh --verbose
Selection rules:
opencode/* models are considered.designer remains on the external provider mapping.Useful flags:
--opencode-free=yes|no
--opencode-free-model=<id|auto>
Method 1: Edit Config File
Edit ~/.config/opencode/oh-my-opencode-slim.json (or .jsonc) and change the preset field:
{
"preset": "openai"
}
Method 2: Environment Variable
Set the environment variable before running OpenCode:
export OH_MY_OPENCODE_SLIM_PRESET=openai
opencode
The environment variable takes precedence over the config file.
Uses OpenAI models exclusively:
{
"preset": "openai",
"presets": {
"openai": {
"orchestrator": { "model": "openai/gpt-5.2-codex", "skills": ["*"], "mcps": ["websearch"] },
"oracle": { "model": "openai/gpt-5.2-codex", "variant": "high", "skills": [], "mcps": [] },
"librarian": { "model": "openai/gpt-5.1-codex-mini", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "grep_app"] },
"explorer": { "model": "openai/gpt-5.1-codex-mini", "variant": "low", "skills": [], "mcps": [] },
"designer": { "model": "openai/gpt-5.1-codex-mini", "variant": "medium", "skills": ["agent-browser"], "mcps": [] },
"fixer": { "model": "openai/gpt-5.1-codex-mini", "variant": "low", "skills": [], "mcps": [] }
}
}
}
Access Claude 4.5 and Gemini 3 models through Google's Antigravity infrastructure.
Installation:
bunx oh-my-opencode-slim install --antigravity=yes --opencode-free=yes --opencode-free-model=auto
Agent Mapping:
opencode/* support model while designer stays on external mappingAuthentication:
opencode auth login
# Select "google" provider
Available Models:
google/antigravity-gemini-3-flashgoogle/antigravity-gemini-3-progoogle/antigravity-claude-sonnet-4-5google/antigravity-claude-sonnet-4-5-thinkinggoogle/antigravity-claude-opus-4-5-thinkinggoogle/gemini-2.5-flash (Gemini CLI)google/gemini-2.5-pro (Gemini CLI)google/gemini-3-flash-preview (Gemini CLI)google/gemini-3-pro-preview (Gemini CLI)Mixed setup combining multiple providers:
{
"preset": "alvin",
"presets": {
"alvin": {
"orchestrator": { "model": "google/claude-opus-4-5-thinking", "skills": ["*"], "mcps": ["*"] },
"oracle": { "model": "openai/gpt-5.2-codex", "variant": "high", "skills": [], "mcps": [] },
"librarian": { "model": "google/gemini-3-flash", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "grep_app"] },
"explorer": { "model": "cerebras/zai-glm-4.7", "variant": "low", "skills": [], "mcps": [] },
"designer": { "model": "google/gemini-3-flash", "variant": "medium", "skills": ["agent-browser"], "mcps": [] },
"fixer": { "model": "cerebras/zai-glm-4.7", "variant": "low", "skills": [], "mcps": [] }
}
}
}
Antigravity Provider: For complete Antigravity setup guide, see Antigravity Setup
Skills are specialized capabilities provided by external agents and tools. Unlike MCPs which are servers, skills are prompt-based tool configurations installed via npx skills add during installation.
| Skill | Description | Assigned To |
|---|---|---|
simplify |
YAGNI code simplification expert | orchestrator |
agent-browser |
High-performance browser automation | designer |
| Skill | Description | Assigned To |
|---|---|---|
cartography |
Repository understanding and hierarchical codemap generation | orchestrator |
The Minimalist's sacred truth: every line of code is a liability.
simplify is a specialized skill for complexity analysis and YAGNI enforcement. It identifies unnecessary abstractions and suggests minimal implementations.
External browser automation for visual verification and testing.
agent-browser provides full high-performance browser automation capabilities. It allows agents to browse the web, interact with elements, and capture screenshots for visual state verification.
Automated repository mapping through hierarchical codemaps.
A dedicated guide (with screenshots) lives at: docs/cartography.md.
cartography empowers the Orchestrator to build and maintain a deep architectural understanding of any codebase. Instead of reading thousands of lines of code every time, agents refer to hierarchical codemap.md files that describe the why and how of each directory.
How to use:
Just ask the Orchestrator to run cartography. It will automatically detect if it needs to initialize a new map or update an existing one.
Why it's useful:
Technical Details & Manual Control
The skill uses a background Python engine (cartographer.py) to manage state and detect changes.
How it works under the hood:
init to create .slim/cartography.json (hashes) and empty templates.Manual Commands:
# Initialize mapping manually
python3 ~/.config/opencode/skills/cartography/scripts/cartographer.py init \
--root . \
--include "src/**/*.ts" \
--exclude "**/*.test.ts"
# Check for changes since last map
python3 ~/.config/opencode/skills/cartography/scripts/cartographer.py changes --root .
# Sync hashes after manual map updates
python3 ~/.config/opencode/skills/cartography/scripts/cartographer.py update --root .
You can customize which skills each agent is allowed to use in ~/.config/opencode/oh-my-opencode-slim.json (or .jsonc).
Syntax:
| Syntax | Description | Example |
|---|---|---|
"*" |
All installed skills | ["*"] |
"!item" |
Exclude specific skill | ["*", "!agent-browser"] |
| Explicit list | Only listed skills | ["simplify"] |
"!*" |
Deny all skills | ["!*"] |
Rules:
* expands to all available skills!item excludes specific skills["a", "!a"]) → deny wins (principle of least privilege)[] → no skills allowedExample Configuration:
{
"presets": {
"my-preset": {
"orchestrator": {
"skills": ["*", "!agent-browser"]
},
"designer": {
"skills": ["agent-browser", "simplify"]
}
}
}
}
Built-in Model Context Protocol servers (enabled by default):
| MCP | Purpose | URL |
|---|---|---|
websearch |
Real-time web search via Exa AI | https://mcp.exa.ai/mcp |
context7 |
Official library documentation | https://mcp.context7.com/mcp |
grep_app |
GitHub code search via grep.app | https://mcp.grep.app |
Control which agents can access which MCP servers using per-agent allowlists:
| Agent | Default MCPs |
|---|---|
orchestrator |
websearch |
designer |
none |
oracle |
none |
librarian |
websearch, context7, grep_app |
explorer |
none |
fixer |
none |
You can configure MCP access in your plugin configuration file: ~/.config/opencode/oh-my-opencode-slim.json (or .jsonc).
Per-Agent Permissions
Control which agents can access which MCP servers using the mcps array in your preset. The syntax is the same as for skills:
| Syntax | Description | Example |
|---|---|---|
"*" |
All MCPs | ["*"] |
"!item" |
Exclude specific MCP | ["*", "!context7"] |
| Explicit list | Only listed MCPs | ["websearch", "context7"] |
"!*" |
Deny all MCPs | ["!*"] |
Rules:
* expands to all available MCPs!item excludes specific MCPs["a", "!a"]) → deny wins[] → no MCPs allowedExample Configuration:
{
"presets": {
"my-preset": {
"orchestrator": {
"mcps": ["websearch"]
},
"librarian": {
"mcps": ["websearch", "context7", "grep_app"]
},
"oracle": {
"mcps": ["*", "!websearch"]
}
}
}
}
Global Disabling
You can disable specific MCP servers globally by adding them to the disabled_mcps array at the root of your config object.
⚠️ Temporary workaround: Start OpenCode with
--portto enable tmux integration. The port must match theOPENCODE_PORTenvironment variable (default: 4096). This is required until the upstream issue is resolved. opencode#9099.
Watch your agents work in real-time. When the Orchestrator launches sub-agents or initiates background tasks, new tmux panes automatically spawn showing each agent's live progress. No more waiting in the dark.
oh-my-opencode-slim.json (or .jsonc): {
"tmux": {
"enabled": true,
"layout": "main-vertical",
"main_pane_size": 60
}
}
bash
tmux
opencode --port 4096
| Layout | Description |
|---|---|
main-vertical |
Your session on the left (60%), agents stacked on the right |
main-horizontal |
Your session on top (60%), agents stacked below |
tiled |
All panes in equal-sized grid |
even-horizontal |
All panes side by side |
even-vertical |
All panes stacked vertically |
Detailed Guide: For complete tmux integration documentation, troubleshooting, and advanced usage, see Tmux Integration
The plugin provides tools to manage asynchronous work:
| Tool | Description |
|---|---|
background_task |
Launch an agent in a new session (sync=true blocks, sync=false runs in background) |
background_output |
Fetch the result of a background task by ID |
background_cancel |
Abort running tasks |
Language Server Protocol integration for code intelligence:
| Tool | Description |
|---|---|
lsp_goto_definition |
Jump to symbol definition |
lsp_find_references |
Find all usages of a symbol across the workspace |
lsp_diagnostics |
Get errors/warnings from the language server |
lsp_rename |
Rename a symbol across all files |
Built-in LSP Servers: OpenCode includes pre-configured LSP servers for 30+ languages (TypeScript, Python, Rust, Go, etc.). See the official documentation for the full list and requirements.
Fast code search and refactoring:
| Tool | Description |
|---|---|
grep |
Fast content search using ripgrep |
ast_grep_search |
AST-aware code pattern matching (25 languages) |
ast_grep_replace |
AST-aware code refactoring with dry-run support |
OpenCode automatically formats files after they're written or edited using language-specific formatters.
Built-in Formatters: Includes support for Prettier, Biome, gofmt, rustfmt, ruff, and 20+ others. See the official documentation for the complete list.
| File | Purpose |
|---|---|
~/.config/opencode/opencode.json |
OpenCode core settings |
~/.config/opencode/oh-my-opencode-slim.json or .jsonc |
Plugin settings (agents, tmux, MCPs) |
.opencode/oh-my-opencode-slim.json or .jsonc |
Project-local plugin overrides (optional) |
💡 JSONC Support: Configuration files support JSONC format (JSON with Comments). Use
.jsoncextension to enable comments and trailing commas. If both.jsoncand.jsonexist,.jsonctakes precedence.
You can customize agent prompts by creating markdown files in ~/.config/opencode/oh-my-opencode-slim/:
| File | Purpose |
|---|---|
{agent}.md |
Replaces the default prompt entirely |
{agent}_append.md |
Appends to the default prompt |
Example:
~/.config/opencode/oh-my-opencode-slim/
├── orchestrator.md # Custom orchestrator prompt
├── orchestrator_append.md # Append to default orchestrator prompt
├── explorer.md
├── explorer_append.md
└── ...
Usage:
{agent}.md to completely replace an agent's default prompt{agent}_append.md to add custom instructions to the default promptThis allows you to fine-tune agent behavior without modifying the source code.
The plugin supports JSONC format for configuration files, allowing you to:
//)/* */)File Priority:
oh-my-opencode-slim.jsonc (preferred if exists)oh-my-opencode-slim.json (fallback)Example JSONC Configuration:
{
// Use preset for development
"preset": "dev",
/* Presets definition - customize agent models here */
"presets": {
"dev": {
// Fast models for quick iteration
"oracle": { "model": "google/gemini-3-flash" },
"explorer": { "model": "google/gemini-3-flash" },
},
},
"tmux": {
"enabled": true, // Enable for monitoring
"layout": "main-vertical",
},
}
oh-my-opencode-slim.json or oh-my-opencode-slim.jsonc)The installer generates this file based on your providers. You can manually customize it to mix and match models. See the Presets section for detailed configuration options.
| Option | Type | Default | Description |
|---|---|---|---|
preset |
string | - | Name of the preset to use (e.g., "openai", "antigravity") |
presets |
object | - | Named preset configurations containing agent mappings |
presets.<name>.<agent>.model |
string | - | Model ID for the agent (e.g., "google/claude-opus-4-5-thinking") |
presets.<name>.<agent>.temperature |
number | - | Temperature setting (0-2) for the agent |
presets.<name>.<agent>.variant |
string | - | Agent variant for reasoning effort (e.g., "low", "medium", "high") |
presets.<name>.<agent>.skills |
string[] | - | Array of skill names the agent can use ("*" for all, "!item" to exclude) |
presets.<name>.<agent>.mcps |
string[] | - | Array of MCP names the agent can use ("*" for all, "!item" to exclude) |
tmux.enabled |
boolean | false |
Enable tmux pane spawning for sub-agents |
tmux.layout |
string | "main-vertical" |
Layout preset: main-vertical, main-horizontal, tiled, even-horizontal, even-vertical |
tmux.main_pane_size |
number | 60 |
Main pane size as percentage (20-80) |
disabled_mcps |
string[] | [] |
MCP server IDs to disable globally (e.g., "websearch") |
Note: Agent configuration should be defined within
presets. The root-levelagentsfield is deprecated.