Run OpenAI Codex Desktop on Intel macOS by converting the official macOS app bundle or DMG into an x86_64 Electron app bundle. Stable and Beta builds are both supported.
This is an unofficial community project. Codex Desktop is a product of OpenAI.
Learn more about Codex: https://openai.com/codex/
The installer:
- Takes a local
.appbundle or extracts the macOS.dmg - Pulls out
app.asar(the Electron app) - Rebuilds native modules (
node-pty,better-sqlite3) for Electron x64 - Disables macOS‑only Sparkle auto‑update
- Downloads Electron v40 for darwin‑x64
- Repackages everything into a runnable app bundle with the same name as the original DMG app, such as
Codex.apporCodex (Beta).app - Applies a small patch so it doesn’t try to connect to a Vite dev server
- Intel Mac (x86_64)
- Node.js 20+ and npm
- Python 3
- Xcode Command Line Tools (
xcode-select --install) - Homebrew (for
p7zipandcurl)
Install dependencies:
brew install p7zip curlYou also need the Codex CLI installed:
npm i -g @openai/codexgit clone https://github.com/<your-user>/codex-intel.git
cd codex-intel
chmod +x install.sh
./install.sh /path/to/Codex*.appOr:
./install.sh /path/to/Codex*.dmgVerbose native rebuild output:
./install.sh -v /path/to/Codex.dmgIf you have the DMG URL, you can pass it directly:
./install.sh https://example.com/Codex*.dmgThe current Beta desktop build is listed in the public beta appcast:
https://persistent.oaistatic.com/codex-app-beta/appcast.xml
Current entry:
Codex (Beta) darwin-arm64 26.317.21539
Because this download is a .zip containing Codex (Beta).app, unzip it first, then point install.sh at the extracted app bundle:
unzip 'Codex (Beta)-darwin-arm64-26.317.21539.zip'
./install.sh './Codex (Beta).app'If you use Codex Automations, you can save the beta refresh workflow as a scheduled task for this repo.
Suggested setup:
- workspace:
codex-intel - schedule: weekdays at
9:00 AM - model:
GPT-5.4 - title:
Update Codex Intel Binary
Suggested prompt:
Help me take a look if there's a new beta release for the codex, download, and convert them so we can update our build.
This works well as a recurring repo maintenance task:
- checks whether a newer Codex Beta build exists
- downloads the current Beta app bundle zip
- runs the local conversion flow in this repo
- lets you review the resulting build/logs before committing any repo changes
For manual installs, install.sh remains the source of truth.
The installer creates:
./codex-app/<original app name>.app
Launch it from Finder or:
./codex-app/Codex.app/Contents/MacOS/Electron --no-sandboxFor Beta builds, that path is typically:
./codex-app/Codex\ \(Beta\).app/Contents/MacOS/Electron --no-sandboxOr use the helper script:
./start.shThis repo now applies a low-power window patch during install.sh:
- forces opaque windows
- disables liquid-glass effects
- applies an aggressive renderer performance patch:
- disables renderer Sentry init
- bypasses Shiki highlight provider wrapper
- disables non-essential telemetry/notification hooks
This reduces idle GPU load on many Intel Macs.
Tradeoffs in aggressive mode:
- desktop notifications/badge updates may be reduced
- some telemetry diagnostics are disabled
- code highlighting behavior may be simpler in chat output
If you already built an app in codex-app/, patch it in place without reinstalling:
./optimize-power.shOptional custom app path:
./optimize-power.sh /path/to/Codex*.app./start.sh launches the newest app bundle under codex-app/, so a fresh Beta install will be picked automatically even if older stable bundles are still present.
- Auto‑update is disabled (Sparkle is macOS‑only and removed).
- The app may show warnings about
url.parsedeprecation — safe to ignore. - The app expects the Codex CLI on your PATH. If you installed it globally, that’s already done.
- During native rebuild, upstream modules can emit compiler warnings; this is expected as long as rebuild finishes with
Rebuild OK. - Native rebuild output is saved under
work/logs/by default (for examplework/logs/rebuild-better-sqlite3.log). - To stream full native rebuild output live, run with
./install.sh -v ...(or setNATIVE_REBUILD_VERBOSE=1).
App opens a blank window
- Make sure the patch applied (installer output should say “patched main.js”).
- If patching fails with a pattern error, use the Codex CLI fallback shown by
install.shto update patch logic ininstall.sh, then rerun the installer.
Native module load error
- Delete
codex-app/and reruninstall.sh.
Compiler warnings during install
- Warnings from
better-sqlite3andnode-ptycan be normal with newer toolchains. - Treat the run as successful if installer output shows
Rebuild OK: better-sqlite3andRebuild OK: node-pty. - If rebuild fails, inspect
work/logs/rebuild-*.log.
Gatekeeper warning
- Right‑click the app → Open (once) to allow it.
This project does not distribute OpenAI software. It automates the same conversion steps a user would perform locally using their own DMG.
MIT