Configuration Reference
This reference documents the current runtime behavior for Oh My OpenAgent plugin config loading and validation.
During the rename transition, both basenames are accepted:
- Preferred:
oh-my-openagent.jsonc or oh-my-openagent.json
- Legacy:
oh-my-opencode.jsonc or oh-my-opencode.json
Format and Naming Rules
- Config format: JSONC (
// comments, /* */ comments, trailing commas)
- Key style:
snake_case
- Validation: Zod v4 schema validation
- Auto-migration: legacy keys and values are migrated by
migrateConfigFile()
Schema autocomplete:
File Discovery and Merge Order
Load order (src/plugin-config.ts):
- User config in OpenCode config dir (
~/.config/opencode on macOS/Linux, %APPDATA%\\opencode on Windows)
- Walked project configs from the current directory up to
$HOME (closer directory wins)
When current directory is outside $HOME, walking is pinned to that directory.
Merge semantics
- Deep merge:
agents, categories, team_mode, claude_code
- Set union (dedup arrays):
agent_definitions
disabled_agents
disabled_mcps
disabled_hooks
disabled_commands
disabled_skills
disabled_tools
mcp_env_allowlist (during merge phase)
- Override replace: all other keys
Security rule: final mcp_env_allowlist is forced to user-config only. Walked/project configs cannot extend it.
Migration Behavior
- Legacy basename can be migrated to canonical basename automatically.
- Config migrations are idempotent and tracked using migration sidecar state (plus legacy
_migrations compatibility handling).
- When content changes, migration writes timestamped backups like
*.bak.<ISO timestamp>.
Top-level Key Reference
Types/defaults below are from assets/oh-my-openagent.schema.json.
| Key |
Type |
Default |
$schema |
string |
none |
_migrations |
string[] |
none |
agent_definitions |
string[] |
none |
agents |
object |
none |
auto_update |
boolean |
none |
babysitting |
object |
none |
background_task |
object |
none |
browser_automation_engine |
object |
none |
categories |
object |
none |
claude_code |
object |
none |
comment_checker |
object |
none |
default_run_agent |
string |
none |
disabled_agents |
string[] |
none |
disabled_commands |
string[] |
none |
disabled_hooks |
string[] |
none |
disabled_mcps |
string[] |
none |
disabled_skills |
string[] |
none |
disabled_tools |
string[] |
none |
experimental |
object |
none |
git_master |
object |
{ "commit_footer": true, "include_co_authored_by": true, "git_env_prefix": "GIT_MASTER=1" } |
hashline_edit |
boolean |
none |
keyword_detector |
object |
none |
mcp_env_allowlist |
string[] |
none |
model_capabilities |
object |
none |
model_fallback |
boolean |
none |
new_task_system_enabled |
boolean |
none |
notification |
object |
none |
openclaw |
object |
none |
ralph_loop |
object |
none |
runtime_fallback |
boolean | object |
none |
sisyphus |
object |
none |
sisyphus_agent |
object |
none |
skills |
string[] | object |
none |
start_work |
object |
none |
team_mode |
object |
none |
tmux |
object |
none |
websearch |
object |
none |
High-use Sections
team_mode (all fields)
| Field |
Type |
Default |
Notes |
enabled |
boolean |
false |
Master switch |
tmux_visualization |
boolean |
false |
Visual tmux mode |
max_parallel_members |
integer |
4 |
Range 1..8 |
max_members |
integer |
8 |
Range 1..8 |
max_messages_per_run |
integer |
10000 |
Minimum 1 |
max_wall_clock_minutes |
integer |
120 |
Minimum 1 |
max_member_turns |
integer |
500 |
Minimum 1 |
base_dir |
string |
none |
Optional override path |
message_payload_max_bytes |
integer |
32768 |
Minimum 1024 |
recipient_unread_max_bytes |
integer |
262144 |
Minimum 1024 |
mailbox_poll_interval_ms |
integer |
3000 |
Minimum 500 |
tmux
| Field |
Type |
Default |
enabled |
boolean |
false |
layout |
string |
"main-vertical" |
main_pane_size |
number |
60 |
main_pane_min_width |
number |
120 |
agent_pane_min_width |
number |
40 |
isolation |
string |
"inline" |
background_task
| Field |
Type |
Default |
defaultConcurrency |
number |
none |
providerConcurrency |
object |
none |
modelConcurrency |
object |
none |
maxDepth |
integer |
none |
staleTimeoutMs |
number |
none |
messageStalenessTimeoutMs |
number |
none |
taskTtlMs |
number |
none |
sessionGoneTimeoutMs |
number |
none |
syncPollTimeoutMs |
number |
none |
maxToolCalls |
integer |
none |
circuitBreaker |
object |
none |
experimental
| Field |
Type |
Default |
aggressive_truncation |
boolean |
none |
auto_resume |
boolean |
none |
preemptive_compaction |
boolean |
none |
truncate_all_tool_outputs |
boolean |
none |
dynamic_context_pruning |
object |
none |
task_system |
boolean |
none |
plugin_load_timeout_ms |
number |
none |
safe_hook_creation |
boolean |
none |
disable_omo_env |
boolean |
none |
hashline_edit |
boolean |
none |
model_fallback_title |
boolean |
none |
max_tools |
integer |
none |
openclaw
| Field |
Type |
Default |
enabled |
boolean |
false |
gateways |
object |
{} |
hooks |
object |
{} |
replyListener |
object |
none |
sisyphus_agent
| Field |
Type |
Default |
disabled |
boolean |
none |
default_builder_enabled |
boolean |
none |
planner_enabled |
boolean |
none |
replace_plan |
boolean |
none |
tdd |
boolean |
true |
git_master
| Field |
Type |
Default |
commit_footer |
boolean | string |
true |
include_co_authored_by |
boolean |
true |
git_env_prefix |
string |
"GIT_MASTER=1" |
model_capabilities
| Field |
Type |
Default |
enabled |
boolean |
none |
auto_refresh_on_start |
boolean |
none |
refresh_timeout_ms |
integer |
none |
source_url |
string |
none |
browser_automation_engine
| Field |
Type |
Default |
provider |
string |
"playwright" |
| Key |
Field |
Type |
Default |
notification |
force_enable |
boolean |
none |
comment_checker |
custom_prompt |
string |
none |
keyword_detector |
disabled_keywords |
string[] |
none |
websearch |
provider |
string |
none |
ralph_loop |
enabled |
boolean |
false |
ralph_loop |
default_max_iterations |
number |
100 |
ralph_loop |
state_dir |
string |
none |
ralph_loop |
default_strategy |
string |
"continue" |
babysitting |
timeout_ms |
number |
120000 |
start_work |
auto_commit |
boolean |
true |
Agents, Categories, Skills
agents: per-agent overrides. Built-ins include sisyphus, hephaestus, prometheus, oracle, librarian, explore, atlas, metis, momus, multimodal-looker, sisyphus-junior.
categories: category-level model and prompt routing overrides.
skills: either array form or object form.
disabled_agents, disabled_skills, disabled_hooks, disabled_tools, disabled_commands, disabled_mcps: string arrays.
Runtime and Model Fallback
model_fallback: global switch for proactive model fallback behavior.
runtime_fallback: boolean or object config for reactive fallback behavior.
- Provider/model fallback chains are defined in code (
src/shared/model-requirements.ts).
Verified JSONC Example