Guide — Understanding oh-my-openagent & omo-kit

This guide explains what oh-my-openagent does, why you need it, and how omo-kit generates the configuration for you. Jump-start your setup with sensible defaults — then tweak if needed.

What is oh-my-openagent?

The platform

ToolWhat it is
OpenCodeThe base terminal AI coding agent. A native terminal UI for AI-powered coding with 75+ LLM providers.
oMo (Oh My OpenAgent)A plugin that transforms OpenCode's single agent into a coordinated team of 10+ specialized agents with intelligent model routing. Previously called oh-my-opencode.
OpenCode GoA $10/month subscription providing reliable access to open coding models: DeepSeek V4, GLM-5.1, MiniMax M2.7, Qwen3.6. Uses opencode-go/ prefix.
OpenCode ZenPay-as-you-go model provider. Curated, benchmarked models for coding agents. Uses opencode/ (paid) and zen/ (free) prefixes.

In short: OpenCode is the car. oMo is the racing team. OpenCode Go and Zen are different fuel stations.

Why model routing matters

Without oMo, OpenCode uses one model for everything — your code search uses the same expensive reasoning model as your architecture decisions. This is like sending a junior dev to design your database, or a senior architect to fix a typo.

With oMo, each agent role gets a model matched to its complexity — the orchestrator uses a reasoning model, code search uses a fast cheap model, and trivial fixes use the free tier.

What omo-kit generates

Running bunx omo-kit init creates four files in your project directory:

FilePurpose
oh-my-openagent.jsonAgent routing table. Maps 10 agent roles and 8 task categories to specific models with thinking budgets and fallback chains.
opencode.jsonProvider configuration. Tells OpenCode where oh-my-openagent.json lives and which model to use as default.
tui.jsonTheme configuration. Terminal UI color scheme. Can be validated and regenerated via omo-kit theme.
AGENTS.mdProject conventions. Stack-specific instructions for AI coding agents: tooling, commands, commit style. Generated from stack templates.
~/my-project
$ omo-kit init --stack go --provider opencode-go --budget frugal -y Generated 4 files: oh-my-openagent.json opencode.json tui.json AGENTS.md

Or run interactively with omo-kit init — guided prompts for stack, providers, orchestrator, and budget. Flags: --stack, --provider, --budget, -y/--yes.

After generation, run omo-kit doctor --fix to validate and auto-correct.

Config walkthrough

Here's what each field in oh-my-openagent.json does, section by section.

disabled_skills & disabled_mcps

Strips irrelevant capabilities for your tech stack. Backend languages don't need frontend testing tools:

Stack typeStacksDisabled skillsDisabled MCPs
Web / Frontendastro, svelte, nodenonenone
Backend / Systemsgo, rust, pythonfrontend-ui-ux, frontend-design, design-taste-frontendbrowser, playwright
Genericgenericnonenone

Generated from your chosen stack's profile during init. Override in the generated file if needed.

Agent roles

oMo defines 10 specialized agents. Each gets a model matched to its task:

AgentPurposeModel tierThinking
sisyphusMain orchestrator. Plans, delegates, verifies.Premium
oracleArchitecture & debugging consultant. Read-only.Premium
prometheusStrategic planner. Creates work plans before execution.Premium
atlasMaster executor. Reads plans, delegates to specialists.Premium
metisPre-planning analysis. Catches ambiguities.Premium
momusPlan reviewer. Quality assurance before implementation.Medium16K
exploreCodebase search & pattern discovery.MediumDisabled
librarianExternal research: docs, OSS, web search.MediumDisabled
sisyphus-juniorCategory task executor. Runs delegated work.Medium4K
multimodal-lookerImage/PDF analysis.Medium
Note: Premium agents (sisyphus, oracle, prometheus, atlas, metis) omit the thinking field entirely. This is intentional — DeepSeek V4 Pro has a known bug where reasoning_content isn't preserved across multi-turn conversations. Use Ctrl+T in the TUI for manual reasoning on single-turn queries.

Each agent config looks like this:

oh-my-openagent.json → agents.sisyphus
{ "model": "opencode-go/deepseek-v4-pro", "textVerbosity": "low", "fallback_models": [ { "model": "opencode-go/glm-5.1" }, { "model": "opencode-go/minimax-m2.7" }, { "model": "opencode-go/minimax-m2.5-free" } ] }

Category routing

When agents delegate work, they pick a category — not a model name. The category maps to the right model:

CategoryUse caseModel tierThinking
visual-engineeringUI/UX, CSS, design, animationPremium8K
ultrabrainHard logic, algorithms, architecturePremium
deepAutonomous end-to-end implementationPremium
unspecified-highComplex undefined tasksPremium
artistryCreative problem-solving, unconventional approachesMedium16K
writingDocumentation, READMEs, proseMedium
quickTrivial tasks — typos, single-file changesFreeDisabled
unspecified-lowLow-effort undefined tasksFreeDisabled

Fallback chains

Every premium agent has the same capability-ordered fallback chain. If the primary model fails, oMo tries the next one:

Fallback chain
1. opencode-go/deepseek-v4-pro ← 80.6% SWE-bench, 93.5% LiveCodeBench 2. opencode-go/glm-5.1 ← 58.4 SWE-Bench Pro (#1 globally) 3. opencode-go/minimax-m2.7 ← 56.22 SWE-Bench Pro, 100 tok/s 4. opencode-go/minimax-m2.5-free ← 80.2% SWE-bench Verified, free

The order is backed by public benchmarks, not vibes. GLM-5.1 sits first in fallback based on SWE-Bench Pro performance. MiniMax M2.7 follows with competitive benchmarks at lower cost. M2.5-free is the safety net — free, so it can't break the bank.

big-pickle transparency: big-pickle is an OpenCode Go free-tier model with no published benchmarks. It only activates if minimax-m2.5-free fails, so risk is minimal. It appears as the final fallback for free-tier categories (quick, unspecified-low, writing).

Thinking budgets

Not every task benefits from chain-of-thought reasoning. omo-kit applies a tiered thinking policy:

Agent / CategoryThinkingBudgetWhy
momusEnabled16,000Plan review needs deep reasoning
artistry (category)Enabled16,000Creative work benefits from exploration
visual-engineeringEnabled8,000Visual/design tasks need spatial reasoning
sisyphus-juniorEnabled4,000Task execution benefits from light reasoning
sisyphus, oracle, prometheus, atlas, metisOmittedAvoids DeepSeek V4 Pro thinking bug
explore, librarianDisabled0Code search gains nothing from thinking
quick, unspecified-low, writingDisabled0Trivial tasks — thinking is wasted tokens

Budget tiers

During init, you pick one of three budget strategies. This affects which model pool each agent tier pulls from:

TierPremium agentsMedium agentsFree agents
generousDeepSeek V4 ProGLM-5.1, MiniMax M2.7MiniMax M2.5-free
frugalGLM-5.1MiniMax M2.7MiniMax M2.5-free
free-onlyMiniMax M2.5-freeMiniMax M2.5-freeMiniMax M2.5-free

Frugal is the recommended starting point — premium model for the orchestrator, medium/free for everything else.

Stack-specific behavior

omo-kit provides 7 tech stack templates. Each one changes what gets generated:

StackTypeDisabled skillsDisabled MCPsAgent overrides
astroWeb SSR/static
genericAny
goBackend systemsfrontend skillsbrowser, playwrightoracle 16K thinking
nodeFullstack JS/TS
pythonBackend/datafrontend skillsbrowser, playwright
rustBackend systemsfrontend skillsbrowser, playwrightoracle 16K thinking
svelteFrontend

Each stack also generates a tailored AGENTS.md with stack-specific tooling, commands, conventions, and commit style.

Doctor — validation

After generating configs, run omo-kit doctor to verify everything. Supports --fix for auto-correction and --verbose for detailed output.

$ omo-kit doctor --fix
$ omo-kit doctor --fix ── CWD — ~/my-project ── oh-my-openagent.json valid opencode.json valid tui.json valid AGENTS.md valid Fixable issues fix $schema: srmdn/ → code-yeongyu/ rename "provider" → "providers" 2 fixes applied. Re-run doctor to verify.

What it checks: file structure, required fields, key validation, JSON validity. Exits 0 if clean, 1 with diagnostics if issues found.

Fixable issues: tab indentation → spaces, legacy srmdn/ schema references → code-yeongyu/, singular provider key → providers, legacy filename oh-my-opencode.json → rename. Run with --fix --yes to auto-apply without confirmation, --verbose for per-file scan details.

Customization

omo-kit gives you a starting point. Common customizations:

Swap a model

oh-my-openagent.json
{ "agents": { "sisyphus": { "model": "anthropic/claude-opus-4-8", // ← changed from opencode-go/... "fallback_models": [ { "model": "openai/gpt-5.5" }, { "model": "gemini/gemini-3.1-pro" } ] } } }

Add thinking to an agent

oh-my-openagent.json
{ "agents": { "oracle": { "model": "anthropic/claude-opus-4-8", "thinking": { "type": "enabled", "budgetTokens": 32000 } // ← added } } }

Add a custom category

oh-my-openagent.json
{ "categories": { "my-custom-category": { "model": "anthropic/claude-sonnet-4-6", "textVerbosity": "low", "prompt_append": "Focus on security-first implementation." } } }

Use a custom theme

After running omo-kit theme generate, you have a ~/.config/opencode/themes/my-theme.json file. Tell OpenCode to use it:

tui.json
{ "theme": "my-theme", // ← change from "default" "showThinking": true }

The theme name must match the filename (without .json) in ~/.config/opencode/themes/. Restart OpenCode to see the change. Validate with omo-kit doctor before restarting.

Quick start

  1. Install OpenCodebrew install opencode or opencode.ai/docs
  2. Install oMo pluginbunx omo-kit setup
  3. Connect OpenCode Go — run /connect in OpenCode, select OpenCode Go, paste API key. Subscribe ($10/mo)
  4. Generate configbunx omo-kit init in your project root. For non-interactive setup: bunx omo-kit init --stack go --provider opencode-go --budget frugal -y
  5. Validatebunx omo-kit doctor
  6. Restart OpenCode to load the new config

Troubleshooting

ProblemLikely causeFix
"Model not found"Wrong provider prefix or model IDCheck provider list. Use exact model ID.
Agent uses wrong modelConfig not loaded or wrong config locationVerify file at ~/.config/opencode/oh-my-openagent.json and restart
Usage cap hitExceeded OpenCode Go $60/month limitFallback to minimax-m2.5-free is automatic. Or wait for reset.
Qwen models not appearingUpstream Alibaba issueAdd a "status": "beta" override in opencode.json provider section
DeepSeek thinking errorKnown bug: reasoning_content dropped across turnsConfig already omits thinking on premium agents. Use Ctrl+T for manual single-turn.
Known bug: DeepSeek V4 Pro's thinking mode has an active issue where reasoning content isn't preserved across multi-turn conversations. Three PRs were closed without merge. omo-kit intentionally omits the thinking field from DeepSeek-backed agents. Use Ctrl+T in the OpenCode TUI to toggle reasoning for single-turn critical queries.