← Blog

How I started working on OMD

Oh My Diff didn't start as a mod platform. It started as CAI, short for "Cheaper AI" (I have a shitty project naming sense ik): a patch set for Codex CLI that I hoped would make agent work cheaper and better (based on research I saw on twitter). This post covers how that turned into "keep Codex, mod everything", and what I learned on the way.

Some thoughts

I've always been interested in figuring out ways to kind of customize Codex into something that is hyper personalized for me, I guess it's the hyper obsessed minecraft modded SMP kid in me that wanted this so much. I just never understood the harness hype too much either. Like with AI, there is so much constant innovation yet it makes no sense why we keep remaking harnesses for a new feature. When we used to play minecraft as kids did we ever just jump ship to another minecraft like game because it had one feature that's different? Maybe you did but not me. Like each harness has its pros and cons, constantly chasing the hype makes me way less efficient if anything. So why don't we just keep the same harness but expose the capability to make mods that alter the harness into something that works for each person's individual workflow.

Funnily enough, as I was working on this and pivoting constantly, Anthropic shipped this into Claude itself (although not as good ofc cause im the goat jk).

In the beginning, I worked on "CAI" as just a rust patch to bring in some features I wanted from our favourite harnesses such as OMP, OMO, prime agent and so on. However the more I worked through it the more I pivoted, why make it just a rust patch that will work for my workflow? Let's make it something the entire community can use and share just like people do for minecraft. Then I pivoted into OMD, basically the fabric loader for minecraft where OMD is the fabric loader and minecraft is codex (in case you missed the last paragraph).

One of the reasons why I even pivoted to what OMD is now

Every feature in the patch was one more thing to carry through each Codex upgrade, and one more opinion that every user got whether they wanted it or not. The features themselves were fine. The trouble was that they were welded to the runtime:

  • You couldn't turn one off without a new build.
  • You couldn't swap in your own version.
  • Every upstream Codex release meant rebasing all of them.

It's the same problem that makes people switch harnesses. When a feature ships inside a tool, getting that feature means adopting the whole tool.

The pivot

On September 16 I changed direction. The product would center on TypeScript mods, and the runtime patch would shrink to the parts that have to be native: loading mods, enforcing permissions, keeping credentials safe and recovering when something breaks.

The next ten days went to that foundation:

  • a mod loader with tools and state;
  • a versioned mod API that opens Codex's native extension points to TypeScript;
  • author tools, compatibility versions and rollback;
  • reproducible, versioned mod packages.

Then I started moving features out of Rust. Coordination policy became TypeScript. Claude models and typed subagent tasks shipped as mods rather than runtime changes. LSP sync was rebuilt as a pure mod. Even the terminal's visual treatment is a mod now.

Deleting my own TUI

My biggest cut was the fullscreen terminal UI I'd built in the first week. Upstream Codex had shipped its own, so I dropped mine and built on theirs instead. The Git sidebar and the terminal styling are now mods that sit on top of the upstream TUI.

Deleting working code hurts, but it's the whole point. Anything upstream already does well, I shouldn't carry. OMD's job is to make Codex moddable. Building a second Codex isn't part of it.

Where it landed

Where I've landed: the host is feature-agnostic, and the mods are the features. OMD Core is only the mod host. OMD+ adds a curated set of first-party mods, and you can switch off or replace any of them.

If you've ever wanted one feature from a new harness without moving your whole setup, that's what this is for. It's still in private development. You can follow along on the changelog, which also has an RSS feed.

I will hopefully make this website somewhere we can share mods just like pi.dev does but I want to ship OMD+ fully. (BTW if you read all this without knowing what OMD+ is you're built different; OMD+ is basically batteries included version with mods that I like whereas OMD Core is just the modding ecosystem.)