Mod the Codex desktop app.
Explodex (Extension plugins for Codex) is an extension SDK for OpenAI's Codex desktop app — color-code your projects, keep usage and reset countdowns on screen, set reasoning effort with a keystroke, or build your own by prompting Codex.
Install in 30 seconds · Included plugins · Build a plugin · Docs
npm install -g explodex
explodexCodex.2026-06-22.17-36-46-small.mp4
Codex is great but closed. Explodex makes it malleable — so the tweak you keep wishing for is something you can just build. (Used BetterDiscord or Legcord? Same idea, for Codex.)
Explodex ships with a handful of plugins — useful on their own, and good starting points to copy when building your own.
💥 Explodex sidebar item opens a settings page where you can enable/disable plugins and change their options.
| Plugin | What it does | Screenshot |
|---|---|---|
| Usage and Reset Glance | Keep usage and credit-reset countdowns on screen — no clicking into menus | ![]() |
| Project Pins | Pin a thread to its project instead of globally, and keep it at the top | ![]() |
| Project Colors | Color-code projects and their threads in the sidebar so you can tell them apart at a glance | ![]() |
| Threads in Command Menu | Find any thread from ⌘K — including threads inside collapsed projects, listed first | ![]() |
| Effort Shortcuts | Set reasoning effort from the composer — type !m or !xh, stripped on send and restored after |
![]() |
| Feature Flags Playground | Toggle Codex's experimental feature flags from Settings — changes persist across restarts | ![]() |
With Explodex you create mods using Codex itself in realtime. Run explodex, and use the bundled skill, describe what you want, and watch it happen in real time. try "it's christmas! add a snowing effect to codex". The plugin-builder skill drives the whole loop (scaffold → SDK hooks → validate → live injection):
explodex-plugin-builder: canonical workflow; uses an existing Explodex renderer when available and works offline when it is not
Install it with explodex install-skill or npx skills add dan-dr/explodex.
The SDK reference and types keep the agent on stable surfaces; the included plugins double as templates.
Prefer to write one by hand? Here's a minimal plugin.
A plugin is a folder with a manifest and an entry script:
my-plugin/
plugin.json
index.js
// @ts-check
/// <reference path="../../sdk/explodex-sdk.d.ts" />
(function (global) {
const Explodex = global.Explodex;
if (!Explodex?.plugins?.register) return;
Explodex.plugins.register(
{ id: "hello", name: "Hello", version: "1.0.0" },
(api) => {
const render = () =>
api.mount("aboveComposer", () =>
api.components.button({
label: "Insert greeting",
color: "secondary",
size: "composerSm",
onClick: () => api.composer.insertText("Hello! "),
}),
);
render();
const stop = api.waitFor("aboveComposer", render);
return () => stop();
},
);
})(window);Install user plugins under ~/.explodex/plugins/ (same layout). They override bundled plugins with the same id. In the sidebar, open 💥 Explodex → Open Plugins Folder to reveal that directory.
See the SDK API reference and the development guide for the full workflow.
You'll need macOS, the Codex desktop app at /Applications/Codex.app, and a package manager (Bun, npm, pnpm, or Yarn).
Install globally, then run explodex:
# pick one
npm install -g explodex
pnpm add -g explodex
bun install -g explodex
yarn global add explodex
explodexYou will be prompted to create ~/Applications/Explodex.app, a lightweight launcher: it does not modify, re-sign, or change the bundle ID of Codex.
The first interactive run also offers to install the plugin creator skill. Re-run both onboarding checks later with explodex doctor.
See docs/installation.md for commands, launch states, recovery, and logs.
To build plugins, clone the repo and run the dev loop:
git clone https://github.com/dan-dr/explodex.git
cd explodex
bun run devbun run dev packages the app, launches Codex with remote debugging, injects the SDK + plugins, and starts Chrome DevTools MCP for live renderer inspection — exactly the loop the agent skills drive. Dev state is isolated under .explodex-user-data/.
Repo layout, the dev loop, validation, and the bun run commands live in docs/development.md.
Explodex creates a thin local launcher (Explodex.app) that starts the unmodified Codex executable with Chrome DevTools Protocol enabled, then injects the npm-packaged SDK and plugins. The SDK (sdk/explodex-sdk.js) provides:
- DOM zones —
aboveComposer,sidebar,composerActions, and more - Components — buttons, panels, toasts styled like Codex
- Bridge — AppServer router and Electron IPC to Codex internals
- Plugin manager — catalog, enable/disable, hot load in dev
Explodex injects locally into Codex's renderer. It never modifies your installed /Applications/Codex.app and runs entirely on your machine. Because it hooks Codex internals, a plugin may need an update when Codex ships a new release — see docs/sdk-fragility.md.
macOS only for now. Not affiliated with, endorsed by, or supported by OpenAI.
| Doc | Contents |
|---|---|
| docs/sdk-api.md | SDK API reference (start here for plugin development) |
| docs/development.md | Repo layout, validation, dev loop, commands |
| docs/installation.md | npm install, launcher states, commands, logs |
| docs/local-development.md | Packaging, user data, plugin paths |
| docs/codex-architecture.md | Bundle topology, injection, IPC |
| docs/composer-message-lifecycle.md | Composer send APIs and hook points |
| docs/sdk-fragility.md | What breaks across Codex updates |
| docs/windows-feasibility.md | Windows feasibility spike; not a support claim |
| docs/plugins/README.md | Bundled plugin notes |





