This repo repackages the published Codex desktop app for Linux amd64/x64 (including Ubuntu and Arch-based distros such as CachyOS). It reads the live OpenAI appcast feed, downloads the selected upstream build, swaps in a Linux Electron runtime, rebuilds the native modules for Linux, installs stable and beta side by side, and creates user-local desktop entries.
Current upstream feed heads checked on April 7, 2026:
- Stable:
26.325.31654build1272 - Beta:
26.401.11717build1329
Before using this project, run npm install in the repository root.
Install these distro packages before the first installer run:
| Requirement | Ubuntu/Debian | Arch/CachyOS |
|---|---|---|
| Build toolchain | build-essential python3 make g++ |
base-devel python |
| CLI/runtime tools | curl unzip ripgrep bash |
curl unzip ripgrep bash |
| Electron runtime libs | libgtk-3-0 libnotify4 libnss3 libxss1 libxtst6 libatspi2.0-0 libdrm2 libgbm1 libasound2t64 |
gtk3 libnotify nss libxss libxtst at-spi2-core libdrm mesa alsa-lib |
Ubuntu/Debian:
sudo apt update
sudo apt install -y build-essential python3 make g++ curl unzip ripgrep bash libgtk-3-0 libnotify4 libnss3 libxss1 libxtst6 libatspi2.0-0 libdrm2 libgbm1 libasound2t64Arch/CachyOS:
sudo pacman -S --needed base-devel python curl unzip ripgrep bash gtk3 libnotify nss libxss libxtst at-spi2-core libdrm mesa alsa-libFish shell setup (recommended on Arch/CachyOS):
# Add npm global binaries to Fish PATH once.
fish_add_path -U (npm config get prefix)/bin
# Optional but useful on node-manager setups where PATH can rotate per shell.
set -Ux CODEX_CLI_PATH (type -p codex)
set -Ux RG_PATH (type -p rg)
# Verify both required binaries are visible in Fish.
type -a codex
type -a rgInstall repo dependencies:
npm install
chmod +x ./install-desktopnpm install is required before running install-desktop, release-info, or uninstall-desktop.
Install the Linux Codex CLI that the desktop app talks to:
npm install -g @openai/codex@latestOptional: link the command globally so you can run install-desktop without ./:
npm linkVerified on April 7, 2026 on CachyOS (ID_LIKE=arch) with Fish 4.6.0: npm test and ./release-info both pass.
All commands below assume you already ran npm install in this repository.
Latest stable:
./install-desktopLatest stable plus a diagnostic manifest in the install log:
./install-desktop --diagnostic-manifestInspect installed releases plus the latest 3 prod and beta appcast entries:
./release-infoSpecific stable version from the stable feed:
./install-desktop --version 26.325.21211Latest beta from the beta feed:
./install-desktop --betaSpecific beta version from the beta feed:
./install-desktop --beta --version 26.401.11631Install without the Linux terminal lifecycle patch for A/B perf checks:
./install-desktop --skip-terminal-patchInstall without the Linux open-in-targets patch:
./install-desktop --skip-open-targets-patchInstall without the Linux todo progress patch:
./install-desktop --skip-todo-progress-patchIf you ran npm link, the same commands work as:
install-desktop
install-desktop --version 26.325.21211
install-desktop --beta
install-desktop --beta --version 26.401.11631
install-desktop --diagnostic-manifest
install-desktop --skip-terminal-patch
install-desktop --skip-open-targets-patch
install-desktop --skip-todo-progress-patch
release-infoRemove all repo-owned desktop installs created by this repo:
./uninstall-desktopIf you ran npm link:
uninstall-desktop- Stable app files:
~/.local/share/codex-linux-app/channels/stable - Beta app files:
~/.local/share/codex-linux-app/channels/beta - Diagnostic manifest:
~/.local/share/codex-linux-app/channels/stable/install-diagnostic-manifest.json~/.local/share/codex-linux-app/channels/beta/install-diagnostic-manifest.json
- Desktop entries:
~/.local/share/applications/codex.desktop~/.local/share/applications/codex-beta.desktop
- State and logs:
~/.local/state/codex-linux-app - Cache and downloaded archives:
~/.cache/codex-linux-app
Stable and beta installs are fully separate. Reinstalling stable only replaces stable. Reinstalling beta only replaces beta.
~/.local/share/codex-linux-app~/.local/state/codex-linux-app~/.cache/codex-linux-app~/.local/share/applications/codex.desktop~/.local/share/applications/codex-beta.desktop
uninstall-desktop does not remove the separately installed global codex CLI.
Use this section as the single source of truth for env vars used by this project.
| Variable | Where Used | Default | Effect |
|---|---|---|---|
CODEX_CLI_PATH |
Installer + launcher | Auto-detect from PATH (installer), bundled wrapper fallback (launcher) |
Overrides which codex binary is used. |
RG_PATH |
Installer | Auto-detect from PATH |
Overrides which rg binary is used during install. |
CODEX_DESKTOP_FORCE_SANDBOX |
Launcher | unset / 0 |
Force Chromium sandbox mode (1). |
CODEX_DESKTOP_FORCE_NO_SANDBOX |
Launcher | unset / 0 |
Force --no-sandbox --disable-setuid-sandbox (1). |
CODEX_DESKTOP_DISABLE_GPU |
Launcher | unset / 0 |
Adds --disable-gpu (1). |
CODEX_DESKTOP_OZONE_PLATFORM_HINT |
Launcher | unset | Passes --ozone-platform=x11, wayland, or auto. |
CODEX_DESKTOP_DISABLE_LINUX_AUTO_HIDE_MENU_BAR |
Patched app main bundle (Linux) | unset | Keeps native menu bar always visible when set to 1 (default behavior auto-hides it). |
CODEX_DESKTOP_DISABLE_LINUX_CLOSE_CANCEL_PATCH |
Patched app main bundle (Linux) | unset | Disables the Linux close-cancel window restoration patch when set to 1. |
CODEX_DESKTOP_DISABLE_LINUX_VISUAL_COMPAT |
Patched app renderer bundle (Linux) | unset | Disables Linux visual-compat patch when set to 1. |
CODEX_DESKTOP_DISABLE_LINUX_TODO_PROGRESS_PATCH |
Patched app renderer bundle (Linux) | unset | Disables Linux todo progress patch when set to 1. |
CODEX_DESKTOP_ENABLE_CHROMIUM_LOGGING |
Launcher | unset / 0 |
Enables Chromium logging when set to 1. |
CODEX_DESKTOP_TRACE_TERMINAL_PATCH |
Patched app renderer bundle (Linux) | unset | Enables terminal patch trace warnings when set to 1. |
CODEX_DESKTOP_INSTALL_MANIFEST |
Launcher (internal) | Auto-set by launcher | Path to install diagnostic manifest. Do not set manually. |
- The installer only supports Linux
amd64in this version. - The installer uses the live appcast at runtime, so plain
install-desktopalways tracks the newest stable release from the stable feed. install-desktop --betaalways tracks the newest beta release from the beta feed.- Binary discovery is done with direct PATH scanning in Node (not external
which), so Fish/Arch setups work as long as PATH or theCODEX_CLI_PATH/RG_PATHoverrides are correct. - For all runtime and installer env vars, see the Environment Variables section above.
- The build/install stages retry forever on failure and keep logs under
~/.local/state/codex-linux-app/logs. - The installer always writes a per-channel diagnostic manifest with upstream version/build info, Electron runtime info, native module versions, and patch state.
- If a new upstream renderer build changes the fresh-thread model bundle shape, the installer now skips that patch with a warning instead of aborting the install; the log and diagnostic manifest record the skipped
newThreadModelstate. - If a new upstream renderer build changes the Linux visual-compat renderer bundle shape, the installer also skips that patch with a warning instead of aborting the install.
- The generated launcher auto-falls back to
--no-sandbox --disable-setuid-sandboxwhenchrome-sandboxis not root-owned with mode4755, which is the normal case for a per-user install. - If a reinstall opens to a black spinner window, reinstall once with
./install-desktop --skip-terminal-patchto bypass the renderer terminal patch while debugging. - On Linux, canceling the quit confirmation restores or recreates the main window so the app stays visible instead of remaining only as a background task.
- The installer preserves the upstream resource layout and replaces mac-only helper binaries with Linux equivalents where needed.
- Linux editor discovery is patched into the desktop runtime for supported IDEs. It checks CLI commands on PATH, common
.desktoplaunchers, and JetBrains Toolbox scripts under~/.local/share/JetBrains/Toolbox/scripts. - The current Linux editor targets include VS Code, VS Code Insiders, Cursor, Windsurf, Zed, Android Studio, IntelliJ IDEA, Rider, GoLand, RustRover, PyCharm, WebStorm, and PhpStorm.
- The launcher writes resolved runtime mode details, including sandbox mode, GPU mode, ozone hint, manifest path, and patch summary, to
~/.local/state/codex-linux-app/logs/runtime-launch-<channel>.log. - If a requested version is not present in the selected feed, the command prints the versions currently available from that feed.