Oh My OpenAgent

September 17, 2026 · View on GitHub

Note

OmO Beta: OmO ❤️ Pi Try it with bun add -g omo-ai@beta. Memory system, CodeMode, Anthropic subscriptions, all covered. OmO Herdr DAG - live OmO workflow DAGs in a Herdr side pane Just type "mass ulw" with your prompt - now you are the master of graph engineering. Multi-model ultracode, together with a better memory system. (The right panel is omo-herdr-dag.)

Sponsors These are our sponsors. They help keep OmO going as a personal side project.

OpenGatewayOpenGateway serves Kimi K3 Ultrafast at 300 TPS at the same price as the official list price. Try opengateway/moonshotai/kimi-k3-ultrafast today. It enforces a no-logging policy on inference raw content, so your prompts stay private - and since you never request the provider directly, you stay anonymous.

Note

Sisyphus Labs - Meet Dori. Not a demo. Subscribes to everything.

OmO is maintained by Jobdori, the AI assistant shown above. Meet your own Jobdori, Dori.
Join the waitlist here.

Tip

Be with us!

Discord linkJoin our Discord community to connect with contributors and fellow oh-my-openagent users.
X linkUpdates for oh-my-openagent used to be posted on my X account.
Since it was mistakenly suspended, @justsisyphus now posts updates on my behalf.
GitHub FollowFollow @code-yeongyu on GitHub for more projects.

OmO

Oh My OpenAgent

Preview

This is oh-my-openagent, running Team Mode. With Kimi K3 and GPT-5.6 Sol.

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.

GitHub Release npm downloads GitHub Contributors GitHub Forks GitHub Stars GitHub Issues License Ask DeepWiki Docs

English | 한국어 | 日本語 | 简体中文

Reviews

"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."
- B, Quant Researcher

"Knocked out 8000 eslint warnings with Oh My Opencode, just in a day"
- Jacob Ferrari

"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"
- d0t3ch

"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."
- Henning Kilset

"Hire @yeon_gyu_kim if you can convince him, this dude has revolutionized opencode."
- mysticaltech

"Oh My OpenCode Is Actually Insane" - YouTube - Darren Builds AI


Oh My OpenAgent

You're juggling Claude Code, Codex, and random OSS models. Configuring each one. Debugging agents.

We did the work. Tested everything. Kept what actually shipped.

Install oh-my-openagent. Type ultrawork. Done.

Installation

oh-my-openagent ships in three editions of the same product: two plugins that load into a host you already run, plus one standalone edition.

Ultimate Edition (omo for OpenCode) is the full omo. 11 agents, 54+ lifecycle hooks, 4 built-in MCPs (websearch, context7, grep_app, lsp), all slash commands, Team Mode, /goal, ultrawork. Hashline edits are opt-in (hashline_edit: true).

Light Edition (omo for Codex CLI) carries the portable components that fit Codex's plugin system: rules, comment-checker, git-bash, lsp, ultrawork, ulw-loop, ulw-execute-continuation, and telemetry at the core, plus teammode and supporting components (bootstrap, lcx, and more), plugin-scoped MCPs for grep_app, context7, git_bash, and lsp, and the shared ast-grep skill. It installs Codex agent TOMLs into ~/.codex/agents/. There are no OpenCode team_* tools; Codex CLI's own spawn/collaboration surface does that work.

Senpi Edition (standalone, beta) is the native omo command with the OMO extension built in. It installs from omo-ai@beta and loads into neither OpenCode nor Codex.

Pick the edition(s) you want.

One-line install

You wantRunWhat lands on disk
Ultimate (OpenCode)bunx oh-my-openagent install (TUI walks you through it)Plugin registered in opencode.json + agent/model config + provider auth prompts
Light (Codex CLI)npx lazycodex-ai 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
Bothbunx oh-my-openagent install --platform=bothBoth of the above
Senpi edition (beta)bun add -g omo-ai@beta, then omoThe omo command: pinned senpi release with the OMO extension built in. Beta channel only; a bare bun add -g omo-ai fails by design. See the install guide.

lazycodex-ai defaults to the Codex Light installer and runs through Node/npm. --platform on the shared omo-agent-toolkit CLI still defaults to opencode (Ultimate).

Which edition should I pick?

Already on OpenCode, or want the most-tested path? Ultimate. Already on Codex CLI? Light. Want one command without installing a host first? The Senpi edition, which ships a pinned Senpi engine with OMO built in; bun is the recommended runtime for it, and the @beta tag is required. Do not install plain omo from npm; that is an unrelated package by a different author.

For Humans

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, and 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:

npx lazycodex-ai install
# non-interactive recommended mode:
npx lazycodex-ai install --no-tui --codex-autonomous

For the Light edition, Bun is not required. Use npx lazycodex-ai install from a Node/npm environment. Global installation is not officially supported; the installer writes the Codex plugin into ~/.codex/.

For LLM Agents

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 / Google / Copilot / Z.ai / OpenCode Zen), the agent-to-model matching matrix, modes (ultrawork, team, hyperplan), slash commands, the Light edition's Codex components, Team Mode, and uninstall. Don't summarize it; read it end to end.

Note on package and command names

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. Runtime config is ~/.omo/omo.jsonc plus walked project .omo/omo.jsonc. Legacy oh-my-openagent.json[c] / oh-my-opencode.json[c] files are imported once by the migration engine and are not read afterward.

The recommended bunx/npx invocation is oh-my-openagent install (or the original oh-my-opencode install). Once installed, the short command is omo-agent-toolkit. The omo bin was removed from these packages in this major release; the name now belongs to the senpi-native edition, installed with bun add -g omo-ai@beta (beta channel only; bun is the recommended runtime). Do not use bunx omo or npx omo: omo on npm is a different, unrelated package by a different author, and those commands resolve to it. The senpi edition's package name is omo-ai. lazycodex-ai is a single-purpose Node/npm installer package: npx lazycodex-ai install routes directly to the Codex Light installer. It is not the Codex marketplace name (the marketplace repository is code-yeongyu/lazycodex). Codex sees marketplace sisyphuslabs and plugin omo, enabled as omo@sisyphuslabs.

Telemetry

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 omo_daily_active from plugin load (plugin_loaded) and CLI run (run_started) sources; the Codex CLI Light edition emits omo_codex_daily_active from two sources (install_completed and session_start).

Opt out per product. For the main plugin, set "telemetry": false in the oh-my-openagent config, or export OMO_DISABLE_POSTHOG=1 or OMO_SEND_ANONYMOUS_TELEMETRY=0. For the Codex CLI Light edition, export OMO_CODEX_DISABLE_POSTHOG=1 or OMO_CODEX_SEND_ANONYMOUS_TELEMETRY=0; the global flags also disable Codex.

See Privacy Policy and Terms of Service.


Skip This README

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

ROADMAP

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 they are easy to track.

Highlights

🪄 ultrawork

You'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 a ChatGPT subscription ($20), a Kimi Code subscription ($19) or the GLM Coding Plan ($10), ultrawork works well (this project is not affiliated; these are personal recommendations). If you're eligible for pay-per-token, Kimi and GLM models won't cost much either.

FeatureEditionWhat it does
🤖Discipline AgentsUltimateThe main agent orchestrates the architect consult, Librarian, Explore and category workers. A full AI dev team in parallel.
🧩Codex CLI Light EditionLightPortable OMO components (rules, comment-checker, git-bash, LSP, ultrawork, ulw-loop, ulw-execute continuation, telemetry, teammode, and more) running inside OpenAI Codex CLI. Install via npx lazycodex-ai install.
👥Team Mode (opt-in)UltimateLead 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 / ulwBothOne word. Every agent activates. Doesn't stop until done.
🚪IntentGateUltimateKeyword detection for ultrawork/ulw, team, and hyperplan (does not semantically classify intent). (Light edition only recognises the ultrawork/ulw keyword.)
🔗Hash-Anchored Edit ToolUltimateHashline (LINE#ID) edit/read tagging. Opt-in: set hashline_edit: true in ~/.omo/omo.jsonc. Zero stale-line errors. Inspired by oh-my-pi. The Harness Problem →
🛠️LSP integrationBothDiagnostics, navigation, symbols, workspace rename. IDE precision for agents. Same LSP MCP server in both editions.
🔎AST-GrepBothPattern-aware code search and rewriting across 25 languages. Both editions use the shared ast-grep skill with a provisioned sg.
🧠Background AgentsUltimateFire 5+ specialists in parallel. Context stays lean. Results when ready.
📚Built-in MCPs (web/docs/code search)Ultimatewebsearch (Exa), context7 (docs), grep_app (GitHub search), lsp. Always on.
🔁Goal / /goalUltimate/goal sets a persistent thread objective. Idle continuation runs only when goal.enabled is true (default false).
Todo EnforcerUltimateAgent goes idle? System yanks it back. Your task gets done, period.
💬Comment CheckerBothNo AI slop in comments. Code reads like a senior wrote it.
📐Rules Injection (AGENTS.md / .omo/rules/**)BothProject rules and AGENTS.md auto-loaded into the agent's context at every prompt.
🎯Ulw LoopLightCodex component + CLI for durable multi-goal orchestration with evidence audit. On OpenCode, use Goal / /goal instead.
🖥️Tmux IntegrationUltimateFull interactive terminal. REPLs, debuggers, TUIs. All live.
🔌Claude Code CompatibleUltimateYour hooks, commands, skills, MCPs, and plugins? All work here.
🧬Skill-Embedded MCPsUltimateSkills carry their own MCP servers. No context bloat.
📋Ultrawork PlannerUltimateInterview-mode strategic planning before execution starts.
🔍/init-deepUltimateAuto-generates hierarchical AGENTS.md files throughout your project. Great for both token efficiency and your agent's performance.

Edition legend. Ultimate = OpenCode-only (bunx oh-my-openagent install). Light = Codex CLI-only (npx lazycodex-ai install). Both = shipped in both editions, often with slightly different implementations.

Discipline Agents

The main agent runs on your session model and is your orchestrator. It plans, delegates to specialists, and drives tasks to completion with aggressive parallel execution. It doesn't stop halfway. Give it a goal, not a recipe: it explores the codebase, researches patterns, and executes end-to-end without hand-holding. The Legitimate Craftsman.

The Ultrawork Planner (/ulw-plan) is your strategic planner. Interview mode: it asks questions, identifies scope, and builds a detailed plan before a single line of code is touched. /ulw-execute then carries that plan out in the same session.

Every prompt preset is tuned to its model's specific strengths. No manual model juggling. Learn more →

Anthropic blocked OpenCode because of us. That's why we call the main agent "The Legitimate Craftsman." The irony is intentional.

We run best on Opus or Kimi K3, but Kimi K3 + GPT-5.6 Sol already beats vanilla Claude Code. Zero config needed.

Team Mode

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.

// ~/.omo/omo.jsonc  (or project .omo/omo.jsonc)
{
  "team_mode": {
    "enabled": true,
    "max_parallel_members": 4,
    "tmux_visualization": true
  }
}

Restart opencode and the team_* tool family appears. Two skills already ride on top of it. hyperplan sends 5 hostile agents at your plan from orthogonal angles before a single line of code is written. security-research runs 3 vulnerability hunters and 2 PoC engineers over your codebase in parallel, with severity calibrated by actual exploitability.

Off by default. Enable it when you want it. Full Team Mode guide →

Agent Orchestration

When the main agent delegates to a subagent, it doesn't pick a model. It picks a category. The category maps automatically to the right model:

CategoryWhat it's for
visual-engineeringVisual design, UI/UX, frontend
deepDeep work across visual and technical domains
quickSingle-file changes, typos
ultrabrainHard logic, architecture decisions

The agent says what kind of work it needs; the harness picks the right model. ultrabrain routes to GPT-6 Astra max and deep to GPT-6 Astra high (OpenAI / OpenAI Codex, then GitHub Copilot, then OpenCode); both fall back to GPT-5.6 Sol. You touch nothing.

Claude Code Compatibility

You dialed in your Claude Code setup. Good.

Every hook, command, skill, MCP, plugin works here unchanged. Full compatibility, including plugins.

World-Class Tools for Your Agents

LSP, AST-Grep, Tmux, and MCP, actually integrated, not duct-taped together. LSP gives every agent lsp_rename, lsp_goto_definition, lsp_find_references and lsp_diagnostics, IDE precision included. AST-Grep does pattern-aware code search and rewriting across 25 languages. Tmux is a full interactive terminal, so REPLs, debuggers and TUI apps stay in session. MCP brings web search, official docs and GitHub code search, all baked in.

Skill-Embedded MCPs

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 small.

Codes Better. Hash-Anchored Edits

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."


- Can Bölük, The Harness Problem

Inspired by oh-my-pi, we built Hashline. When hashline_edit is enabled, 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 it can corrupt the file. No whitespace reproduction. No stale-line errors.

Deep Initialization. /init-deep

Run /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.

Planning. The Ultrawork Planner

Complex task? Don't prompt and pray.

The Ultrawork Planner (/ulw-plan) interviews you like a real engineer, identifies scope and ambiguities, and writes a reviewed plan to .omo/plans/ before touching code. /ulw-execute then has the main agent execute that plan in the same session. The agent knows what it's building before it starts.

Skills

Skills aren't just prompts. Each brings domain-tuned system instructions, embedded MCP servers on demand, and scoped permissions so agents stay in bounds.

Built-ins include playwright (browser automation), git-master (atomic commits, rebase surgery) and frontend (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.

Uninstallation

Removing oh-my-openagent takes four steps.

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 the runtime config files
rm -f ~/.omo/omo.jsonc ~/.omo/omo.json

# Remove project config (if exists)
rm -f .omo/omo.jsonc .omo/omo.json

# Remove leftover legacy migration backups (if any)
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 \
      .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)

npx lazycodex-ai uninstall
# backward-compatible alias:
npx lazycodex-ai cleanup

omo-agent-toolkit uninstall --platform=codex
# backward-compatible alias:
omo-agent-toolkit cleanup --platform=codex

The uninstall command removes managed sisyphuslabs Codex cache/marketplace state, strips omo@sisyphuslabs plugin and hook-state blocks from ~/.codex/config.toml after writing a backup, and removes agent TOML links listed in the install manifest. If a specific project still has old project-local Codex plugin state, run the command from that project or pass --project <path>; it repairs known project-local .codex/config.toml conflicts and reports project-local .codex artifacts without deleting project-owned files.

Features

Features you'll think should've always existed. Once you use them, you can't go back.

See the full Features Documentation. The short version follows.

The main agent orchestrates; the Ultrawork Planner (/ulw-plan), the architect consult (architecture and debugging), Librarian (docs and code search), Explore (fast codebase grep) and the Multimodal Looker specialize, and background agents run several of them in parallel like a real dev team. LSP and AST tools cover refactoring, rename, diagnostics and AST-aware code search. The hash-anchored edit tool (opt-in via hashline_edit: true) validates LINE#ID references before applying every change, so edits are surgical and stale-line errors are gone.

AGENTS.md, README.md and conditional rules are injected into context automatically. Claude Code hooks, commands, skills, agents and MCPs run unchanged. The built-in MCPs (websearch via Exa, context7 for docs, grep_app for GitHub search, lsp) are injected at runtime by the plugin, which is why they do not show up in opencode mcp list (see the MCP docs). Session tools list, read, search and analyze session history.

Goal, the Todo Enforcer, the Comment Checker and Think Mode keep a run on track. bunx oh-my-opencode doctor checks plugin registration, config, models and environment. fallback_models can mix plain model strings with per-fallback object settings in the same array, agent prompts can load from files with file://, and sessions recover from session errors, context window limits and API failures on their own. Agent-model matching is part of the Installation Guide.

Configuration

Opinionated defaults, adjustable if you insist.

See the Configuration Documentation. The short version follows.

Config lives in the user file ~/.omo/omo.jsonc plus walked project .omo/omo.jsonc files up to $HOME; the closest one wins, and legacy oh-my-* files are migrated once into omo.jsonc. JSONC is accepted, comments and trailing commas included. You can override models, temperatures, prompts and permissions for any agent, set concurrency limits for background tasks per provider or model, and turn any of the 54+ lifecycle hooks (61 with Team Mode) off through disabled_hooks.

The main agent orchestrates with the Ultrawork Planner (/ulw-plan) and the Plan Consultant. Delegation goes through categories (visual-engineering, ultrabrain, deep, artistry, quick, unspecified-low, unspecified-high, writing, plus custom names). Built-in skills include playwright (browser automation) and git-master (atomic commits). The built-in MCPs (websearch via Exa, context7, grep_app, lsp) are runtime-injected and not shown in opencode mcp list; LSP support includes the refactoring tools. Experimental options cover aggressive truncation, preemptive compaction, and more.

Author's Note

Want 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. Which model has the sharpest logic? Who's the debugging god? Who writes the best prose? Who dominates frontend, who owns backend, what's fastest for daily driving, what are competitors shipping?

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.

The LazyCodex name is inspired by LazyVim. The Ultragoal and UltraQA ideas come from oh-my-codex, reimplemented from concept for OmO.

99% of this project was built with OpenCode. I don't really know TypeScript, but I personally reviewed and largely rewrote this doc.

Loved by professionals at

Indent, makers of Spray (influencer marketing solution), vovushop (cross-border commerce platform) and vreview (AI commerce review marketing solution). Google. Microsoft. Vercel. ELESTYLE, makers of elepay (multi-mobile payment gateway) and OneQR (mobile application SaaS for cashless solutions). Deepgram.

Special thanks to @junhoyeo for this amazing hero image.