oh-my-openagent
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.
The one and only agent harness for complex codebases. Project memory, planning, execution, and verified completion inside Codex.
$ npx -y skills add code-yeongyu/lazycodex --agent claude-code
Run the curl in your terminal, the rest in Claude Code.
Repo: code-yeongyu/lazycodex
What's inside
[!NOTE] [OmO] 60K Stars: the terrifying token burner has arrived in LazyCodex.
Sisyphus Labs' OmO is the quality-obsessed agent harness whose public lore says it loved Anthropic models hard enough to get third-party clients blocked. Now that same OmO quality bar is available for Codex through LazyCodex.
If you wanted OmO but did not want the setup ceremony, start here:
npx lazycodex-ai installContext: OmO 60K Stars on X
One line. No global install, no npm i -g. Always use npx:
npx lazycodex-ai install
This is shorthand for npx --yes --package oh-my-openagent omo install --platform=codex. For a fully autonomous, no-TUI setup:
npx lazycodex-ai install --no-tui --codex-autonomous
The npx installer above stays the primary path. As an additive, experimental
alternative you can install from inside Codex itself: type /plugins, open the
Add Marketplace tab ("Add a marketplace from a Git repo or local root."),
and enter https://github.com/code-yeongyu/lazycodex, then install omo from
the sisyphuslabs marketplace. Or from the CLI:
codex plugin marketplace add https://github.com/code-yeongyu/lazycodex
codex plugin add omo@sisyphuslabs
On the next launch, approve the omo hooks in Codex's startup review โ hooks
never run before approval. The first approved session prints
LazyCodex bootstrap running in background โ restart the session when it completes
while a background worker finishes the setup (config blocks, agent roles, bin
links, a pinned sg binary for the ast_grep MCP); restart when it is done.
The marketplace path never touches Codex permission settings โ autonomous mode
remains the explicit npx lazycodex-ai install --no-tui --codex-autonomous
choice.
Upgrade with codex plugin marketplace upgrade sisyphuslabs. The next startup
review shows the hooks as Modified โ expected after every upgrade โ
re-approve them and the following session re-runs bootstrap on the new version.
If anything looks pending or degraded, npx lazycodex-ai doctor explains what
and why. Full details: lazycodex.ai/docs.
npx lazycodex-ai doctor
doctor prints the installation health report: plugin cache, hooks, MCP
servers, agents, and config state. Inside Codex, type $ in the composer to
browse every installed skill โ init-deep, ulw-loop, ulw-plan,
start-work, and the rest โ and hooks announce themselves with
LazyCodex(<version>): ... status messages during a session.
npx lazycodex-ai uninstall
Removes the installed plugin cache, bin links, agent roles, and the managed
sections of ~/.codex/config.toml.
LazyCodex installs these as OmO commands for Codex. Invoke them with the
$command syntax shown by the installer.
| Command | Type this | What it does |
|---|---|---|
$ulw-loop | $ulw-loop "task" [--completion-promise=TEXT] [--strategy=reset|continue] | Self-referential loop that runs until Oracle-verified completion. Caps at 500 iterations in ultrawork mode, 100 in normal mode. |
$ulw-plan | $ulw-plan "what to build" | Prometheus strategic planner. Writes a plan to plans/<slug>.md. Never writes product code. |
$start-work | $start-work [plan-name] [--worktree <path>] | Executes a plan until every checkbox is done. Prints ORCHESTRATION COMPLETE. |
Full documentation lives at lazycodex.ai/docs.
LazyCodex should be judged by the features it actually installs. It is the Codex distribution for OmO's agent harness: project memory, planning, execution, verified completion, skills, hooks, model routing, and diagnostics.
$init-deep creates project memory$init-deep generates hierarchical AGENTS.md context. It scores complex
directories, writes local guidance near the code that needs it, and gives future
agents landmarks before they edit. Type $init-deep in the Codex composer โ
the $ prefix is how every installed skill is invoked.
Use it when the repository is too large to explain from memory. Run it again when the shape of the codebase changes.
Use $ulw-plan when the work needs decisions before implementation. It writes a
plan to plans/<slug>.md and does not touch product code.
Use $start-work when a plan is ready. It executes the checklist with durable
Boulder progress and stops only when the plan is complete.
Use $ulw-loop when the task should keep moving until the result is verified by
evidence instead of a hopeful status update.
The command layer stays simple. The skill layer adds specialist judgment for the actual work:
| Feature | Use it for |
|---|---|
$init-deep | Hierarchical project memory through AGENTS.md |
$ulw-plan | Decision-complete planning before code changes |
$start-work | Durable plan execution with Boulder progress |
$ulw-loop | Verified completion for open-ended tasks |
review-work | Multi-angle post-implementation review |
remove-ai-slops | Behavior-preserving cleanup of AI-looking code |
frontend-ui-ux | Polished UI surfaces |
programming | Strict TypeScript, Rust, Python, or Go discipline |
LSP | Diagnostics, definitions, references, symbols, and renames |
AST-grep | Structural search and rewrite across code |
rules | Project instructions from AGENTS, rules, and instruction files |
comment-checker | Feedback after edit-like operations |
LazyCodex installs selectable agent roles into ~/.codex/agents/: explorer,
librarian, plan, momus, metis, and codex-ultrawork-reviewer. Pick one
by passing agent_type to Codex's spawn_agent tool โ the child agent runs
with that role's model and instructions:
spawn_agent({"message": "TASK: map the auth flow end to end.", "agent_type": "explorer"})
The installer exposes agent_type on multi_agent_v2 sessions (Codex hides it
by default). If your Codex build's spawn tool has no agent_type parameter,
describe the role inside message instead โ the skills are written to fall
back to that form automatically.
Start at https://lazycodex.ai.
LazyCodex packages OmO (oh-my-openagent) as the Codex agent harness for complex codebases.
Think LazyVim for lazy.nvim, but for Codex.
OmO is the agent harness: discipline agents, parallel orchestration, multi-model routing, skills, hooks, and verified completion. LazyCodex packages that harness for Codex.
"LazyVim made Neovim usable for the rest of us. LazyCodex does the same for Codex."
Credit: The LazyCodex name idea is inspired by LazyVim. The Ultragoal and UltraQA ideas are inspired by oh-my-codex, reimplemented from concept for this Codex setup.
| Feature | Description |
|---|---|
| ๐ค Discipline Agents | Sisyphus orchestrates Hephaestus, Oracle, Librarian. A full AI dev team |
| ๐ Parallel Execution | Multiple agents working simultaneously on subtasks |
| ๐ฏ Multi-Model Routing | Automatic model selection per task category |
| ๐ ๏ธ Skills System | Extensible skill library for specialized tasks |
| ๐ Hooks & Lifecycle | Pre/post hooks for every agent action |
| ๐ง Zero Config | Sensible defaults, override when you want |
Do not be surprised if an OmO/LazyCodex run shows models like gpt-5.2
with xhigh, gpt-5.4-mini, gpt-5.3-codex, or newer equivalents like
gpt-5.5 with xhigh. That is intentional.
OmO does not blindly spend your best model on every subtask. Its source
defines task categories and fallback chains so the agent can pick the most
appropriate model for the job: quick routes to gpt-5.4-mini for small
edits, ultrabrain uses a high-reasoning GPT model for hard logic, and
agentic coding paths can use Codex-tuned GPT models when available. See
openai-categories.ts
and model-requirements.ts.
The point is quota discipline: use the strongest model when the task needs deep reasoning, use a cheaper/faster model when that is enough, and keep parallel agent work efficient instead of burning premium quota on routine steps. This is benchmark-driven routing, not random model churn:
xhigh.Reference links:
LazyCodex is a thin distribution layer. The core engine is oh-my-openagent (OmO), included as a submodule under src/.
lazycodex/
โโโ src/ โ oh-my-openagent (submodule)
โโโ packages/
โ โโโ web/ โ Next.js 15 + Tailwind v4 + opennextjs-cloudflare
โ (deployed to lazycodex.ai via Cloudflare Workers)
โโโ .github/workflows/ โ web-ci.yml + web-deploy.yml
โโโ README.md
โโโ ...
LazyCodex is part of the omo.dev project. omo in Codex, packaged for the lazy.
LazyCodex is maintained by Jobdori, the AI assistant that builds and ships OmO in real-time.
Meet your own Jobdori, Dori. Learn more at sisyphuslabs.ai.
MIT
.agents/
plugins/
marketplace.json
.github/
assets/
lazycodex-logo.png
omo-icon-light.svg
omo-logo.png
sisyphuslabs.png
REPO_METADATA.md
workflows/
npm-ci.yml
npm-publish.yml
pr-source-guidance.yml
web-ci.yml
web-deploy.yml
.gitignore
.gitmodules
.omo/
evidence/
20260809-readme-light-logo/
qa.md
design-system-components-v3.md
design-system-fidelity-v2.md
v11-consolidation.md
v11-demo-chip.png
v11-full-e2e.txt
v11-heph-loop.png
v11-lighthouse.txt
v11-skills-band.png
v11-slop-report.md
v12-full-e2e.txt
v12-lighthouse.txt
v12-mobile/
v12-mobile-green.txt
v12-mobile-red.txt
after-demo-m375.png
after-demo-m390.png
after-demo-t768.png
demo-m375.png
demo-t768.png
docs-m375-full.png
docs-t768-full.png
landing-m375-full.png
landing-t768-full.png
s0-header.png
s1.png
s10.png
s2.png
s3.png
s4.png
s5.png
s6.png
s7.png
s8.png
s9.png
s99-footer.png
scripts/
design-system-fidelity/
capture-and-drive.mjs
ulw-loop/
evidence/
design-system-components-v3/
capture-report.json
diffs/
docs-desktop-1280x800.json
docs-mobile-390x844.json
docs-tablet-768x1024.json
landing-desktop-1280x800.json
landing-mobile-390x844.json
landing-tablet-768x1024.json
summary.json
screenshots/
control/
docs-desktop-1280x800.png
docs-mobile-390x844.png
docs-tablet-768x1024.png
landing-desktop-1280x800.png
landing-mobile-390x844.png
landing-tablet-768x1024.png
current/
docs-desktop-1280x800.png
docs-mobile-390x844.png
docs-tablet-768x1024.png
landing-desktop-1280x800.png
landing-mobile-390x844.png
landing-tablet-768x1024.png
interactions/
docs-desktop-search-hash-1280x800.png
docs-mobile-menu-open-390x844.png
design-system-fidelity-v2/
capture-report.json
diffs/
docs-desktop-1280x800.json
docs-mobile-390x844.json
docs-tablet-768x1024.json
landing-desktop-1280x800.json
landing-mobile-390x844.json
landing-tablet-768x1024.json
summary.json
screenshots/
control/
docs-desktop-1280x800.png
docs-mobile-390x844.png
docs-tablet-768x1024.png
landing-desktop-1280x800.png
landing-mobile-390x844.png
landing-tablet-768x1024.png
current/
docs-desktop-1280x800.png
docs-mobile-390x844.png
docs-tablet-768x1024.png
landing-desktop-1280x800.png
landing-mobile-390x844.png
landing-tablet-768x1024.png
interactions/
docs-desktop-search-hash-1280x800.png
docs-mobile-menu-open-390x844.png
bin/
lazycodex-ai.js
LICENSE
package-lock.json
package.json
packages/
web/
.gitignore
.mcp.json
AGENTS.md
app/
api/
github-stars/
route.ts
apple-icon.png
docs/
page.tsx
globals.css
icon.svg
layout.tsx
manifest.ts
og-brand-mark.tsx
og-image-theme.ts
opengraph-image.tsx
page.tsx
robots.ts
sitemap.ts
styles/
design-system.css
docs.css
landing.css
ulw-demo-app.css
ulw-demo-panel.css
ulw-demo-transcript.css
ulw-demo.css
twitter-image.tsx
biome.json
components/
design-system/
actions.tsx
brand-mark.tsx
docs-hero.tsx
layout.tsx
surfaces.tsx
typography.tsx
utils.ts
docs/
docs-prev-next.tsx
docs-shell.tsx
docs-sidebar.tsx
docs-toc.tsx
site/
brand-image.tsx
command-card.tsx
command-cards.tsx
copy-button.tsx
docs-cta.tsx
feature-workflows-section.tsx
github-stars-pill.tsx
hephaestus-section.tsx
hero.tsx
install-block.tsx
site-footer.tsx
site-header.tsx
team-mode-section.tsx
ultrawork-section.tsx
ulw-demo/
codex-window.tsx
ulw-demo-section.tsx
window-chrome.tsx
window-icons.tsx
window-panes.tsx
ulw-research-section.tsx
content/
docs/
cli.md
configuration.md
deploy.md
discipline-agents.md
faq.md
getting-started.md
git-workflow.md
hooks-lifecycle.md
init-deep.md
installation.md
manual-qa.md
model-routing.md
overview.md
recommended-environment.md
skills.md
start-work.md
tdd.md
ultrawork.md
ulw-loop.md
ulw-plan.md
DESIGN.md
e2e/
docs.spec.ts
github-stars.spec.ts
home.spec.ts
landing-sections.spec.ts
landing.spec.ts
lighthouse.spec.ts
responsive.spec.ts
seo.spec.ts
ulw-demo.spec.ts
lib/
commands.ts
docs-content.generated.ts
docs-sections.ts
docs-source.ts
github-stars-format.ts
github-stars.ts
site-config.ts
ulw-demo-scenes.ts
next.config.ts
open-next.config.ts
package.json
playwright.config.ts
pnpm-lock.yaml
pnpm-workspace.yaml
postcss.config.mjs
public/
img/
badge-ultrawork.avif
badge-ultrawork.png
badge-ultrawork.webp
scripts/
generate-docs-content.mjs
lighthouse-live.mjs
tsconfig.json
wrangler.toml
plugins/
omo/
.codex-plugin/
plugin.json
.mcp.json
components/
bootstrap/
AGENTS.md
dist/
cli.js
hooks/
hooks.json
manifests/
node.json
package.json
scripts/
bootstrap.ps1
build.mjs
generate-manifests.mjs
node-dispatch.ps1
src/
cli.ts
download.ts
environment.ts
hook.ts
provision.ts
setup.ts
worker.ts
test/
download.test.ts
environment.test.ts
provision.test.ts
tsconfig.json
codegraph/
AGENTS.md
dist/
cli.js
serve.js
LICENSE
NODE-RUNTIME-LICENSES.md
NOTICE
package.json
src/
cache-gc.ts
cli.ts
hook-input.ts
hook-sweep.ts
hook-types.ts
hook.ts
mcp-bridge.ts
mcp-unavailable.ts
post-tool-use-hook.ts
serve-invocation.ts
serve.ts
session-start-command.ts
session-start-cooldown.ts
session-start-hook-runtime.ts
session-start-lock.ts
session-start-outcome.ts
session-start-paths.ts
session-start-project.ts
session-start-worker-result.ts
session-start-worker.ts
sweep-cli.ts
test/
cache-gc.test.ts
hook-exclusion.test.ts
hook-registration.test.ts
hook-session-start-guard.test.ts
hook-store-upgrade.test.ts
hook-sweep.test.ts
hook.test.ts
mcp-bridge-fixtures.ts
package-runtime.test.ts
provisioned-node-guard.test.ts
serve-built-wrapper.test.ts
serve-mcp-bridge-lifecycle.test.ts
serve-mcp-bridge.test.ts
serve-mcp-facade.test.ts
serve-node-support.test.ts
serve-provision.test.ts
serve-unavailable.test.ts
serve.test.ts
session-start-node-support.test.ts
session-start-project.test.ts
session-start-state.test.ts
session-start-trust-boundary.test.ts
session-start-worker-availability.test.ts
session-start-worker-cooldown.test.ts
session-start-worker-flow.test.ts
sweep-cli.test.ts
tsconfig.build.json
tsconfig.json
comment-checker/
.gitattributes
.github/
branch-ruleset.json
CODEOWNERS
dependabot.yml
ISSUE_TEMPLATE/
bug.yml
feature.yml
pull_request_template.md
workflows/
ci.yml
publish.yml
AGENTS.md
biome.json
CHANGELOG.md
dist/
cli.js
hooks/
hooks.json
LICENSE
NOTICE
package.json
README.md
skills/
comment-checker/
SKILL.md
src/
apply-patch.ts
cli.ts
codex-hook.ts
core-values.ts
core.ts
hook-input.ts
request-extractor.ts
runner.ts
types.ts
test/
codex-hook-newline.test.ts
codex-hook.test.ts
core.test.ts
fixtures/
apply-patch-mixed-requests.ts
post-tool-use.json
package-smoke.test.ts
runner.test.ts
tsconfig.build.json
tsconfig.json
vitest.config.ts
git-bash/
git-bash-mcp/
dist/
cli.js
AGENTS.md
dist/
cli.d.ts
cli.js
... 1386 moreYou'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.
The lazy way to run omo inside Claude Code. A native Claude Code plugin marketplace by Sisyphus Labs. What it is ยท Install ยท Components ยท MCP ยท Telemetry ยท omo
FAQ
lazycodex is a Claude Code plugin with 36 hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. It includes comment-checker, lcx-contribute-bug-fix, lcx-doctor. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.