Yeachan-Heo/oh-my-codexPublic

OmX - Oh My codeX: Your codex is not alone. Add hooks, agent teams, HUDs, and so much more.

AI summary: A community-driven collection of plugins, themes, and tweaks for OpenAI's Codex editor integrations.

Stars
32.5K
+49 today
Forks
2.5K
Watchers
77
Open issues
2
Open PRs
0
Contributors
~81
Commits
3.3K
Branches
135

TypeScriptNo licenseCreated Feb 2, 2026Last push todayLatest release v0.20.3+162 stars this week+225 this month

Star history

since Feb 8, 2026
010K20K30KFeb 2026Apr 2026Jun 2026Aug 2026
32.5K stars as of Aug 7, 2026, tracked back to Feb 8, 2026. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulMonWedFri2025-08-02: 0 commits2025-08-03: 0 commits2025-08-04: 0 commits2025-08-05: 0 commits2025-08-06: 0 commits2025-08-07: 0 commits2025-08-08: 0 commits2025-08-09: 0 commits2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 1 commit2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 2 commits2026-02-13: 45 commits2026-02-14: 14 commits2026-02-15: 18 commits2026-02-16: 4 commits2026-02-17: 17 commits2026-02-18: 18 commits2026-02-19: 10 commits2026-02-20: 1 commit2026-02-21: 8 commits2026-02-22: 45 commits2026-02-23: 17 commits2026-02-24: 14 commits2026-02-25: 6 commits2026-02-26: 74 commits2026-02-27: 6 commits2026-02-28: 18 commits2026-03-01: 11 commits2026-03-02: 26 commits2026-03-03: 16 commits2026-03-04: 15 commits2026-03-05: 15 commits2026-03-06: 23 commits2026-03-07: 8 commits2026-03-08: 20 commits2026-03-09: 11 commits2026-03-10: 49 commits2026-03-11: 49 commits2026-03-12: 29 commits2026-03-13: 28 commits2026-03-14: 13 commits2026-03-15: 17 commits2026-03-16: 31 commits2026-03-17: 14 commits2026-03-18: 26 commits2026-03-19: 40 commits2026-03-20: 26 commits2026-03-21: 8 commits2026-03-22: 7 commits2026-03-23: 7 commits2026-03-24: 6 commits2026-03-25: 3 commits2026-03-26: 0 commits2026-03-27: 1 commit2026-03-28: 4 commits2026-03-29: 0 commits2026-03-30: 5 commits2026-03-31: 4 commits2026-04-01: 5 commits2026-04-02: 21 commits2026-04-03: 9 commits2026-04-04: 31 commits2026-04-05: 23 commits2026-04-06: 41 commits2026-04-07: 15 commits2026-04-08: 12 commits2026-04-09: 26 commits2026-04-10: 24 commits2026-04-11: 27 commits2026-04-12: 22 commits2026-04-13: 19 commits2026-04-14: 19 commits2026-04-15: 9 commits2026-04-16: 36 commits2026-04-17: 7 commits2026-04-18: 32 commits2026-04-19: 29 commits2026-04-20: 32 commits2026-04-21: 23 commits2026-04-22: 15 commits2026-04-23: 19 commits2026-04-24: 30 commits2026-04-25: 32 commits2026-04-26: 49 commits2026-04-27: 25 commits2026-04-28: 8 commits2026-04-29: 20 commits2026-04-30: 29 commits2026-05-01: 9 commits2026-05-02: 19 commits2026-05-03: 12 commits2026-05-04: 26 commits2026-05-05: 11 commits2026-05-06: 4 commits2026-05-07: 28 commits2026-05-08: 23 commits2026-05-09: 23 commits2026-05-10: 6 commits2026-05-11: 21 commits2026-05-12: 12 commits2026-05-13: 13 commits2026-05-14: 19 commits2026-05-15: 7 commits2026-05-16: 6 commits2026-05-17: 2 commits2026-05-18: 11 commits2026-05-19: 17 commits2026-05-20: 14 commits2026-05-21: 18 commits2026-05-22: 27 commits2026-05-23: 9 commits2026-05-24: 6 commits2026-05-25: 14 commits2026-05-26: 17 commits2026-05-27: 7 commits2026-05-28: 15 commits2026-05-29: 5 commits2026-05-30: 24 commits2026-05-31: 7 commits2026-06-01: 27 commits2026-06-02: 8 commits2026-06-03: 7 commits2026-06-04: 6 commits2026-06-05: 3 commits2026-06-06: 3 commits2026-06-07: 8 commits2026-06-08: 4 commits2026-06-09: 10 commits2026-06-10: 11 commits2026-06-11: 7 commits2026-06-12: 7 commits2026-06-13: 5 commits2026-06-14: 2 commits2026-06-15: 2 commits2026-06-16: 4 commits2026-06-17: 9 commits2026-06-18: 14 commits2026-06-19: 9 commits2026-06-20: 3 commits2026-06-21: 9 commits2026-06-22: 6 commits2026-06-23: 6 commits2026-06-24: 4 commits2026-06-25: 6 commits2026-06-26: 2 commits2026-06-27: 5 commits2026-06-28: 12 commits2026-06-29: 1 commit2026-06-30: 7 commits2026-07-01: 5 commits2026-07-02: 13 commits2026-07-03: 6 commits2026-07-04: 4 commits2026-07-05: 0 commits2026-07-06: 2 commits2026-07-07: 6 commits2026-07-08: 3 commits2026-07-09: 9 commits2026-07-10: 17 commits2026-07-11: 2 commits2026-07-12: 5 commits2026-07-13: 1 commit2026-07-14: 37 commits2026-07-15: 35 commits2026-07-16: 33 commits2026-07-17: 3 commits2026-07-18: 1 commit2026-07-19: 7 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits
2,347 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    32,500 stars

  • Very active

    2,347 commits in 52 weeks

  • Continuous integration

    Automated checks passing

  • Repeat trending

    9 trending appearances

What oh-my-codex does

Oh-My-Codex is an open-source, community-driven ecosystem designed to enhance and extend integrations of OpenAI's Codex into various code editors. Inspired by frameworks like Oh-My-Zsh, it provides a centralized repository of plugins, themes, custom prompts, and workflow tweaks. It allows users to easily customize how Codex interacts with their development environment, offering tools for better context management, custom snippet generation, and specialized code reviewing. The project aims to democratize the customization of AI coding assistants, enabling developers to share their configurations and productivity hacks to get the most out of LLM-assisted programming.

This project is for developers who heavily use AI coding assistants and want to deeply customize their experience. It requires basic familiarity with code editor configurations and extension management.

  • Plugin ecosystem: Offers a wide variety of community-contributed plugins to extend Codex's functionality in code editors.
  • Custom prompts: Provides a library of optimized prompts for specific tasks like refactoring, writing tests, or generating documentation.
  • Theme support: Allows users to customize the visual appearance of the AI assistant interfaces within their editors.
  • Context management tools: Includes utilities to better manage and feed relevant project context into the language model.
  • Easy installation: Features a simple command-line interface or extension manager to quickly install and update components.
  • Cross-editor compatibility: Aims to support configurations across popular editors like VS Code, Neovim, and JetBrains.

Where teams use it

AI workflow customization

Developers use it to tailor their AI coding assistant to their specific language preferences and project conventions.

Prompt engineering sharing

Teams share highly effective, customized prompts for generating boilerplate or solving specific domain problems.

Enhanced code generation

Users install plugins that better parse their local workspace to provide Codex with superior context for code generation.

Developer productivity

Engineers utilize workflow tweaks to streamline the process of reviewing and accepting AI-generated code suggestions.

Getting started: sh -c "$(curl -fsSL https://raw.githubusercontent.com/Yeachan-Heo/oh-my-codex/main/install.sh)"

README

main branch

oh-my-codex (OMX)

oh-my-codex character
Start Codex stronger, then let OMX add better prompts, workflows, and runtime help when the work grows.

npm version License: MIT Node.js Discord

Website: https://yeachan-heo.github.io/oh-my-codex-website/

Docs: Getting Started · Agents · Skills · Integrations · Demo · OpenClaw guide

Community: Discord — shared OMX/community server for oh-my-codex and related tooling.

Official project and package

The official/original OMX project is this repository, Yeachan-Heo/oh-my-codex, and the official npm package for this project is oh-my-codex. Install this project with npm install -g oh-my-codex (or alongside Codex CLI as shown below).

Third-party projects or forks that use names such as “OMX v2” are not official continuations, replacements, or release lines for this repository unless this README or the docs explicitly say so. When in doubt, trust this repository and the oh-my-codex package as the official install target.

OMX is a workflow layer for OpenAI Codex CLI.

🚨 CAUTION — RECOMMENDED DEFAULT ONLY: macOS or Linux with Codex CLI.

OMX is primarily designed and actively tuned for that path.
Native Windows and Codex App are not the default experience, may break or behave inconsistently, and currently receive less support.

It keeps Codex as the execution engine and makes it easier to:

  • start a stronger Codex session by default
  • run one consistent workflow from clarification to completion
  • invoke the canonical default workflow with $deep-interview, $ralplan, and $ultragoal
  • keep project guidance, plans, logs, and state in .omx/

Core Maintainers

Role Name GitHub
Creator & Lead Yeachan Heo @Yeachan-Heo
Maintainer Doyun Ha @HaD0Yun
Maintainer Valeriy Pavlovich @iqdoctor

Ambassadors

Name GitHub
Sigrid Jin @sigridjineth

Top Collaborators

Name GitHub
Doyun Ha @HaD0Yun
Junho Yeo @junhoyeo
JiHongKim98 @JiHongKim98
Lor @gobylor
HyunjunJeon @HyunjunJeon

Recommended default flow

If you want the default OMX experience, start here:

Choose one install path. If Codex CLI is already installed (Homebrew, npm, or another supported method):

codex --version
npm install -g oh-my-codex
# from the git project you want Codex to edit; choose a task-specific name
omx --worktree=feat/task --madmax --xhigh

If you do not have Codex CLI yet and want npm to manage it:

npm install -g @openai/codex
npm install -g oh-my-codex

Do not run a combined npm install -g @openai/codex oh-my-codex over an existing Homebrew-owned codex binary such as /opt/homebrew/bin/codex; npm may fail with EEXIST when @openai/codex tries to create the same binary. OMX only needs a working, authenticated codex command on PATH; it does not require Codex to be installed through npm.

On a real oh-my-codex version bump, the global npm install now prints an explicit reminder instead of launching setup automatically. When you're ready, run the scoped setup command below or use omx update to check npm and then run the same setup refresh path.

OMX also checks for npm updates at launch on a throttled cadence and prompts before scheduling the update after the current session exits. Set OMX_AUTO_UPDATE=0 to disable the launch-time check, or set OMX_AUTO_UPDATE=defer to schedule the same deferred update without prompting.

Choose the setup scope deliberately:

  • Use omx setup --scope project --merge-agents from the git project you want OMX to operate on when that repository should own the durable AGENTS.md guidance.
  • Use omx setup --scope user for user-level Codex setup when you are not preparing the current directory as an OMX project.
  • Avoid running project-scoped setup from a broad home directory or operating hub unless that directory is intentionally the project under review. A home-level AGENTS.md often contains global safety and routing rules; keep project-specific OMX runtime guidance in the real repository instead.

Persisting an explicit AGENTS merge policy

omx setup --merge-agents, omx setup --no-merge-agents, and omx setup --clear-merge-agents-policy are the only policy selectors; use their bare forms (not =value spellings). Repeating an identical selector is harmless, but mixing set and clear choices fails before setup changes anything. An explicit set overrides a saved policy. A successful explicit set records mergeAgents: true or false in the current working root's ./.omx/setup-scope.json, even when setup scope is user; it never becomes a global user preference or leaks to another root. Later omx update replays a valid matching policy for both immediate and deferred refreshes.

true takes the existing merge branch. false only suppresses that branch: it does not promise preservation, replacement, or any new safety mode, so the existing prompt, skip, managed-refresh, plugin-default, and force behavior still applies. A matching-scope review retains the policy while unrelated settings change. Reset or a scope change removes the inherited policy unless the same setup run explicitly sets true or false; clear always removes the policy and cannot be combined with a set selector. Malformed, unknown, nonboolean, or wrong-scope saved data is ignored safely.

--force is independent and transient: it is neither recorded nor replayed, and does not override an explicit merge policy. Setup atomically commits explicit set or clear intent only after all setup work succeeds, including when active-session or plugin-symlink safeguards skip the current AGENTS.md write, so the next refresh can honor the requested policy. This does not make merge the default or revive the rejected #2892 merge-by-default approach. Older OMX versions safely ignore the field, but may erase it when rewriting their known setup preferences.

Codex plugin install note: this repo also ships an official Codex plugin layout at plugins/oh-my-codex with marketplace metadata in .agents/plugins/marketplace.json. That plugin bundles the mirrored skill surface plus plugin-scoped companion metadata for official Codex lifecycle hooks, optional MCP compatibility servers, and apps. It is still not a replacement for the global oh-my-codex CLI plus scoped setup: plugin-scoped hooks launch the installed omx CLI, legacy setup mode installs native agents and prompts, and plugin setup mode relies on plugin discovery for bundled skills while archiving/removing legacy OMX-managed prompts/native-agent TOMLs so stale role files cannot shadow plugin behavior. Plugin mode still needs a persistent scope AGENTS.md (~/.codex/AGENTS.md for user setup or ./AGENTS.md for project setup) as the durable orchestration guidance layer; session-scoped AGENTS files only compose that durable guidance with runtime overlays and are not a replacement.

Then work normally inside Codex:

# Durable objective/checkpoints for a long task:
/goal Create a safe authentication refactor plan, implement it, and verify login, logout, and refresh-token behavior.

$deep-interview "clarify the authentication change"
$ralplan "approve the auth plan and review tradeoffs"
$prometheus-strict "stress-test the plan before durable execution"
$ultragoal "turn the approved plan into durable Codex goals"

That is the main path. Before you treat the runtime as ready, run the quick-start smoke test below: omx doctor verifies the install shape, while omx exec proves the active Codex runtime can actually authenticate and complete a model call from the current environment. Start OMX strongly, clarify first when needed, approve the plan, optionally use $prometheus-strict for interview-driven plan hardening on high-risk work, then use $ultragoal as the default durable completion wrapper. Use $team inside that execution path only when a specific Ultragoal story needs coordinated parallel work; use $ralph when you intentionally want a single-owner completion loop instead of a durable multi-goal run.

What OMX is for

Use OMX if you already like Codex and want a better day-to-day runtime around it:

  • a standard workflow built around $deep-interview -> $ralplan -> $ultragoal, with $prometheus-strict available when plans need stricter interview/critique/synthesis before execution and optional .omx/plans/prometheus-strict/ artifacts
  • research boundaries: use $best-practice-research for ordinary pre-planning official/upstream evidence, $autoresearch for bounded validator-gated research artifacts, $autoresearch-goal for goal-mode research missions, and feed any research findings into $ralplan for architecture synthesis
  • durable multi-goal handoffs with $ultragoal and .omx/ultragoal artifacts as the default completion path after planning
  • specialist roles and supporting skills when the task needs them
  • project guidance through scoped AGENTS.md
  • durable state under .omx/ for plans, logs, memory, and mode tracking

If you want plain Codex with no extra workflow layer, you probably do not need OMX.

Quick start

Requirements

  • Node.js 20+
  • Codex CLI installed, verified with codex --version, and authenticated (Homebrew or npm are both fine; do not reinstall @openai/codex with npm if Homebrew already owns codex)
  • Codex auth configured and visible in the same shell/profile that will run OMX
  • tmux on macOS/Linux if you want the recommended durable team runtime
  • psmux on native Windows only if you intentionally want the less-supported Windows team path

A good first session

After install, check both boundaries:

omx doctor
codex login status
omx exec --skip-git-repo-check -C . "Reply with exactly OMX-EXEC-OK"

omx doctor catches missing OMX files, hooks, and runtime prerequisites. The real smoke test catches auth, profile, and provider/base-URL problems that only appear when Codex performs an actual request.

Launch OMX the recommended way from a git project:

omx --worktree=feat/task --madmax --xhigh

On macOS/Linux interactive terminals with tmux available, this starts the leader in OMX-managed detached tmux by default so the HUD/runtime panes can be created and recovered. --worktree also moves the launch into a separate git checkout, which is the safer default when using --madmax. Replace feat/task with a branch-like name for the task.

Concurrent standard conversations

A standard launch owns one writable session pointer under its selected OMX_ROOT. A second ordinary omx launch from the same checkout therefore fails closed instead of sharing or silently changing that root. Give each additional conversation an explicit, distinct root:

omx
OMX_ROOT="$HOME/.omx/instances/second-conversation" omx
OMX_ROOT="$HOME/.omx/instances/third-conversation" omx

PowerShell:

$env:OMX_ROOT = "$HOME/.omx/instances/second-conversation"
omx

Command Prompt:

set "OMX_ROOT=%USERPROFILE%\.omx\instances\second-conversation"
omx

User-specified roots are literal: launching twice with the same explicit OMX_ROOT remains a fatal owner conflict. Separate checkouts have separate default roots, while --worktree and --madmax keep their existing isolation behavior.

Madmax and worktree launch safety

--madmax is OMX shorthand for Codex --dangerously-bypass-approvals-and-sandbox. It removes the normal approval and sandbox guardrails, so only use it in trusted repositories and environments. --high and --xhigh are shorthand for -c model_reasoning_effort="high|xhigh"; a normal strong session is omx --madmax --xhigh (or omx --worktree=feat/task --madmax --xhigh from a git project).

When you use --madmax from a git repository, prefer a worktree launch instead of running directly in the current checkout. For repeatable or concurrent work, use a named worktree:

omx --worktree=feature/auth --madmax --xhigh

If you are outside a git repository, omit --worktree; worktree launches require Git.

For concurrent --madmax sessions, do not run them all in the same directory. Give each session its own named worktree:

omx --worktree=feature/auth --madmax --xhigh
omx --worktree=fix/flaky-tests --madmax --xhigh

--worktree / -w with no name creates or reuses a detached launch worktree at ../<repo>.omx-worktrees/launch-detached. --worktree=<name>, --worktree <name>, or -w <name> creates or reuses a named launch worktree under ../<repo>.omx-worktrees/ and checks out that branch name. OMX consumes the worktree flag before starting Codex; it is not forwarded to Codex itself. Treat the unnamed detached form as a one-off convenience: if the source checkout advances after that worktree is created, a later unnamed launch can fail with worktree_target_mismatch because launch-detached still points at the old HEAD. Use a named worktree for repeated work, or remove the old detached worktree before retrying. If the target launch worktree is already dirty, OMX warns and launches as-is, so clean, commit, or stash that worktree before relying on it for isolation.

For omx team, workers already use dedicated worktrees automatically by default; --worktree on omx team is only a legacy-compatible override.

Repo-aware tools receive the same canonical context in launch, team-worker, and autoresearch runtimes: OMX_REPO_ROOT, OMX_WORKTREE_ROOT, OMX_GIT_COMMON_DIR, OMX_WORKTREE_SCOPE, OMX_CODEGRAPH_MODE, and OMX_CODEGRAPH_PROJECT_PATH. OMX_CODEGRAPH_MODE=auto prefers a worktree-local .codegraph/codegraph.db, then a leader/repo .codegraph/codegraph.db, otherwise resolves to off. Explicit shared, local, and off are honored. OMX does not install CodeGraph, auto-index worktrees, or copy/symlink .codegraph; shared leader indexes are useful for baseline navigation but are not branch-accurate for worktree-only changes.

If you want a one-off launch with no OMX tmux/HUD management, use --direct:

omx --direct --yolo

For a persistent shell/profile preference, set an environment policy:

OMX_LAUNCH_POLICY=direct omx --yolo

Return to the auto/default behavior with:

unset OMX_LAUNCH_POLICY

CLI policy flags win over the environment, and the last CLI policy flag before -- wins:

OMX_LAUNCH_POLICY=direct omx --tmux --yolo

Use OMX_LAUNCH_POLICY=direct|tmux|detached-tmux|auto. This iteration only adds CLI and environment controls; it intentionally does not add a config-file setting. If you run --direct from inside an existing tmux pane, OMX will not create HUD splits, enable mouse mode, or wrap extended-key handling, but the process still runs inside that already-open terminal pane.

Then try the canonical workflow:

# Copy/pasteable durable-goal example:
/goal Ship the checkout bug fix with a durable objective, checkpoints for reproduction, implementation, regression tests, and final verification.

$ralplan "approve the checkout bug-fix plan and review tradeoffs"
$ultrawork "execute the approved checkout fix with checkpoint evidence"

Use $team when an active Ultragoal story needs coordinated parallel work, or $ralph when one persistent owner should keep pushing to completion without a multi-goal ledger.

/goal and skill selection

Start a normal strong session with omx --madmax --xhigh (or add --worktree=<task> in a git repo). Inside that session, pick the execution spine that matches the work: $autopilot for the full supervised planning-to-execution loop, $ultrawork when you want durable checkpointed execution, or $ralph when one persistent owner should keep pushing to completion. Use /goal when the task itself needs a durable objective/checkpoint structure that Codex should keep reconciling across turns.

Add only 2-5 relevant skills by default. More skills are allowed when the task scope justifies them, but loading a large catalog is usually a context-budget and attention-quality problem, not a hard parser/runtime blocker. Treat it as a concrete runtime blocker only when a command actually errors.

Anti-pattern:

omx --madmax --xhigh
# Then immediately load 20 skills "just in case" before stating the task.
# This bloats session context and makes the model spend attention on irrelevant workflows.

A simple mental model

OMX does not replace Codex.

It adds a better working layer around it:

  • Codex does the actual agent work
  • OMX role keywords make useful roles reusable
  • OMX skills make common workflows reusable
  • .omx/ stores plans, logs, memory, and runtime state

Most users should think of OMX as better task routing + better workflow + better runtime, not as a command surface to operate manually all day.

Start here if you are new

  1. If Codex CLI already exists, verify it with codex --version and install or update OMX with npm install -g oh-my-codex; otherwise install @openai/codex separately first if you want npm to manage Codex
  2. After install or real OMX version bumps, run omx setup --scope project --merge-agents from the target git project or omx setup --scope user for user-level Codex setup, or use omx update when you also want npm to check for and install the latest build before refreshing setup
  3. Run omx doctor
  4. Run a real execution smoke test: codex login status and omx exec --skip-git-repo-check -C . "Reply with exactly OMX-EXEC-OK"
  5. Launch with a named worktree from a git repo, for example omx --worktree=feat/task --madmax --xhigh; if you run concurrent --madmax sessions, use distinct named worktrees such as --worktree=feature/auth
  6. Use $deep-interview "..." when the request or boundaries are still unclear
  7. Use $ralplan "..." to approve the plan and review tradeoffs
  8. Use $ultragoal, $ultrawork, $autopilot, or $ralph when the task needs an execution spine; add /goal when durable objective/checkpoint structure should be explicit

Recommended workflow

  1. $deep-interview — clarify scope when the request or boundaries are still vague.
  2. $ralplan — turn that clarified scope into an approved architecture and implementation plan.
  3. $ultragoal — make the approved plan durable as sequential Codex goals with .omx/ultragoal ledger checkpoints.

$ralplan stops at planning artifacts and a durable consensus handoff. Code changes require an explicit execution lane ($ultragoal, $team, or an intentional $ralph fallback); ralplan does not implement directly.

Inside an Ultragoal story, use $team only when that story benefits from coordinated parallel execution. Use $ralph as an intentional alternate completion loop when you do not need a durable multi-goal ledger.

Common in-session surfaces

Surface Use it for
$deep-interview "..." clarifying intent, boundaries, and non-goals
$ralplan "..." approving the implementation plan and tradeoffs
$ultragoal "..." durable multi-goal completion after the approved plan
$ralph "..." persistent completion and verification loops
$team "..." coordinated parallel execution when the work is big enough
/skills browsing installed skills and supporting helpers
/goal ... durable objective/checkpoint structure for tasks that must reconcile progress across turns
omx mission <file> sequential prompt/checklist batch runs through omx exec, with .omx/missions/<slug>/summary.json and ledger.jsonl operator artifacts

Advanced / operator surfaces

These are useful, but they are not the main onboarding path.

Mission queue runner

Use omx mission when you have a short checklist of OmX/Codex prompts that should run one after another instead of opening a separate shell command for each prompt. Start with omx mission plan ./mission.md or omx mission ./mission.md --dry-run to validate parsing and inspect the durable summary, then run omx mission run ./mission.md -- --model gpt-5 when the prompts are ready. Interrupted runs can be inspected with omx mission status ./mission.md, continued with omx mission resume ./mission.md, operator-blocked with omx mission mark ./mission.md --task task-002 --status blocked, and repaired task-by-task with omx mission rerun ./mission.md --task task-002. See docs/mission.md for input format, status output, and artifact details.

Team runtime

Use the team runtime when you specifically need durable tmux/worktree coordination, not as the default way to begin using OMX. In Codex App or plain outside-tmux sessions, treat omx team as a tmux-runtime shell surface rather than a directly available in-app workflow; launch OMX CLI from shell first if you actually want team execution.

When Team runs inside an Ultragoal story, Ultragoal remains leader-owned state: workers report checkpoint-ready evidence upward instead of mutating .omx/ultragoal directly. Team startup tolerates stale or malformed Ultragoal artifacts for unrelated work, but explicitly Ultragoal-linked Team launches stay fail-closed. Team startup also writes .omx/state/team/<team-name>/preflight-context.json so large Team runs can be resumed after compaction with the original task, worker split, Ultragoal context, and verification checklist.

For very small atomic work, Team may cap implicit fanout to one worker and print an over-orchestration warning; pass an explicit worker count only when the extra coordination cost is intentional.

omx team 3:executor "fix the failing tests with verification"
omx team status <team-name>
omx team resume <team-name>
omx team shutdown <team-name>

Setup, doctor, and HUD

These are operator/support surfaces:

  • Codex plugin marketplace install/discovery can cache the plugin under ${CODEX_HOME:-~/.codex}/plugins/cache/$MARKETPLACE_NAME/oh-my-codex/$VERSION/ (local installs may use local as the version identifier); that packaged plugin includes plugin-scoped companion metadata for official Codex lifecycle hooks, optional MCP compatibility servers, and apps (MCP/apps disabled by default), so it is still paired with the installed omx CLI for runtime execution
  • Scoped setup installs prompts, skills, AGENTS scaffolding, .codex/config.toml, and (for legacy installs or older Codex without plugin_hooks) OMX-managed native Codex hooks in .codex/hooks.json
    • setup refresh preserves non-OMX hook entries in .codex/hooks.json and only rewrites OMX-managed wrappers
    • plugin setup keeps AGENTS.md as persistent durable guidance even though bundled skills/hooks come from the plugin cache; omx doctor treats a missing persistent scope AGENTS.md in plugin mode as a failed check because the session-scoped AGENTS file would otherwise contain only runtime overlay guidance
    • omx setup --merge-agents preserves existing project AGENTS.md guidance while inserting or refreshing generated OMX sections between <!-- OMX:AGENTS:START --> / <!-- OMX:AGENTS:END -->; --no-merge-agents records an explicit contextual non-merge choice, and --clear-merge-agents-policy always removes the recorded choice and cannot combine with a set selector. The policy is stored per working root (even for user scope), replayed by immediate and deferred updates only when its saved scope is valid and matches, and is never a force/default policy.
    • omx uninstall removes OMX-managed wrappers from .codex/hooks.json but keeps the file when user hooks remain
  • omx update checks npm immediately, installs the newest global OMX build, then reruns the same interactive setup refresh path
  • launch-time update checks are throttled and prompt by default; use OMX_AUTO_UPDATE=0 to disable them or OMX_AUTO_UPDATE=defer to schedule deferred updates without a prompt
  • fresh OMX-managed gpt-5.6-sol config seeding now recommends model_context_window = 250000 and model_auto_compact_token_limit = 200000, but only when those keys are missing
  • .omx-config.json model/env routing is documented in the model/env routing reference; only edit keys supported by your installed OMX version
  • omx doctor verifies the install when something seems wrong; it does not prove that the active Codex profile can make an authenticated model call
  • omx hud --watch is a monitoring/status surface, not the primary user workflow

For non-team sessions, native Codex hooks are now the canonical lifecycle surface:

  • plugins/oh-my-codex/hooks/hooks.json = official plugin-scoped hook registrations for plugin installs
  • .codex/hooks.json = legacy/fallback native Codex hook registrations preserved for legacy installs and older Codex versions
  • .omx/hooks/*.mjs = OMX plugin hooks
  • omx tmux-hook / notify-hook / derived watcher = tmux + runtime fallback paths

See Codex native hook mapping for the current native / fallback matrix.

Troubleshooting false-green readiness

A green omx doctor means the install and local runtime wiring look sane. If real execution still fails, check the environment Codex actually uses:

  • Run codex login status and omx exec --skip-git-repo-check -C . "Reply with exactly OMX-EXEC-OK" from the same shell/profile that will launch OMX.
  • In custom HOME, profile, container, or service shells, confirm the active ~/.codex (or CODEX_HOME) is the one with the expected auth and config. Do not assume your normal user ~/.codex is visible there.
  • If you depend on a local OpenAI-compatible proxy, confirm the active ~/.codex/config.toml includes the expected openai_base_url; otherwise a proxy-issued key can be sent to the default endpoint and fail with 401 Unauthorized, Missing bearer or basic authentication in header, or Incorrect API key provided.
  • If omx doctor --team or resume reports a stale team such as resume_blocker or a missing tmux session, clean the dead runtime state before retrying:
omx team shutdown <team-name> --force --confirm-issues
omx cancel
omx doctor --team

Only use the forced team shutdown for a team you have confirmed is dead or intentionally abandoned.

If Shift+Enter still submits instead of inserting a newline inside an OMX-managed tmux session, see Troubleshooting execution readiness. Current OMX already enables tmux extended-key forwarding around its own Codex launch paths, so a persistent failure is usually a tmux terminal-capability/discoverability problem rather than a net-new OMX feature gap.

Sparkshell

  • omx sparkshell <command> is for shell-native inspection and bounded verification
  • for read-only repository lookups, use normal Codex repository inspection tools/subagents (the deprecated omx explore command has been removed)
  • sparkshell env overrides are intentionally narrow: OMX_SPARKSHELL_BIN selects a native sidecar path, OMX_SPARKSHELL_MODEL selects the primary summary model, OMX_SPARKSHELL_FALLBACK_MODEL selects the retry model, OMX_SPARKSHELL_MODEL_INSTRUCTIONS_FILE selects summary instructions, and OMX_SPARKSHELL_SUMMARY_TIMEOUT_MS controls the local API summary timeout

Examples:

omx sparkshell git status
omx sparkshell --tmux-pane %12 --tail-lines 400

Wiki

  • omx wiki is the CLI-first JSON surface for wiki operations; omx_wiki MCP is explicit compatibility only
  • wiki data lives as repository project knowledge under omx_wiki/
  • the wiki is markdown-first and search-first, not vector-first

Examples:

omx wiki list --json
omx wiki query --input '{"query":"session-start lifecycle"}' --json
omx wiki lint --json
omx wiki refresh --json

Platform notes for team mode

omx team works best on macOS/Linux with tmux. Native Windows remains a secondary path, and WSL2 is generally the better choice if you want a Windows-hosted setup. On native Windows, OMX accepts psmux as the tmux-compatible binary for the existing tmux-backed paths it already uses.

Platform Install
macOS brew install tmux
Ubuntu/Debian sudo apt install tmux
Fedora sudo dnf install tmux
Arch sudo pacman -S tmux
Windows winget install psmux
Windows (WSL2) sudo apt install tmux

Known issues

Intel Mac: high syspolicyd / trustd CPU during startup

On some Intel Macs, OMX startup — especially with --madmax --high — can spike syspolicyd / trustd CPU usage while macOS Gatekeeper validates many concurrent process launches.

If this happens, try:

  • xattr -dr com.apple.quarantine $(which omx)
  • adding your terminal app to the Developer Tools allowlist in macOS Security settings
  • using lower concurrency (for example, avoid --madmax --high)

Documentation

Languages

Contributors

Role Name GitHub
Creator & Lead Yeachan Heo @Yeachan-Heo
Maintainer Doyun Ha @HaD0Yun
Maintainer Valeriy Pavlovich @iqdoctor

Star History

Star History Chart

License

MIT

GEO visibility benchmark

OmX includes a geobench product spec for measuring LLM hit rate, MRR, share of voice, and citations.

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

129 total
  1. v0.20.3v0.20.3Jul 19, 2026543 downloads

    # oh-my-codex v0.20.3 `0.20.3` is a patch release for the reliability and workflow-safety work in the exact range `v0.20.2..f967cfed64ec57614af136f75d7cb81509808f7e`, plus one additive, backward-compatible feature. ## Highlights - Reasoning effort can be capped per agent through the team model contract (#3143). - Team validates exact live tmux panes before explicit lifecycle effects and preserves pane ownership through startup, scaling, rollback, recovery, and teardown, with durable failure-atomic membership/scaling transactions and pane-pid-bound notify dispatch (#3153; issue #3121). - Ralplan requires strict direct review order, fails closed without documented leader proof, attests the reconciled leader in `PreToolUse`, and resolves the App leader-proof regression by parsing collaboration results structurally (#3186, #3196, #3187, #3218; issues #3194, #3181, #3204). - Team mailbox wakeups are coalesced with every wake acknowledged (#3217; issue #3195), and exact session pointer lock recovery is added (#3215; issue #3203). - Native child write identity is hardened across the native hook, code-intel, and wiki MCP surfaces (#3135; issue #3127), and the configuration generator rec

  2. v0.20.2v0.20.2Jul 16, 20261.3K downloads

    # oh-my-codex v0.20.2 `0.20.2` is a patch release for the reliability and workflow-safety work in the exact range `v0.20.1..f5e4753135ebc86342e7353300ac3ec5d9ae3d8d`. ## Highlights - Authenticated fresh App leaders can bootstrap Ralplan role intent in-turn through durable, fail-closed leader attestation and atomic recovery (#3184; issue #3181). - Native `spawn_agent` role routing is surface-aware; adapted-role tracker/marker binding is transactional, recoverable, and protected by cross-process lock cleanup (#3152, #3166; issue #3118). Native subagents can stop without a generic auto-nudge (#3180). - Prompt/session provenance is isolated across concurrent chats, fallback notifications are deduplicated across processes, and canonical Ralplan state rejects ambiguous session aliases (#3168, #3165, #3158). - Setup preserves explicit `AGENTS.md` merge policy, Team honors an explicit worker policy, and stale foreign state-transition mirrors are ignored (#3164, #3136, #3172). ## Additional fixes - Explicit prompt-leading workflow invocation prevents accidental activation from quoted, negated, documented, malformed, or other non-invocation mentions (#3140; issue #3133). - Authenticated

  3. v0.20.1v0.20.1Jul 12, 20261.3K downloads

    # oh-my-codex v0.20.1 `0.20.1` is a patch release for the reliability fixes in `v0.20.0..9eadab9f191103177fb3eac1b237188ada1f503c`. ## Highlights - CRLF-safe generated `AGENTS.md` marker insertion (#3107). - Ralplan can write normalized direct-child Markdown draft artifacts under `.omx/drafts/` without relaxing the native planning-write boundary (#3110). - Fresh setup stops seeding legacy multi-agent and context-window defaults, leaving user-owned configuration and native role routing intact (#3111, #3115). - Stop hook responses remain schema-safe (#3114). - Conductor execution recognizes trusted delegated collaboration-child provenance while protecting leader and planning-boundary cases (#3117; issue #3116). - Native delegation detection handles incomplete capability inventories safely, and quoted Bash argument values no longer misparse as write targets (#3120; issue #3119). ## Merged PRs since v0.20.0 #3107 (CRLF generated AGENTS marker insertion), #3110 (Ralplan Markdown draft artifact writes), #3111 (legacy multi-agent default seeding), #3114 (schema-safe Stop responses), #3115 (legacy context-default seeding), #3117 (delegated collaboration-child provenance; issue #3116),

  4. v0.20.0v0.20.0Jul 10, 2026940 downloads

    # oh-my-codex v0.20.0 `0.20.0` migrates the entire OMX model contract to OpenAI's GPT-5.6 generation (Sol/Terra/Luna) and rolls up the dev-branch fixes and features merged since `0.19.1`. ## Highlights - Frontier lane `gpt-5.6-sol`, standard lane `gpt-5.6-terra`, spark lane `gpt-5.6-luna` across runtime, agents, Rust crates, docs, prompts, skills, and the plugin mirror. - Planner/architect exact `gpt-5.6-sol` pins (medium/xhigh); researcher exact `gpt-5.6-terra`; fast lanes on `gpt-5.6-luna`. - Exact-model composition seam retargeted to `gpt-5.6-terra` with final-resolved-model precedence. - Setup offers prompt-gated upgrades from legacy `gpt-5.3-codex` / `gpt-5.5` to `gpt-5.6-sol`. - Autopilot classifies canonical Terra/Luna as cheap planning lanes. - Doctor reports accurate Spark model sources including `models.team_low_complexity`. - New `omx capabilities lock`/`check` CLI providing a manual capabilities-lockfile preflight command (#3087). - Project setup defaults to plugin mode with plugin cache (#3085); plugin hooks gated to omx-launched sessions (#3086); resume plugin preflight opt-in (#3088). - Persisted subagents reopen on SessionStart (#3099); canonical worktree tool co

  5. v0.19.1v0.19.1Jul 8, 2026761 downloads

    # oh-my-codex v0.19.1 `0.19.1` is a patch release after `0.19.0` focused on Ultragoal/Ralplan terminal-state reliability, direct Team state roots, mission queue execution, and dependency hygiene. ## Highlights - Repair Ultragoal conductor provenance and task-scoped aggregate completion state (#3074, #3072). - Handle invalid mission summary JSON without breaking release/runtime flows (#3070). - Fix Ralplan terminalization tracker lag and terminal Stop cache loops (#3068, #3058). - Fix state roots for direct Team state directory usage (#3062). - Add the mission queue runner MVP (#3063). - Refresh dev dependencies: @types/node 26.1.0 and @biomejs/biome 2.5.2 (#3065, #3066). - Avoid stale catalog counts in the contributing guide (#3069). ## Compatibility No breaking CLI, package, plugin-layout, native asset, or configuration changes are intended. ## Validation Release validation is based on the green dev CI for `59a9cb80`, local build/package checks before tagging, main promotion CI, and the tag-triggered GitHub release workflow. ## Contributors Thanks to bellman, [@dependabot[bot]](https://github.com/apps/dependabot), [@ev78394](https://github.com/ev78394), [@saime428](https:

Code frequency

additions and deletions
+116.5K-116.5KWeek of 2026-02-01: +15 linesWeek of 2026-02-01: -0 linesWeek of 2026-02-08: +38,535 linesWeek of 2026-02-08: -6,233 linesWeek of 2026-02-15: +19,495 linesWeek of 2026-02-15: -5,457 linesWeek of 2026-02-22: +34,360 linesWeek of 2026-02-22: -6,723 linesWeek of 2026-03-01: +32,631 linesWeek of 2026-03-01: -9,953 linesWeek of 2026-03-08: +64,634 linesWeek of 2026-03-08: -27,679 linesWeek of 2026-03-15: +42,734 linesWeek of 2026-03-15: -25,339 linesWeek of 2026-03-22: +4,803 linesWeek of 2026-03-22: -804 linesWeek of 2026-03-29: +15,568 linesWeek of 2026-03-29: -8,341 linesWeek of 2026-04-05: +44,302 linesWeek of 2026-04-05: -17,243 linesWeek of 2026-04-12: +34,094 linesWeek of 2026-04-12: -5,584 linesWeek of 2026-04-19: +43,029 linesWeek of 2026-04-19: -14,613 linesWeek of 2026-04-26: +32,459 linesWeek of 2026-04-26: -10,856 linesWeek of 2026-05-03: +30,728 linesWeek of 2026-05-03: -4,929 linesWeek of 2026-05-10: +26,009 linesWeek of 2026-05-10: -9,523 linesWeek of 2026-05-17: +20,434 linesWeek of 2026-05-17: -2,486 linesWeek of 2026-05-24: +22,688 linesWeek of 2026-05-24: -1,365 linesWeek of 2026-05-31: +16,195 linesWeek of 2026-05-31: -1,779 linesWeek of 2026-06-07: +14,328 linesWeek of 2026-06-07: -3,462 linesWeek of 2026-06-14: +12,735 linesWeek of 2026-06-14: -1,139 linesWeek of 2026-06-21: +8,555 linesWeek of 2026-06-21: -470 linesWeek of 2026-06-28: +17,348 linesWeek of 2026-06-28: -1,292 linesWeek of 2026-07-05: +10,755 linesWeek of 2026-07-05: -1,277 linesWeek of 2026-07-12: +116,533 linesWeek of 2026-07-12: -37,562 linesWeek of 2026-07-19: +4,133 linesWeek of 2026-07-19: -321 linesWeek of 2026-07-26: +0 linesWeek of 2026-07-26: -0 linesFeb 1, 2026Jul 26, 2026
+707.1K lines added, -204.4K removed over the last year.

Commits per week

last 52 weeks
1990Week of 2025-08-02: 0 commitsWeek of 2025-08-09: 0 commitsWeek of 2025-08-16: 0 commitsWeek of 2025-08-23: 0 commitsWeek of 2025-08-30: 0 commitsWeek of 2025-09-06: 0 commitsWeek of 2025-09-13: 0 commitsWeek of 2025-09-20: 0 commitsWeek of 2025-09-27: 0 commitsWeek of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 1 commitsWeek of 2026-02-08: 61 commitsWeek of 2026-02-15: 76 commitsWeek of 2026-02-22: 180 commitsWeek of 2026-03-01: 114 commitsWeek of 2026-03-08: 199 commitsWeek of 2026-03-15: 162 commitsWeek of 2026-03-22: 28 commitsWeek of 2026-03-29: 75 commitsWeek of 2026-04-05: 168 commitsWeek of 2026-04-12: 144 commitsWeek of 2026-04-19: 180 commitsWeek of 2026-04-26: 159 commitsWeek of 2026-05-03: 127 commitsWeek of 2026-05-10: 84 commitsWeek of 2026-05-17: 98 commitsWeek of 2026-05-24: 88 commitsWeek of 2026-05-31: 61 commitsWeek of 2026-06-07: 52 commitsWeek of 2026-06-14: 43 commitsWeek of 2026-06-21: 38 commitsWeek of 2026-06-28: 48 commitsWeek of 2026-07-05: 39 commitsWeek of 2026-07-12: 115 commitsWeek of 2026-07-19: 7 commitsWeek of 2026-07-26: 0 commitsAug 2, 2025Jul 26, 2026
2.3K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 8 commitsSun 1:00 — 12 commitsSun 2:00 — 8 commitsSun 3:00 — 7 commitsSun 4:00 — 8 commitsSun 5:00 — 6 commitsSun 6:00 — 14 commitsSun 7:00 — 19 commitsSun 8:00 — 14 commitsSun 9:00 — 9 commitsSun 10:00 — 37 commitsSun 11:00 — 22 commitsSun 12:00 — 13 commitsSun 13:00 — 10 commitsSun 14:00 — 8 commitsSun 15:00 — 6 commitsSun 16:00 — 12 commitsSun 17:00 — 24 commitsSun 18:00 — 16 commitsSun 19:00 — 25 commitsSun 20:00 — 7 commitsSun 21:00 — 7 commitsSun 22:00 — 13 commitsSun 23:00 — 13 commitsMon 0:00 — 12 commitsMon 1:00 — 14 commitsMon 2:00 — 10 commitsMon 3:00 — 12 commitsMon 4:00 — 18 commitsMon 5:00 — 12 commitsMon 6:00 — 10 commitsMon 7:00 — 10 commitsMon 8:00 — 28 commitsMon 9:00 — 24 commitsMon 10:00 — 17 commitsMon 11:00 — 10 commitsMon 12:00 — 13 commitsMon 13:00 — 24 commitsMon 14:00 — 19 commitsMon 15:00 — 27 commitsMon 16:00 — 11 commitsMon 17:00 — 15 commitsMon 18:00 — 11 commitsMon 19:00 — 7 commitsMon 20:00 — 9 commitsMon 21:00 — 26 commitsMon 22:00 — 9 commitsMon 23:00 — 10 commitsTue 0:00 — 20 commitsTue 1:00 — 13 commitsTue 2:00 — 6 commitsTue 3:00 — 14 commitsTue 4:00 — 16 commitsTue 5:00 — 5 commitsTue 6:00 — 2 commitsTue 7:00 — 8 commitsTue 8:00 — 6 commitsTue 9:00 — 7 commitsTue 10:00 — 12 commitsTue 11:00 — 23 commitsTue 12:00 — 7 commitsTue 13:00 — 26 commitsTue 14:00 — 32 commitsTue 15:00 — 20 commitsTue 16:00 — 21 commitsTue 17:00 — 17 commitsTue 18:00 — 23 commitsTue 19:00 — 6 commitsTue 20:00 — 10 commitsTue 21:00 — 20 commitsTue 22:00 — 13 commitsTue 23:00 — 6 commitsWed 0:00 — 10 commitsWed 1:00 — 15 commitsWed 2:00 — 13 commitsWed 3:00 — 17 commitsWed 4:00 — 8 commitsWed 5:00 — 7 commitsWed 6:00 — 7 commitsWed 7:00 — 13 commitsWed 8:00 — 14 commitsWed 9:00 — 20 commitsWed 10:00 — 23 commitsWed 11:00 — 23 commitsWed 12:00 — 12 commitsWed 13:00 — 7 commitsWed 14:00 — 13 commitsWed 15:00 — 7 commitsWed 16:00 — 17 commitsWed 17:00 — 9 commitsWed 18:00 — 9 commitsWed 19:00 — 14 commitsWed 20:00 — 5 commitsWed 21:00 — 11 commitsWed 22:00 — 7 commitsWed 23:00 — 11 commitsThu 0:00 — 20 commitsThu 1:00 — 22 commitsThu 2:00 — 30 commitsThu 3:00 — 24 commitsThu 4:00 — 14 commitsThu 5:00 — 17 commitsThu 6:00 — 17 commitsThu 7:00 — 26 commitsThu 8:00 — 16 commitsThu 9:00 — 14 commitsThu 10:00 — 34 commitsThu 11:00 — 46 commitsThu 12:00 — 26 commitsThu 13:00 — 13 commitsThu 14:00 — 25 commitsThu 15:00 — 20 commitsThu 16:00 — 14 commitsThu 17:00 — 27 commitsThu 18:00 — 9 commitsThu 19:00 — 11 commitsThu 20:00 — 12 commitsThu 21:00 — 20 commitsThu 22:00 — 12 commitsThu 23:00 — 17 commitsFri 0:00 — 17 commitsFri 1:00 — 24 commitsFri 2:00 — 30 commitsFri 3:00 — 28 commitsFri 4:00 — 22 commitsFri 5:00 — 10 commitsFri 6:00 — 7 commitsFri 7:00 — 15 commitsFri 8:00 — 20 commitsFri 9:00 — 13 commitsFri 10:00 — 20 commitsFri 11:00 — 15 commitsFri 12:00 — 21 commitsFri 13:00 — 18 commitsFri 14:00 — 16 commitsFri 15:00 — 9 commitsFri 16:00 — 14 commitsFri 17:00 — 8 commitsFri 18:00 — 4 commitsFri 19:00 — 8 commitsFri 20:00 — 7 commitsFri 21:00 — 4 commitsFri 22:00 — 2 commitsFri 23:00 — 7 commitsSat 0:00 — 16 commitsSat 1:00 — 9 commitsSat 2:00 — 9 commitsSat 3:00 — 7 commitsSat 4:00 — 6 commitsSat 5:00 — 7 commitsSat 6:00 — 9 commitsSat 7:00 — 10 commitsSat 8:00 — 16 commitsSat 9:00 — 9 commitsSat 10:00 — 10 commitsSat 11:00 — 9 commitsSat 12:00 — 22 commitsSat 13:00 — 32 commitsSat 14:00 — 8 commitsSat 15:00 — 19 commitsSat 16:00 — 28 commitsSat 17:00 — 18 commitsSat 18:00 — 14 commitsSat 19:00 — 13 commitsSat 20:00 — 12 commitsSat 21:00 — 10 commitsSat 22:00 — 7 commitsSat 23:00 — 9 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits2,405 (74%)
Community commits852 (26%)

3,257 commits in total over the last year.

DateListRankStars gained
Apr 9, 2026daily#24+149
Apr 8, 2026daily#20+152
Apr 6, 2026daily#20+177
Apr 5, 2026daily#19+262
Apr 4, 2026daily#6+426
Apr 3, 2026daily#5+582
Apr 2, 2026daily#5+512
Apr 1, 2026daily#6+462
Mar 31, 2026daily#23+141
  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    453.6K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    385.5K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • anomalyco/opencode

    The open source coding agent.

    194.7K stars · TypeScript