OpenCode edition configuration (legacy)

September 14, 2026 · View on GitHub

This page documents the [opencode] keys and hooks that only the OpenCode edition reads; omo-senpi ignores every one of them. The sections below were moved verbatim from configuration.md and features.md.


Agents

Override built-in agent settings. Available agents: sisyphus, hephaestus, prometheus, oracle, librarian, explore, multimodal-looker, metis, momus, atlas, sisyphus-junior.

{
  "agents": {
    "explore": { "model": "anthropic/claude-haiku-4-5", "temperature": 0.5 },
    "multimodal-looker": { "disable": true }
  }
}

Disable agents entirely: { "disabled_agents": ["oracle", "multimodal-looker"] }

Agent tab cycling defaults to Sisyphus, Hephaestus, Prometheus, Atlas. Override known agent ordering with agent_order; omitted core agents keep their default relative order. Unknown or duplicate names are ignored and reported with a config toast.

{
  "agent_order": ["hephaestus", "sisyphus", "prometheus", "atlas"]
}
  • Stable agent ordering: core-agent tab cycling defaults to Sisyphus, Hephaestus, Prometheus, Atlas, and can be customized with agent_order
  • Canonical core agent order: Sisyphus, Hephaestus, Prometheus, Atlas.

Prometheus prompt handling

Prometheus is the exception for prompt replacement: its mandatory planner prompt always remains active so it can load ulw-plan first. For agents.prometheus, both prompt and prompt_append are appended to the mandatory base prompt instead of replacing it.

For Prometheus, file-backed prompt content is appended after the mandatory base prompt; it does not replace the base prompt.

Quick Start agent block

The agents block of the OpenCode edition quick start, with the per-agent overrides for its core agents:

{
  "[opencode]": {
    "agents": {
      // Main orchestrator: Claude Opus or Kimi K3 work best
      "sisyphus": {
        "model": "kimi-for-coding/kimi-k3",
        "ultrawork": { "model": "anthropic/claude-opus-5", "reasoning": "max" },
      },

      // Research agents: cheap fast models are fine
      "librarian": { "model": "google/gemini-3.6-flash" },
      "explore": { "model": "github-copilot/grok-code-fast-1" },

      // Architecture consultation: GPT-5.6 Sol or Claude Opus
      "oracle": { "model": "openai/gpt-5.6-sol", "reasoning": "high" },

      // Prometheus inherits sisyphus model; just add prompt guidance
      "prometheus": {
        "prompt_append": "Leverage deep & quick agents heavily, always in parallel.",
      },
    },
  },
}

Per-agent override examples

Anthropic Extended Thinking

{
  "agents": {
    "oracle": {
      "reasoning": "high",
      "providerOptions": { "thinking": { "type": "enabled", "budgetTokens": 200000 } }
    }
  }
}

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:

{
  "agents": {
    "sisyphus": {
      "model": "anthropic/claude-opus-5",
      "fallback_models": [
        // Simple string fallback
        "openai/gpt-5.6-sol",
        // Object with per-model settings
        {
          "model": "google/gemini-3.1-pro",
          "reasoning": "high",
          "temperature": 0.2
        },
        {
          "model": "anthropic/claude-sonnet-5",
          "reasoning": "high"
        }
      ]
    }
  }
}

File URIs for Prompts

{
  "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"
    }
  },
  "categories": {
    "custom": {
      "model": "anthropic/claude-sonnet-5",
      "prompt_append": "file://./category-context.md"
    }
  }
}

Runtime fallback: fallback_models per agent

{
  "agents": {
    "sisyphus": {
      "model": "anthropic/claude-opus-5",
      "fallback_models": [
        "openai/gpt-5.6-sol",
        {
          "model": "google/gemini-3.1-pro",
          "reasoning": "high"
        }
      ]
    }
  }
}
{
  "agents": {
    "sisyphus": {
      "model": "anthropic/claude-opus-5",
      "fallback_models": [
        "openai/gpt-5.6-sol",
        {
          "model": "anthropic/claude-sonnet-5",
          "reasoning": "high"
        },
        {
          "model": "openai/gpt-5.6-sol",
          "reasoning": "high",
          "temperature": 0.2,
          "top_p": 0.95,
          "maxTokens": 8192
        }
      ]
    }
  }
}

1. Simple string chain

{
  "agents": {
    "atlas": {
      "model": "anthropic/claude-sonnet-5",
      "fallback_models": [
        "anthropic/claude-haiku-4-5",
        "openai/gpt-5.6-sol",
        "google/gemini-3.1-pro"
      ]
    }
  }
}

2. Same-provider shorthand

{
  "agents": {
    "atlas": {
      "model": "openai/gpt-5.6-sol",
      "fallback_models": [
        "gpt-5.6-luna-fast",
        {
          "model": "gpt-5.6-sol",
          "reasoning": "medium",
          "maxTokens": 4096
        }
      ]
    }
  }
}

3. Mixed cross-provider chain

{
  "agents": {
    "sisyphus": {
      "model": "anthropic/claude-opus-5",
      "fallback_models": [
        "openai/gpt-5.6-sol",
        {
          "model": "anthropic/claude-sonnet-5",
          "reasoning": "high"
        },
        {
          "model": "google/gemini-3.1-pro",
          "reasoning": "high"
        }
      ]
    }
  }
}

5. Full object entry with every supported field

{
  "agents": {
    "oracle": {
      "model": "openai/gpt-5.6-sol",
      "fallback_models": [
        {
          "model": "openai/gpt-5.6-sol(low)",
          "reasoning": "high",
          "temperature": 0.3,
          "top_p": 0.9,
          "maxTokens": 8192
        }
      ]
    }
  }
}

Split Claude Routing (Antigravity)

{
  "agents": {
    // Google Antigravity Claude.
    "explore": {
      "model": "google/antigravity-claude-sonnet-4-6"
    },
    "librarian": {
      "model": "google/antigravity-claude-sonnet-4-6"
    },

    // Direct Anthropic, only for eligible long-context accounts/models.
    "sisyphus": {
      "model": "anthropic/claude-opus-5",
      "reasoning": "max"
    },
    "oracle": {
      "model": "anthropic/claude-opus-5"
    }
  }
}

features.md examples

{
  "agents": {
    "sisyphus": {
      "fallback_models": [
        "opencode/glm-5.2",
        { "model": "openai/gpt-5.6-sol", "variant": "high" },
        { "model": "anthropic/claude-sonnet-5", "thinking": { "type": "enabled", "budgetTokens": 64000 } }
      ]
    }
  }
}
{
  "agents": {
    "sisyphus": {
      "prompt": "file:///path/to/custom-prompt.md"
    },
    "oracle": {
      "prompt_append": "file:///path/to/additional-context.md"
    }
  },
  "categories": {
    "deep": {
      "prompt_append": "file:///path/to/deep-category-append.md"
    }
  }
}

Agent Provider Chains

AgentDefault ModelProvider Priority
Sisyphusclaude-opus-5anthropic|github-copilot|opencode/claude-opus-5 (max)opencode-go|kimi-for-coding|moonshotai|opencode|bailian-coding-plan|moonshotai-cn|firmware|ollama-cloud|aihubmix/kimi-k3openai|openai-codex|github-copilot|opencode/gpt-5.6-sol (medium)zai-coding-plan|opencode|bailian-coding-plan/glm-5.2opencode/big-pickle
Hephaestusgpt-5.6-solopenai|openai-codex|github-copilot|opencode/gpt-5.6-sol (medium)
Oraclegpt-5.6-solopenai|openai-codex|opencode/gpt-5.6-sol (xhigh)github-copilot/gpt-5.6-sol (high)google|github-copilot|opencode/gemini-3.1-pro (high)anthropic|github-copilot|opencode/claude-opus-5 (max)opencode-go/glm-5.2
Librariangpt-5.6-luna-fastopenai|openai-codex/gpt-5.6-luna-fast (low)deepseek/deepseek-v4-flash (max)opencode-go|bailian-coding-plan/qwen3.7-plusopencode-go/minimax-m3minimax-coding-plan|minimax-cn-coding-plan/MiniMax-M3opencode-go/minimax-m2.7anthropic|github-copilot/claude-haiku-4-5openai|openai-codex/gpt-5.4-nano
Exploregpt-5.6-luna-fastopenai|openai-codex/gpt-5.6-luna-fast (low)deepseek/deepseek-v4-flash (max)opencode-go|bailian-coding-plan/qwen3.7-plusopencode-go/minimax-m3minimax-coding-plan|minimax-cn-coding-plan/MiniMax-M3opencode-go/minimax-m2.7anthropic|github-copilot/claude-haiku-4-5openai|openai-codex/gpt-5.4-nano
Multimodal Lookergpt-5.6-solopenai|openai-codex|opencode/gpt-5.6-sol (low)opencode-go/kimi-k3zai-coding-plan/glm-4.6vopenai|openai-codex|github-copilot|opencode/gpt-5-nano
Prometheusclaude-fable-5-1anthropic|github-copilot|opencode/claude-fable-5-1 (xhigh)opencode-go|kimi-for-coding|moonshotai|opencode/kimi-k3 (max)
Metisclaude-fable-5-1anthropic|github-copilot|opencode/claude-fable-5-1 (max)anthropic|github-copilot|opencode/claude-opus-5 (max)opencode-go|kimi-for-coding|moonshotai|opencode/kimi-k3 (max)
Momusgpt-6-astraopenai|openai-codex/gpt-6-astra (xhigh)github-copilot/gpt-6-astra (high)openai|openai-codex|opencode/gpt-6-astra (high)anthropic|github-copilot|opencode/claude-opus-5 (max)google|github-copilot|opencode/gemini-3.1-pro (high)opencode-go/glm-5.2
Atlasclaude-sonnet-5anthropic|github-copilot|opencode/claude-sonnet-5opencode-go/kimi-k3openai|openai-codex|github-copilot|opencode/gpt-5.6-sol (medium)opencode-go/minimax-m3minimax-coding-plan|minimax-cn-coding-plan/MiniMax-M3opencode-go/minimax-m2.7
Sisyphus Juniorclaude-sonnet-5anthropic|github-copilot|opencode/claude-sonnet-5opencode-go/kimi-k3openai|openai-codex|github-copilot|opencode/gpt-5.6-sol (medium)opencode-go/minimax-m3minimax-coding-plan|minimax-cn-coding-plan/MiniMax-M3opencode-go/minimax-m2.7opencode/big-pickle

Invoking Agents

Ask @oracle to review this design and propose an architecture
Ask @librarian how this is implemented - why does the behavior keep changing?
Ask @explore for the policy on this feature

Tool Restrictions

AgentRestrictions
oracleRead-only: cannot write or edit (blocked: write, edit, apply_patch, task, call_omo_agent)
librarianCannot write, edit, or delegate (blocked: write, edit, task, call_omo_agent)
exploreCannot write, edit, or delegate (blocked: write, edit, task, call_omo_agent)
multimodal-lookerAllowlist: read only
momusCannot write or edit (blocked: write, edit); task is not denied

Task System

Sisyphus Agent

Configure the main orchestration system.

{
  "sisyphus_agent": {
    "disabled": false,
    "default_builder_enabled": false,
    "planner_enabled": true,
    "replace_plan": true
  }
}
OptionDefaultDescription
disabledfalseDisable all Sisyphus orchestration, restore original build/plan
tddtrueTDD mode for Sisyphus orchestration
default_builder_enabledfalseEnable OpenCode-Builder agent (off by default)
planner_enabledtrueEnable Prometheus (Planner) agent
replace_plantrueDemote default plan agent to subagent mode

Sisyphus agents can also be customized under agents using their names: Sisyphus, OpenCode-Builder, Prometheus (Planner), Metis (Plan Consultant).

Sisyphus Tasks

File-based task persistence with dependency tracking, used for cross-session task management. The task system is controlled by experimental.task_system (defaults to false). When enabled, TodoWrite/TodoRead are intercepted and replaced with the Task tools (task_create, task_get, task_list, task_update).

The sisyphus.tasks section configures storage options only:

{
  "sisyphus": {
    "tasks": {
      "claude_code_compat": false
    }
  }
}
OptionDefaultDescription
storage_pathOpenCode config dir /tasks/<list-id>Optional override; relative paths join the working directory
task_list_id-Force task list ID (alternative to env ULTRAWORK_TASK_LIST_ID)
claude_code_compatfalseEnable Claude Code path compatibility mode

To disable the task system entirely, set experimental.task_system to false:

{
  "experimental": { "task_system": false }
}

Hooks

Hook names in disabled_hooks that exist only in the OpenCode edition: prometheus-md-only, sisyphus-junior-notepad, no-sisyphus-gpt, no-hephaestus-non-gpt, hephaestus-agents-md-injector, atlas.

Notes:

  • no-sisyphus-gpt - do not disable. It blocks incompatible GPT models for Sisyphus while allowing GPT-5.4 and the shared model-aware GPT-5.5/GPT-5.6 Sol prompt paths.

/ulw-execute (OpenCode edition)

Switches the session to Atlas (Sisyphus if Atlas is unregistered), injects Prometheus plan + boulder + worktree/PR context, then Atlas executes. First actions are create_goal and todo registration, not immediate coding.

Productivity & Control

HookEventDescription
ulw-executeMessage + command.execute.beforeAfter /ulw-execute is expanded, selects a Prometheus plan, initializes boulder state, scaffolds notepads, switches the session to Atlas, and injects plan context.

Integration

HookEventDescription
atlasEvent + PreToolUse + PostToolUseContinuation-tier boulder orchestrator: on session.idle continues incomplete boulder work; enforces write/edit policy for subagent sessions; first-prompt watchdog.

Specialized

HookEventDescription
prometheus-md-onlyPreToolUseRestricts Prometheus write/edit tools to .omo/*.md plan files.
no-sisyphus-gptMessagePrevents Sisyphus from running on incompatible GPT models.
no-hephaestus-non-gptMessagePrevents Hephaestus from running on non-GPT models.
sisyphus-junior-notepadPreToolUseManages notepad state for Sisyphus-Junior agents.