README.md
[!NOTE] Multi-Harness Agent OS Refactor in Progress
We are restructuring the codebase to support multiple agent harnesses (OpenCode, Codex, Pi, and others). If you are interested in contributing, please read the ROADMAP first. PRs related to roadmap work should use the
ROADMAPlabel.
[!TIP] Building in Public
The maintainer builds and maintains oh-my-openagent in real-time with Jobdori, an AI assistant running on a heavily customized fork of OpenClaw. Every feature, every fix, every issue triage โ live in our Discord.
[!NOTE]
OmO is maintained by Jobdori, the AI assistant shown above. Meet your own Jobdori โ Dori. Join the waitlist here.
[!TIP] Be with us!
Join our Discord community to connect with contributors and fellow oh-my-openagentusers.Updates for oh-my-openagentused to be posted on my X account.
Since it was mistakenly suspended, @justsisyphus now posts updates on my behalf. |
<!-- <CENTERED SECTION FOR GITHUB DISPLAY> --> <div align="center">| | Follow @code-yeongyu on GitHub for more projects. |
<a href="https://github.com/code-yeongyu/oh-my-openagent#oh-my-openagent"></a>
</div>This is oh-my-openagent, running Team Mode. With Kimi K2.6 and GPT-5.5.
<div align="center">Anthropic blocked OpenCode because of us. Yes, this is true. They want you locked in. Claude Code is a nice prison, but it's still a prison.
You don't need to pay $200 for 2 hours of work. The future isn't picking one winner; it's orchestrating them all. Models get cheaper every month. Smarter every month. No single provider will dominate. We're building for that open market, not their walled gardens.
English | ํ๊ตญ์ด | ๆฅๆฌ่ช | ็ฎไฝไธญๆ
</div> <!-- </CENTERED SECTION FOR GITHUB DISPLAY> -->"It made me cancel my Cursor subscription. Unbelievable things are happening in the open source community." - Arthur Guiot
"If Claude Code does in 7 days what a human does in 3 months, Sisyphus does it in 1 hour. It just works until the task is done. It is a discipline agent."
"Knocked out 8000 eslint warnings with Oh My Opencode, just in a day"
"I converted a 45k line tauri app into a SaaS web app overnight using Ohmyopencode and ralph loop. Started with interview me prompt, asked it for ratings and recommendations on the questions. It was amazing to watch it work and to wake up this morning to a mostly working website!" - James Hargis
"use oh-my-opencode, you will never go back"
"I haven't really been able to articulate exactly what makes it so great yet, but the development experience has reached a completely different dimension." - ่็กฏ:ใใใใใ
"Experimenting with open code, oh my opencode and supermemory this weekend to build some minecraft/souls-like abomination." "Asking it to add crouch animations while I go take my post-lunch walk. [Video]" - MagiMetal
"You guys should pull this into core and recruit him. Seriously. It's really, really, really good."
"Hire @yeon_gyu_kim if you can convince him, this dude has revolutionized opencode."
"Oh My OpenCode Is Actually Insane" - YouTube - Darren Builds AI
You're juggling Claude Code, Codex, and random OSS models. Configuring workflows. Debugging agents.
We did the work. Tested everything. Kept what actually shipped.
Install oh-my-openagent. Type ultrawork. Done.
oh-my-openagent ships in two editions of the same product:
rules, comment-checker, lsp, ultrawork, ulw-loop, start-work-continuation, and telemetry. No agent orchestration, no team_* tools, no built-in MCPs beyond LSP โ Codex CLI's own surface does that work.Pick the edition(s) you want.
| You want | Run | What lands on disk |
|---|---|---|
| Ultimate (OpenCode) | bunx omo install (TUI walks you through it) | Plugin registered in opencode.json + agent/model config + provider auth prompts |
| Light (Codex CLI) | bunx omo install --platform=codex or bunx lazycodex install | ~/.codex/plugins/cache/sisyphuslabs/omo/ + local Codex marketplace cache + ~/.codex/config.toml marketplace/plugin/agent blocks + optional autonomous permissions + component CLIs in ~/.local/bin |
| Both | bunx omo install --platform=both | Both of the above |
--platform defaults to opencode (Ultimate). The bunx lazycodex install alias is a shortcut for bunx omo install --platform=codex; use whichever reads cleaner.
Strongly recommended: let an LLM agent install this for you. The Ultimate edition setup involves subscription detection, model selection across 11 agents, and per-provider authentication โ humans fat-finger these. An LLM agent reads the full guide and walks every step correctly.
Paste this prompt into Claude Code, AmpCode, Cursor, or any agent:
Install and configure oh-my-openagent by following the instructions here:
https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/refs/heads/dev/docs/guide/installation.md
If you only want the Light edition (Codex CLI), the installer asks whether to configure Codex for autonomous full-permissions mode. You can run it yourself in one line:
bunx omo install --platform=codex
# equivalent:
bunx lazycodex install
# non-interactive recommended mode:
bunx lazycodex install --no-tui --codex-autonomous
Do not use
npm install -g,bun add -g, orbun install -g. Global installation is not officially supported โ oh-my-openagent is a plugin that must resolve from where OpenCode/Codex loads plugins. Always invoke viabunx.
Fetch the full guide and follow it step by step:
curl -fsSL https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/refs/heads/dev/docs/guide/installation.md
The guide covers: platform selection, the subscription interview, provider authentication (Anthropic / Gemini / Copilot / Z.ai / OpenCode Zen), the agent-to-model matching matrix, modes (ultrawork, search, analyze, team, hyperplan), slash commands, the Light edition's 5 Codex components, Team Mode, and uninstall. Don't summarize it; read it end to end.
The published npm package and CLI binary are still named oh-my-opencode (dual-published as oh-my-openagent during the rename transition). Inside opencode.json, the compatibility layer prefers the plugin entry oh-my-openagent, while legacy oh-my-opencode entries still load with a warning. Plugin config files still commonly use oh-my-opencode.json[c]; both legacy and renamed basenames are recognized.
All four bunx aliases - oh-my-opencode, oh-my-openagent, omo, lazycodex - invoke the same compiled CLI. omo is the recommended short form for documentation and prompts. lazycodex is a single-purpose npm/bin alias: bunx lazycodex install is exactly equivalent to bunx omo install --platform=codex. It is not the Codex marketplace name. Codex sees marketplace sisyphuslabs and plugin omo, enabled as omo@sisyphuslabs.
Anonymous telemetry is enabled by default to track active installations (DAU/WAU/MAU). For both products, a single event is sent at most once per UTC day per machine using a SHA256-hashed installation identifier (never the raw hostname), and PostHog person profiles are not created. The main plugin emits oh_my_openagent_daily_active; the Codex CLI Light edition emits omo_codex_daily_active from two sources (install_completed and session_start).
Opt out per product:
OMO_DISABLE_POSTHOG=1 or OMO_SEND_ANONYMOUS_TELEMETRY=0OMO_CODEX_DISABLE_POSTHOG=1 or OMO_CODEX_SEND_ANONYMOUS_TELEMETRY=0 (the global flags also disable Codex)See Privacy Policy and Terms of Service.
We're past the era of reading docs. Just paste this into your agent:
Read this and tell me why it's not just another boilerplate: https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/refs/heads/dev/README.md
We are restructuring the codebase to support multiple agent harnesses (OpenCode, Codex, Pi, Claude Code, and others). The most urgent work is the package layering refactor: separating pure TypeScript core logic, MCP servers, skills, and adapter shims into distinct layers so the same logic can be reused across harnesses without duplication.
If you want to contribute, read the ROADMAP first. PRs related to this refactor should use the ROADMAP label so we can track them.
ultraworkYou're actually reading this? Wild.
Install. Type ultrawork (or ulw). Done.
Everything below, every feature, every optimization: you don't need to know any of it. It just works.
Even with only the following subscriptions, ultrawork works well (this project is not affiliated; these are personal recommendations):
| Feature | Edition | What it does | |
|---|---|---|---|
| ๐ค | Discipline Agents | Ultimate | Sisyphus orchestrates Hephaestus, Oracle, Librarian, Explore. A full AI dev team in parallel. |
| ๐งฉ | Codex CLI Light Edition | Light | Portable OMO components (rules, comment-checker, LSP, ultrawork, ulw-loop, start-work continuation, telemetry) running inside OpenAI Codex CLI. Install via bunx omo install --platform=codex. |
| ๐ฅ | Team Mode (v4.0, opt-in) | Ultimate | Lead agent + up to 8 parallel members, real-time tmux visualization, dedicated team_* tools. Powers hyperplan (5 hostile critics) and security-research (3 hunters + 2 PoC engineers). Docs โ |
| โก | ultrawork / ulw | Both | One word. Every agent activates. Doesn't stop until done. |
| ๐ช | IntentGate | Ultimate | Analyzes true user intent before classifying or acting. No more literal misinterpretations. (Light edition only recognises the ultrawork/ulw keyword.) |
| ๐ | Hash-Anchored Edit Tool | Ultimate | LINE#ID content hash validates every change. Zero stale-line errors. Inspired by oh-my-pi. The Harness Problem โ |
| ๐ ๏ธ | LSP integration | Both | Diagnostics, navigation, symbols, workspace rename. IDE precision for agents. Same LSP MCP server in both editions. |
| ๐ | AST-Grep | Ultimate | Pattern-aware code search and rewriting across 25 languages. |
| ๐ง | Background Agents | Ultimate | Fire 5+ specialists in parallel. Context stays lean. Results when ready. |
| ๐ | Built-in MCPs (web/docs/code search) | Ultimate | Exa (web search), Context7 (official docs), Grep.app (GitHub search). Always on. |
| ๐ | Ralph Loop / /ulw-loop | Ultimate | Self-referential loop. Doesn't stop until 100% done. |
| โ | Todo Enforcer | Ultimate | Agent goes idle? System yanks it back. Your task gets done, period. |
| ๐ฌ | Comment Checker | Both | No AI slop in comments. Code reads like a senior wrote it. |
| ๐ | Rules Injection (AGENTS.md / .omo/rules/**) | Both | Project rules and AGENTS.md auto-loaded into the agent's context at every prompt. |
| ๐ฏ | Ulw Loop | Both | Durable multi-goal orchestration with evidence audit, backed by .omo/ulw-loop/. |
| ๐ฅ๏ธ | Tmux Integration | Ultimate | Full interactive terminal. REPLs, debuggers, TUIs. All live. |
| ๐ | Claude Code Compatible | Ultimate | Your hooks, commands, skills, MCPs, and plugins? All work here. |
| ๐งฌ | Skill-Embedded MCPs | Ultimate | Skills carry their own MCP servers. No context bloat. |
| ๐ | Prometheus Planner | Ultimate | Interview-mode strategic planning before any execution. |
| ๐ | /init-deep | Ultimate | Auto-generates hierarchical AGENTS.md files throughout your project. Great for both token efficiency and your agent's performance. |
Edition legend. Ultimate = OpenCode-only (
bunx omo install). Light = Codex CLI-only (bunx omo install --platform=codex). Both = shipped in both editions, often with slightly different implementations under the hood.
Sisyphus (claude-opus-4-7 / kimi-k2.6 / glm-5.1 ) is your main orchestrator. He plans, delegates to specialists, and drives tasks to completion with aggressive parallel execution. He does not stop halfway.
Hephaestus (gpt-5.5) is your autonomous deep worker. Give him a goal, not a recipe. He explores the codebase, researches patterns, and executes end-to-end without hand-holding. The Legitimate Craftsman.
Prometheus (claude-opus-4-7 / kimi-k2.6 / glm-5.1 ) is your strategic planner. Interview mode: he asks questions, identifies scope, and builds a detailed plan before a single line of code is touched.
Every agent is tuned to its model's specific strengths. No manual model juggling. Learn more โ
Anthropic blocked OpenCode because of us. That's why Hephaestus is called "The Legitimate Craftsman." The irony is intentional.
We run best on Opus, but Kimi K2.6 + GPT-5.5 already beats vanilla Claude Code. Zero config needed.
One agent is fast. A coordinated team is devastating.
Team Mode turns oh-my-openagent from "one agent with subagents" into a real multi-agent system. A lead agent orchestrates a team of category-specialized members, all running in parallel and communicating through dedicated tools (team_create, team_send_message, team_task_create, team_status, ...). Watch every member work simultaneously in a tmux layout with focus + grid windows.
// .opencode/oh-my-openagent.jsonc
{
"team_mode": {
"enabled": true,
"max_parallel_members": 4,
"tmux_visualization": true
}
}
Restart opencode and the team_* tool family unlocks. Two skills already ride on top:
hyperplan โ 5 hostile agents tear apart your plan from orthogonal angles before a single line of code is written.security-research โ 3 vulnerability hunters + 2 PoC engineers audit your codebase in parallel, with severity calibrated by actual exploitability.Off by default. Enable it when you want it. Full Team Mode guide โ
When Sisyphus delegates to a subagent, it doesn't pick a model. It picks a category. The category maps automatically to the right model:
| Category | What it's for |
|---|---|
visual-engineering | Frontend, UI/UX, design |
deep | Autonomous research + execution |
quick | Single-file changes, typos |
ultrabrain | Hard logic, architecture decisions |
The agent says what kind of work it needs; the harness picks the right model. ultrabrain now routes to GPT-5.5 xhigh by default. You touch nothing.
You dialed in your Claude Code setup. Good.
Every hook, command, skill, MCP, plugin works here unchanged. Full compatibility, including plugins.
LSP, AST-Grep, Tmux, and MCP, actually integrated, not duct-taped together.
lsp_rename, lsp_goto_definition, lsp_find_references, lsp_diagnostics. IDE precision for every agent.MCP servers eat your context budget. We fixed that.
Skills bring their own MCP servers. They spin up on demand, scoped to the task, and go away when done. The context window stays clean.
The harness problem is real. Most agent failures aren't the model's fault; it's the edit tool.
"None of these tools give the model a stable, verifiable identifier for the lines it wants to change... They all rely on the model reproducing content it already saw. When it can't - and it often can't - the user blames the model."
Inspired by oh-my-pi, we built Hashline. Every line the agent reads comes back tagged with a content hash:
11#VK| function hello() {
22#XJ| return "world";
33#MB| }
The agent edits by referencing those tags. If the file has changed since the last read, the hash won't match and the edit is rejected before any corruption. No whitespace reproduction. No stale-line errors.
Grok Code Fast 1: 6.7% โ 68.3% success rate, just from changing the edit tool.
/init-deepRun /init-deep. It generates hierarchical AGENTS.md files:
project/
โโโ AGENTS.md โ project-wide context
โโโ src/
โ โโโ AGENTS.md โ src-specific context
โ โโโ components/
โ โโโ AGENTS.md โ component-specific context
Agents auto-read relevant context. Zero manual management.
Complex task? Don't prompt and pray.
/start-work calls Prometheus. He interviews you like a real engineer, identifies scope and ambiguities, and builds a verified plan before touching code. The agent knows what it's building before it starts.
Skills aren't just prompts. Each brings:
Built-ins: playwright (browser automation), git-master (atomic commits, rebase surgery), frontend-ui-ux (design-first UI).
Add your own under .opencode/skills/*/SKILL.md or ~/.config/opencode/skills/*/SKILL.md.
Want the full feature breakdown? See the Features Documentation for agents, hooks, tools, MCPs, and everything else in detail.
New to oh-my-openagent? Read the Overview to understand what you have, or check the Orchestration Guide for how agents collaborate.
To remove oh-my-openagent:
Remove the plugin from your OpenCode config
Edit ~/.config/opencode/opencode.json (or opencode.jsonc) and remove either "oh-my-openagent" or the legacy "oh-my-opencode" entry from the plugin array:
# Using jq
jq '.plugin = [.plugin[] | select(. != "oh-my-openagent" and . != "oh-my-opencode")]' \
~/.config/opencode/opencode.json > /tmp/oc.json && \
mv /tmp/oc.json ~/.config/opencode/opencode.json
Remove configuration files (optional)
# Remove plugin config files recognized during the compatibility window
rm -f ~/.config/opencode/oh-my-openagent.jsonc ~/.config/opencode/oh-my-openagent.json \
~/.config/opencode/oh-my-opencode.jsonc ~/.config/opencode/oh-my-opencode.json
# Remove project config (if exists)
rm -f .opencode/oh-my-openagent.jsonc .opencode/oh-my-openagent.json \
.opencode/oh-my-opencode.jsonc .opencode/oh-my-opencode.json
Verify removal
opencode --version
# Plugin should no longer be loaded
Remove omo-codex (Codex CLI Light edition)
rm -rf ~/.codex/plugins/cache/sisyphuslabs
Then open ~/.codex/config.toml and remove [marketplaces.sisyphuslabs], [plugins."omo@sisyphuslabs"], and any [hooks.state."omo@sisyphuslabs:..."] blocks.
Features you'll think should've always existed. Once you use them, you can't go back.
See full Features Documentation.
Quick Overview:
LINE#ID references validate content before applying every change. Surgical edits, zero stale-line errorsopencode mcp list (see MCP docs)bunx oh-my-opencode doctor) verify plugin registration, config, models, and environmentfallback_models can mix plain model strings with per-fallback object settings in the same arrayfile:// support in agent configurationsOpinionated defaults, adjustable if you insist.
See Configuration Documentation.
Quick Overview:
.opencode/oh-my-openagent.json[c] configs up to $HOME; closest wins. Legacy oh-my-opencode.json[c] still works.playwright (browser automation), git-master (atomic commits)visual, business-logic, custom)disabled_hooksopencode mcp listWant the philosophy? Read the Ultrawork Manifesto.
I burned through $24K in LLM tokens on personal projects. Tried every tool. Configured everything to death. OpenCode won.
Every problem I hit, the fix is baked into this plugin. Install and go.
If OpenCode is Debian/Arch, oh-my-openagent is Ubuntu/Omarchy.
Heavily influenced by AmpCode and Claude Code. Features ported, often improved. Still building. It's OpenCode.
Other harnesses promise multi-model orchestration. We ship it. Stability too. And features that actually work.
I'm this project's most obsessive user:
This plugin is the distillation. Take the best. Got improvements? PRs welcome.
Stop agonizing over harness choices. I'll research, steal the best, and ship it here.
Sounds arrogant? Have a better way? Contribute. You're welcome.
No affiliation with any project or model mentioned. Just personal experimentation.
99% of this project was built with OpenCode. I don't really know TypeScript, but I personally reviewed and largely rewrote this doc.
Special thanks to @junhoyeo for this amazing hero image.