|
|
@@ -14,48 +14,51 @@
|
|
|
|
|
|
---
|
|
|
|
|
|
-## ⚡ Quick Navigation
|
|
|
+## Table of Contents
|
|
|
|
|
|
-- [🚀 **Installation**](#installation)
|
|
|
+- [📦 Installation](#-installation)
|
|
|
- [For Humans](#for-humans)
|
|
|
- [For LLM Agents](#for-llm-agents)
|
|
|
-- [🏛️ **Meet the Pantheon**](#meet-the-pantheon)
|
|
|
- - [Orchestrator](#orchestrator-the-embodiment-of-order)
|
|
|
- - [Explorer](#explorer-the-eternal-wanderer)
|
|
|
- - [Oracle](#oracle-the-guardian-of-paths)
|
|
|
- - [Librarian](#librarian-the-weaver-of-knowledge)
|
|
|
- - [Designer](#designer-the-guardian-of-aesthetics)
|
|
|
- - [Fixer](#fixer-the-last-builder)
|
|
|
-- [🧩 **Skills**](#-skills)
|
|
|
+- [🏛️ Meet the Pantheon](#️-meet-the-pantheon)
|
|
|
+ - [Orchestrator: The Embodiment Of Order](#orchestrator-the-embodiment-of-order)
|
|
|
+ - [Explorer: The Eternal Wanderer](#explorer-the-eternal-wanderer)
|
|
|
+ - [Oracle: The Guardian of Paths](#oracle-the-guardian-of-paths)
|
|
|
+ - [Librarian: The Weaver of Knowledge](#librarian-the-weaver-of-knowledge)
|
|
|
+ - [Designer: The Guardian of Aesthetics](#designer-the-guardian-of-aesthetics)
|
|
|
+ - [Fixer: The Last Builder](#fixer-the-last-builder)
|
|
|
+- [🎚️ Presets](#️-presets)
|
|
|
+ - [Switching Presets](#switching-presets)
|
|
|
+ - [OpenAI Preset](#openai-preset)
|
|
|
+ - [Antigravity via CLIProxy Preset](#antigravity-via-cliproxy-preset)
|
|
|
+ - [Author's Preset](#authors-preset)
|
|
|
+ - [Creating Custom Presets](#creating-custom-presets)
|
|
|
+ - [Option Reference](#option-reference)
|
|
|
+- [🧩 Skills](#-skills)
|
|
|
- [Available Skills](#available-skills)
|
|
|
- [Default Skill Assignments](#default-skill-assignments)
|
|
|
- - [Skill Syntax](#skill-syntax)
|
|
|
-- [Simplify](#simplify)
|
|
|
+ - [Configuration & Syntax](#configuration--syntax)
|
|
|
+ - [Simplify](#simplify)
|
|
|
- [Playwright Integration](#playwright-integration)
|
|
|
- - [Customizing Agent Skills](#customizing-agent-skills)
|
|
|
-- [🔌 **MCP Servers**](#mcp-servers)
|
|
|
+- [🔌 MCP Servers](#-mcp-servers)
|
|
|
- [MCP Permissions](#mcp-permissions)
|
|
|
- - [MCP Syntax](#mcp-syntax)
|
|
|
- - [Disabling MCPs](#disabling-mcps)
|
|
|
- - [Customizing MCP Permissions](#customizing-mcp-permissions)
|
|
|
-- [🛠️ **Tools & Capabilities**](#tools--capabilities)
|
|
|
+ - [Configuration & Syntax](#configuration--syntax-1)
|
|
|
+- [🛠️ Tools & Capabilities](#️-tools--capabilities)
|
|
|
- [Tmux Integration](#tmux-integration)
|
|
|
- - [Quota Tool](#quota-tool)
|
|
|
- [Background Tasks](#background-tasks)
|
|
|
- [LSP Tools](#lsp-tools)
|
|
|
- [Code Search Tools](#code-search-tools)
|
|
|
- [Formatters](#formatters)
|
|
|
-- [⚙️ **Configuration**](#configuration)
|
|
|
+- [⚙️ Configuration](#️-configuration)
|
|
|
- [Files You Edit](#files-you-edit)
|
|
|
- [Prompt Overriding](#prompt-overriding)
|
|
|
- - [Plugin Config](#plugin-config-oh-my-opencode-slimjson)
|
|
|
- - [Presets](#presets)
|
|
|
- - [Option Reference](#option-reference)
|
|
|
-- [🗑️ **Uninstallation**](#uninstallation)
|
|
|
+ - [Plugin Config (oh-my-opencode-slim.json)](#plugin-config-oh-my-opencode-slimjson)
|
|
|
+- [🗑️ Uninstallation](#️-uninstallation)
|
|
|
+- [🙏 Credits](#-credits)
|
|
|
+- [📄 License](#-license)
|
|
|
|
|
|
---
|
|
|
|
|
|
-## Installation
|
|
|
+## 📦 Installation
|
|
|
|
|
|
### For Humans
|
|
|
|
|
|
@@ -117,11 +120,11 @@ If not installed, direct the user to https://opencode.ai/docs first.
|
|
|
|
|
|
Ask these questions **one at a time**, waiting for responses:
|
|
|
|
|
|
-1. "Do you have an **Antigravity** subscription?" *(Provides Claude + Gemini via `google/` prefix)*
|
|
|
+1. "Do you have an **Antigravity** subscription (via cliproxy)?" *(Provides Claude + Gemini via `cliproxy/` prefix)*
|
|
|
2. "Do you have access to **OpenAI** API?" *(Enables `openai/` models)*
|
|
|
|
|
|
Help the user understand the tradeoffs:
|
|
|
-- Antigravity is the recommended path for Claude + Gemini routing.
|
|
|
+- Antigravity via cliproxy provides Claude + Gemini routing.
|
|
|
- OpenAI is optional; it enables `openai/` models.
|
|
|
- If the user has **no providers**, the plugin still works using **OpenCode Zen** free models. They can switch to paid providers later by editing `~/.config/opencode/oh-my-opencode-slim.json`.
|
|
|
|
|
|
@@ -149,8 +152,7 @@ bunx oh-my-opencode-slim install --no-tui --antigravity=no --openai=no --tmux=no
|
|
|
|
|
|
The installer automatically:
|
|
|
- Adds the plugin to `~/.config/opencode/opencode.json`
|
|
|
-- Adds `opencode-antigravity-auth` plugin (if Antigravity enabled)
|
|
|
-- Configures Google provider with model definitions
|
|
|
+- Configures cliproxy provider for Antigravity models
|
|
|
- Generates agent model mappings in `~/.config/opencode/oh-my-opencode-slim.json`
|
|
|
|
|
|
**Crucial Advice for the User:**
|
|
|
@@ -160,15 +162,32 @@ The installer automatically:
|
|
|
|
|
|
---
|
|
|
|
|
|
-#### Step 4: Authentication
|
|
|
+#### Step 4: Install and Configure Cliproxy (if using Antigravity)
|
|
|
|
|
|
-After installation, guide the user:
|
|
|
+If the user selected Antigravity, guide them to install cliproxy:
|
|
|
|
|
|
-**For Antigravity/OpenAI:**
|
|
|
+**macOS:**
|
|
|
+```bash
|
|
|
+brew install cliproxyapi
|
|
|
+brew services start cliproxyapi
|
|
|
+```
|
|
|
+
|
|
|
+**Linux:**
|
|
|
+```bash
|
|
|
+curl -fsSL https://raw.githubusercontent.com/brokechubb/cliproxyapi-installer/refs/heads/master/cliproxyapi-installer | bash
|
|
|
+```
|
|
|
+
|
|
|
+**Authenticate with Antigravity:**
|
|
|
+```bash
|
|
|
+./cli-proxy-api --antigravity-login
|
|
|
+# Add --no-browser to print login URL instead of opening browser
|
|
|
+# The local OAuth callback uses port 51121
|
|
|
+```
|
|
|
+
|
|
|
+**For OpenAI (if enabled):**
|
|
|
```bash
|
|
|
opencode auth login
|
|
|
-# Select: Google → OAuth with Google (Antigravity)
|
|
|
-# Repeat for all other providers
|
|
|
+# Select your provider and complete OAuth flow
|
|
|
```
|
|
|
|
|
|
---
|
|
|
@@ -187,17 +206,19 @@ Then manually create the config files at:
|
|
|
|
|
|
---
|
|
|
|
|
|
-## Meet the Pantheon
|
|
|
+## 🏛️ Meet the Pantheon
|
|
|
|
|
|
### Orchestrator: The Embodiment Of Order
|
|
|
|
|
|
<a href="src/agents/orchestrator.ts"><img src="img/orchestrator.png" alt="Orchestrator" align="right" width="240"></a>
|
|
|
|
|
|
-> **The Orchestrator** was born when the first codebase collapsed under its own complexity. Neither god nor mortal would claim responsibility - so The Orchestrator emerged from the void, forging order from chaos. They don't merely command armies; they fight alongside them. Every line of code passes through their hands before they decide which lesser deity deserves a piece of the puzzle.
|
|
|
+> **The Orchestrator** was born when the first codebase collapsed under its own complexity. Neither god nor mortal would claim responsibility - so The Orchestrator emerged from the void, forging order from chaos. It determines the optimal path to any goal, balancing speed, quality, and cost. It guides the team, summoning the right specialist for each task and delegating to achieve the best possible outcome.
|
|
|
|
|
|
-**Role:** `Supreme executor, delegator, and overseer`
|
|
|
+**Role:** `Master delegator and strategic coordinator`
|
|
|
**Model:** `google/claude-opus-4-5-thinking`
|
|
|
-**Prompt:** [src/agents/orchestrator.ts](src/agents/orchestrator.ts)
|
|
|
+**Prompt:** [src/agents/orchestrator.ts](src/agents/orchestrator.ts)
|
|
|
+**Skills:** `*` (all skills)
|
|
|
+**MCPs:** `websearch`
|
|
|
|
|
|
Write and execute code, orchestrate multi-agent workflows, parse the unspoken from the spoken, summon specialists mid-battle. *Shape reality directly - and assign realms to others when the universe grows too vast.*
|
|
|
|
|
|
@@ -211,7 +232,9 @@ Write and execute code, orchestrate multi-agent workflows, parse the unspoken fr
|
|
|
|
|
|
**Role:** `Codebase reconnaissance`
|
|
|
**Model:** `google/gemini-3-flash`
|
|
|
-**Prompt:** [src/agents/explorer.ts](src/agents/explorer.ts)
|
|
|
+**Prompt:** [src/agents/explorer.ts](src/agents/explorer.ts)
|
|
|
+**Skills:** none
|
|
|
+**MCPs:** none
|
|
|
|
|
|
Regex search, AST pattern matching, file discovery, parallel exploration. *Read-only: they chart the territory; others conquer it.*
|
|
|
|
|
|
@@ -225,7 +248,9 @@ Regex search, AST pattern matching, file discovery, parallel exploration. *Read-
|
|
|
|
|
|
**Role:** `Strategic advisor and debugger of last resort`
|
|
|
**Model:** `openai/gpt-5.2-codex`
|
|
|
-**Prompt:** [src/agents/oracle.ts](src/agents/oracle.ts)
|
|
|
+**Prompt:** [src/agents/oracle.ts](src/agents/oracle.ts)
|
|
|
+**Skills:** none
|
|
|
+**MCPs:** none
|
|
|
|
|
|
Root cause analysis, architecture review, debugging guidance, tradeoff analysis. *Read-only: Oracles advise; they don't intervene.*
|
|
|
|
|
|
@@ -239,7 +264,9 @@ Root cause analysis, architecture review, debugging guidance, tradeoff analysis.
|
|
|
|
|
|
**Role:** `External knowledge retrieval`
|
|
|
**Model:** `google/gemini-3-flash`
|
|
|
-**Prompt:** [src/agents/librarian.ts](src/agents/librarian.ts)
|
|
|
+**Prompt:** [src/agents/librarian.ts](src/agents/librarian.ts)
|
|
|
+**Skills:** none
|
|
|
+**MCPs:** `websearch`, `context7`, `grep_app`
|
|
|
|
|
|
Documentation lookup, GitHub code search, library research, best practice retrieval. *Read-only: they fetch wisdom; implementation is for others.*
|
|
|
|
|
|
@@ -253,7 +280,9 @@ Documentation lookup, GitHub code search, library research, best practice retrie
|
|
|
|
|
|
**Role:** `UI/UX implementation and visual excellence`
|
|
|
**Model:** `google/gemini-3-flash`
|
|
|
-**Prompt:** [src/agents/designer.ts](src/agents/designer.ts)
|
|
|
+**Prompt:** [src/agents/designer.ts](src/agents/designer.ts)
|
|
|
+**Skills:** `playwright`
|
|
|
+**MCPs:** none
|
|
|
|
|
|
Modern responsive design, CSS/Tailwind mastery, micro-animations, component architecture. *Visual excellence over code perfection - beauty is the priority.*
|
|
|
|
|
|
@@ -267,12 +296,181 @@ Modern responsive design, CSS/Tailwind mastery, micro-animations, component arch
|
|
|
|
|
|
**Role:** `Fast implementation specialist`
|
|
|
**Model:** `google/gemini-3-flash`
|
|
|
-**Prompt:** [src/agents/fixer.ts](src/agents/fixer.ts)
|
|
|
+**Prompt:** [src/agents/fixer.ts](src/agents/fixer.ts)
|
|
|
+**Skills:** none
|
|
|
+**MCPs:** none
|
|
|
|
|
|
Code implementation, refactoring, testing, verification. *Execute the plan - no research, no delegation, no planning.*
|
|
|
|
|
|
---
|
|
|
|
|
|
+## 🎚️ Presets
|
|
|
+
|
|
|
+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.
|
|
|
+
|
|
|
+### Switching Presets
|
|
|
+
|
|
|
+**Method 1: Edit Config File**
|
|
|
+
|
|
|
+Edit `~/.config/opencode/oh-my-opencode-slim.json` and change the `preset` field:
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "preset": "openai"
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+**Method 2: Environment Variable**
|
|
|
+
|
|
|
+Set the environment variable before running OpenCode:
|
|
|
+
|
|
|
+```bash
|
|
|
+export OH_MY_OPENCODE_SLIM_PRESET=openai
|
|
|
+opencode
|
|
|
+```
|
|
|
+
|
|
|
+The environment variable takes precedence over the config file.
|
|
|
+
|
|
|
+
|
|
|
+### OpenAI Preset
|
|
|
+
|
|
|
+Uses OpenAI models exclusively:
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "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": ["playwright"], "mcps": [] },
|
|
|
+ "fixer": { "model": "openai/gpt-5.1-codex-mini", "variant": "low", "skills": [], "mcps": [] }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### Antigravity via CLIProxy Preset
|
|
|
+
|
|
|
+Routes through Antigravity's CLIProxy for Claude + Gemini models:
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "preset": "cliproxy",
|
|
|
+ "presets": {
|
|
|
+ "cliproxy": {
|
|
|
+ "orchestrator": { "model": "cliproxy/gemini-claude-opus-4-5-thinking", "skills": ["*"], "mcps": ["websearch"] },
|
|
|
+ "oracle": { "model": "cliproxy/gemini-3-pro-preview", "variant": "high", "skills": [], "mcps": [] },
|
|
|
+ "librarian": { "model": "cliproxy/gemini-3-flash-preview", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "grep_app"] },
|
|
|
+ "explorer": { "model": "cliproxy/gemini-3-flash-preview", "variant": "low", "skills": [], "mcps": [] },
|
|
|
+ "designer": { "model": "cliproxy/gemini-3-flash-preview", "variant": "medium", "skills": ["playwright"], "mcps": [] },
|
|
|
+ "fixer": { "model": "cliproxy/gemini-3-flash-preview", "variant": "low", "skills": [], "mcps": [] }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+Requires provider configuration:
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "provider": {
|
|
|
+ "cliproxy": {
|
|
|
+ "npm": "@ai-sdk/openai-compatible",
|
|
|
+ "name": "CliProxy",
|
|
|
+ "options": {
|
|
|
+ "baseURL": "http://127.0.0.1:8317/v1",
|
|
|
+ "apiKey": "your-api-key-1"
|
|
|
+ },
|
|
|
+ "models": {
|
|
|
+ "gemini-3-pro-high": {
|
|
|
+ "name": "Gemini 3 Pro High",
|
|
|
+ "thinking": true,
|
|
|
+ "attachment": true,
|
|
|
+ "limit": { "context": 1048576, "output": 65535 },
|
|
|
+ "modalities": { "input": [ "text", "image", "pdf" ], "output": [ "text" ] }
|
|
|
+ },
|
|
|
+ "gemini-3-flash-preview": {
|
|
|
+ "name": "Gemini 3 Flash",
|
|
|
+ "attachment": true,
|
|
|
+ "limit": { "context": 1048576, "output": 65536 },
|
|
|
+ "modalities": { "input": [ "text", "image", "pdf" ], "output": [ "text" ] }
|
|
|
+ },
|
|
|
+ "gemini-claude-opus-4-5-thinking": {
|
|
|
+ "name": "Claude Opus 4.5 Thinking",
|
|
|
+ "attachment": true,
|
|
|
+ "limit": { "context": 200000, "output": 32000 },
|
|
|
+ "modalities": { "input": [ "text", "image", "pdf" ], "output": [ "text" ] }
|
|
|
+ },
|
|
|
+ "gemini-claude-sonnet-4-5-thinking": {
|
|
|
+ "name": "Claude Sonnet 4.5 Thinking",
|
|
|
+ "attachment": true,
|
|
|
+ "limit": { "context": 200000, "output": 32000 },
|
|
|
+ "modalities": { "input": [ "text", "image", "pdf" ], "output": [ "text" ] }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### Author's Preset
|
|
|
+
|
|
|
+Mixed setup combining multiple providers:
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "preset": "alvin",
|
|
|
+ "presets": {
|
|
|
+ "alvin": {
|
|
|
+ "orchestrator": { "model": "cliproxy/gemini-claude-opus-4-5-thinking", "skills": ["*"], "mcps": ["*"] },
|
|
|
+ "oracle": { "model": "openai/gpt-5.2-codex", "variant": "high", "skills": [], "mcps": [] },
|
|
|
+ "librarian": { "model": "cliproxy/gemini-3-flash-preview", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "grep_app"] },
|
|
|
+ "explorer": { "model": "cerebras/zai-glm-4.7", "variant": "low", "skills": [], "mcps": [] },
|
|
|
+ "designer": { "model": "cliproxy/gemini-3-flash-preview", "variant": "medium", "skills": ["playwright"], "mcps": [] },
|
|
|
+ "fixer": { "model": "cerebras/zai-glm-4.7", "variant": "low", "skills": [], "mcps": [] }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### Creating Custom Presets
|
|
|
+
|
|
|
+You can create your own presets by adding them to the `presets` object:
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "presets": {
|
|
|
+ "my-custom": {
|
|
|
+ "orchestrator": { "model": "google/claude-opus-4-5-thinking", "skills": ["*"], "mcps": ["websearch"] },
|
|
|
+ "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": "google/gemini-3-flash", "variant": "low", "skills": [], "mcps": [] },
|
|
|
+ "designer": { "model": "google/gemini-3-flash", "variant": "medium", "skills": ["playwright"], "mcps": [] },
|
|
|
+ "fixer": { "model": "google/gemini-3-flash", "variant": "low", "skills": [], "mcps": [] }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+Then set `preset: "my-custom"` to activate it.
|
|
|
+
|
|
|
+### Option Reference
|
|
|
+
|
|
|
+| Option | Type | Default | Description |
|
|
|
+|--------|------|---------|-------------|
|
|
|
+| `preset` | string | - | Name of the preset to use (e.g., `"openai"`, `"cliproxy"`) |
|
|
|
+| `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) |
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
## 🧩 Skills
|
|
|
|
|
|
Skills are specialized capabilities that agents can use. Each agent has a default set of skills, which you can override in the agent config.
|
|
|
@@ -469,18 +667,6 @@ You can disable specific MCP servers globally by adding them to the `disabled_mc
|
|
|
|
|
|
---
|
|
|
|
|
|
-### Quota Tool
|
|
|
-
|
|
|
-For Antigravity users. You can trigger this at any time by asking the agent to **"check my quota"** or **"show status."**
|
|
|
-
|
|
|
-<img src="img/quota.png" alt="Antigravity Quota" width="600">
|
|
|
-
|
|
|
-| Tool | Description |
|
|
|
-|------|-------------|
|
|
|
-| `antigravity_quota` | Check API quota for all Antigravity accounts (compact view with progress bars) |
|
|
|
-
|
|
|
----
|
|
|
-
|
|
|
### Background Tasks
|
|
|
|
|
|
The plugin provides tools to manage asynchronous work:
|
|
|
@@ -528,7 +714,7 @@ OpenCode automatically formats files after they're written or edited using langu
|
|
|
|
|
|
---
|
|
|
|
|
|
-## Configuration
|
|
|
+## ⚙️ Configuration
|
|
|
|
|
|
### Files You Edit
|
|
|
|
|
|
@@ -573,109 +759,12 @@ This allows you to fine-tune agent behavior without modifying the source code.
|
|
|
|
|
|
### Plugin Config (`oh-my-opencode-slim.json`)
|
|
|
|
|
|
-The installer generates this file based on your providers. You can manually customize it to mix and match models.
|
|
|
-
|
|
|
-### Presets
|
|
|
-
|
|
|
-The installer generates presets for different provider combinations. Switch between them by changing the `preset` field.
|
|
|
-
|
|
|
-<details open>
|
|
|
-<summary><b>Example: Antigravity + OpenAI (Recommended)</b></summary>
|
|
|
-
|
|
|
-```json
|
|
|
-{
|
|
|
- "preset": "antigravity-openai",
|
|
|
- "presets": {
|
|
|
- "antigravity": {
|
|
|
- "orchestrator": { "model": "google/claude-opus-4-5-thinking", "skills": ["*"], "mcps": ["websearch"] },
|
|
|
- "oracle": { "model": "google/claude-opus-4-5-thinking", "variant": "high", "skills": [], "mcps": [] },
|
|
|
- "librarian": { "model": "google/gemini-3-flash", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "grep_app"] },
|
|
|
- "explorer": { "model": "google/gemini-3-flash", "variant": "low", "skills": [], "mcps": [] },
|
|
|
- "designer": { "model": "google/gemini-3-flash", "variant": "medium", "skills": ["playwright"], "mcps": [] },
|
|
|
- "fixer": { "model": "google/gemini-3-flash", "variant": "low", "skills": [], "mcps": [] }
|
|
|
- },
|
|
|
- "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": ["playwright"], "mcps": [] },
|
|
|
- "fixer": { "model": "openai/gpt-5.1-codex-mini", "variant": "low", "skills": [], "mcps": [] }
|
|
|
- },
|
|
|
- "zen-free": {
|
|
|
- "orchestrator": { "model": "opencode/grok-code", "skills": ["*"], "mcps": ["websearch"] },
|
|
|
- "oracle": { "model": "opencode/grok-code", "variant": "high", "skills": [], "mcps": [] },
|
|
|
- "librarian": { "model": "opencode/grok-code", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "grep_app"] },
|
|
|
- "explorer": { "model": "opencode/grok-code", "variant": "low", "skills": [], "mcps": [] },
|
|
|
- "designer": { "model": "opencode/grok-code", "variant": "medium", "skills": ["playwright"], "mcps": [] },
|
|
|
- "fixer": { "model": "opencode/grok-code", "variant": "low", "skills": [], "mcps": [] }
|
|
|
- },
|
|
|
- "antigravity-openai": {
|
|
|
- "orchestrator": { "model": "google/claude-opus-4-5-thinking", "skills": ["*"], "mcps": ["websearch"] },
|
|
|
- "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": "google/gemini-3-flash", "variant": "low", "skills": [], "mcps": [] },
|
|
|
- "designer": { "model": "google/gemini-3-flash", "variant": "medium", "skills": ["playwright"], "mcps": [] },
|
|
|
- "fixer": { "model": "google/gemini-3-flash", "variant": "low", "skills": [], "mcps": [] }
|
|
|
- }
|
|
|
- },
|
|
|
- "tmux": {
|
|
|
- "enabled": true,
|
|
|
- "layout": "main-vertical",
|
|
|
- "main_pane_size": 60
|
|
|
- }
|
|
|
-}
|
|
|
-```
|
|
|
-</details>
|
|
|
-
|
|
|
-**Available Presets:**
|
|
|
-
|
|
|
-| Preset | Description |
|
|
|
-|--------|-------------|
|
|
|
-| `antigravity` | Google models (Claude Opus + Gemini Flash) |
|
|
|
-| `openai` | OpenAI models (GPT-5.2 + GPT-5.1-mini) |
|
|
|
-| `zen-free` | Free models (GLM-4.7 + Grok Code) |
|
|
|
-| `antigravity-openai` | Mixed: Antigravity for most agents, OpenAI for Oracle |
|
|
|
-
|
|
|
-#### Author's Preset
|
|
|
-
|
|
|
-The author's personal configuration using Cerebras for the Orchestrator:
|
|
|
-
|
|
|
-```json
|
|
|
-{
|
|
|
- "cerebras": {
|
|
|
- "orchestrator": { "model": "cerebras/zai-glm-4.7", "skills": ["*"], "mcps": ["websearch"] },
|
|
|
- "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": "google/gemini-3-flash", "variant": "low", "skills": [], "mcps": [] },
|
|
|
- "designer": { "model": "google/gemini-3-flash", "variant": "medium", "skills": ["playwright"], "mcps": [] },
|
|
|
- "fixer": { "model": "google/gemini-3-flash", "variant": "low", "skills": [], "mcps": [] }
|
|
|
- }
|
|
|
-}
|
|
|
-```
|
|
|
-
|
|
|
-**Environment Variable Override:**
|
|
|
-
|
|
|
-You can override the preset using an environment variable:
|
|
|
-
|
|
|
-```bash
|
|
|
-export OH_MY_OPENCODE_SLIM_PRESET=openai
|
|
|
-opencode
|
|
|
-```
|
|
|
-
|
|
|
-The environment variable takes precedence over the `preset` field in the config file.
|
|
|
+The installer generates this file based on your providers. You can manually customize it to mix and match models. See the [Presets](#️-presets) section for detailed configuration options.
|
|
|
|
|
|
#### Option Reference
|
|
|
|
|
|
| Option | Type | Default | Description |
|
|
|
|--------|------|---------|-------------|
|
|
|
-| `preset` | string | - | Name of the preset to use (e.g., `"antigravity"`, `"openai"`) |
|
|
|
-| `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) |
|
|
|
@@ -685,7 +774,7 @@ The environment variable takes precedence over the `preset` field in the config
|
|
|
|
|
|
---
|
|
|
|
|
|
-## Uninstallation
|
|
|
+## 🗑️ Uninstallation
|
|
|
|
|
|
1. **Remove the plugin from your OpenCode config**:
|
|
|
|
|
|
@@ -699,12 +788,12 @@ The environment variable takes precedence over the `preset` field in the config
|
|
|
|
|
|
---
|
|
|
|
|
|
-## Credits
|
|
|
+## 🙏 Credits
|
|
|
|
|
|
This is a slimmed-down fork of [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) by [@code-yeongyu](https://github.com/code-yeongyu).
|
|
|
|
|
|
---
|
|
|
|
|
|
-## License
|
|
|
+## 📄 License
|
|
|
|
|
|
MIT
|