Codex Desktop for Linux

June 11, 2026 ยท View on GitHub

Unofficial Linux build wrapper for OpenAI Codex Desktop. The official Codex app is available for macOS and Windows; this repository covers Linux by converting the upstream macOS Codex.dmg into a runnable Linux Electron app.

The project builds native .deb, .rpm, and .pkg.tar.zst packages, supports local AppImage self-builds and Nix, and can install a local update manager that rebuilds future Linux packages from newer upstream DMGs.

Before opening a pull request, read CONTRIBUTING.md. For implementation details, see AGENTS.md.

Install By Platform

PlatformRecommended pathNotes
Debian, Ubuntu, Pop!_OS, Mint, Elementarymake bootstrap-nativeBuilds and installs a .deb
Fedoramake bootstrap-nativeBuilds and installs an .rpm
openSUSEmake bootstrap-nativeBuilds and installs an .rpm
Arch, Manjaro, EndeavourOSmake bootstrap-nativeBuilds and installs a pacman package
NixOS / Nixnix run github:ilysenko/codex-desktop-linuxSee Nix docs
Atomic desktops / other distrosmake build-app && make appimageLocal self-build; no bundled updater

Native install:

git clone https://github.com/ilysenko/codex-desktop-linux.git
cd codex-desktop-linux
make bootstrap-native

If dependencies are already installed:

make install-native

make bootstrap-native installs build dependencies, downloads a fresh upstream Codex.dmg, builds codex-app/, packages it for your distro, and installs the newest artifact from dist/.

If you are installing dependencies manually on Fedora:

# Fedora 41+
sudo dnf install python3 7zip curl unzip rpm-build @development-tools

# Fedora < 41
sudo dnf install python3 p7zip p7zip-plugins curl unzip rpm-build
sudo dnf groupinstall 'Development Tools'

For a guided first-run checklist and optional feature picker:

make setup-native

See Native setup for the wizard, non-interactive feature selection, cleanup flow, and PACKAGE_WITH_UPDATER=0.

Before You Install

The generated app and native packages bundle a managed Linux Node.js runtime. You do not need a distro nodejs / npm package for normal installs, Browser Use, Codex CLI install/update, or local auto-update rebuilds.

The Codex CLI is still required at runtime. The first launch can install or update @openai/codex with the bundled npm, or you can manage the CLI yourself.

X11 and Wayland sessions are supported. The launcher prefers XWayland on Wayland when available for better Electron popup positioning, then falls back to Electron's automatic Wayland handling. See Troubleshooting for GPU, Vulkan, and /tmp noexec workarounds.

Feature Matrix

FeatureDefaultEnable / useDocs
Standard Codex Desktop UIAlwaysInstall or run the generated appThis README
Managed Linux Node.js runtimeAlwaysBundled during build/installBuild and packaging
Native packagesAlwaysmake package && make installBuild and packaging
Auto-update managerNative packagesIncluded unless PACKAGE_WITH_UPDATER=0Updater
AppImage self-buildManualmake build-app && make appimageBuild and packaging
Nix flakeManualnix run github:ilysenko/codex-desktop-linuxNix
GUI install promptsIf installedUses kdialog / zenity, then terminal fallbackNative setup
Linux file manager integrationAlwaysBuilt into core Linux patchesArchitecture
Chrome plugin native hostAlwaysInstalled with bundled pluginsArchitecture
Browser annotationsAlwaysBuilt into the patched webviewArchitecture
Tray and warm-start handoffAlwaysNormal app launchArchitecture
Multiple app instancesOpt-in./codex-app/start.sh --new-instanceBuild and packaging
Linux Computer Use backendBundledMCP backend registers by defaultLinux Computer Use
Linux Computer Use UIOpt-inCODEX_LINUX_ENABLE_COMPUTER_USE_UI=1 or settings flagLinux Computer Use
Linux Features frameworkOpt-inEdit linux-features/features.jsonLinux Features
Agent WorkspacesOpt-inagent-workspaceDocs
Linux AppShotsOpt-inappshotsDocs
Wrapper updater buttonOpt-incodex-wrapper-updaterDocs
Conversation modeOpt-inconversation-modeDocs
Copilot reasoning effort defaultsOpt-incopilot-reasoning-effortDocs
Example Linux FeatureDeveloper exampleexample-featureDocs
Open Target DiscoveryOpt-inopen-target-discoveryDocs
Read Aloud buttonOpt-inread-aloudDocs
Read Aloud MCPOpt-inread-aloud-mcpDocs
Remote Control UI gatesOpt-inremote-control-uiDocs
Experimental Remote Mobile ControlOpt-inremote-mobile-controlDocs
Thorium Chrome Plugin SupportOpt-inthorium-chrome-pluginDocs
Zed OpenerOpt-inzed-openerDocs

Server-gated upstream features, such as model rollouts, are controlled by OpenAI per account. Rebuilding this wrapper does not unlock them.

Optional Linux Features

Optional Linux-only integrations live in linux-features/ and are disabled by default. They can add ASAR patches, staged resources, runtime hooks, package hooks, or legacy build/install hooks without changing the core build flow.

Enable tracked or local features before building:

cp linux-features/features.example.json linux-features/features.json
{
  "enabled": [
    "read-aloud",
    "zed-opener"
  ]
}

Private user-local features can live under the git-ignored linux-features/local/<feature-id>/ directory and use the same feature.json contract. Rebuild after changing feature choices:

make install-native

Full contract: linux-features/README.md and docs/linux-features-architecture.md.

Updates

Default native packages install codex-update-manager, a systemd --user service that checks for newer upstream DMGs, rebuilds a local native package, and installs it after Codex Desktop exits. The final install uses pkexec. Minimal window-manager sessions need a graphical polkit authentication agent for the in-app install button; otherwise the updater keeps the package ready and reports a terminal sudo /usr/bin/codex-update-manager ... --path ... command.

Manual-update package:

PACKAGE_WITH_UPDATER=0 make package
make install

Manual rebuild from a trusted checkout:

PACKAGE_WITH_UPDATER=0 make update-native

AppImage builds and repo-only generated apps do not include the native-package updater. See Updater.

Build, Package, And Run

Generate the local Electron app:

make build-app-fresh
make run-app

Use a local DMG:

make build-app DMG=/path/to/Codex.dmg

Build and install a package:

make package
make install

Build a specific artifact:

make deb
make rpm
make pacman
make appimage

The package scripts only repackage the already-generated codex-app/. They do not download or extract the DMG themselves. See Build and packaging.

Troubleshooting

ProblemFirst thing to try
/tmp is mounted noexecSet TMPDIR and XDG_CACHE_HOME to executable directories under $HOME
Blank window or splash stuckCheck ~/.cache/codex-desktop/launcher.log and whether port 5175 is already in use
CODEX_CLI_PATH or CLI install errorReopen the app or install @openai/codex manually
Wayland / GPU / Vulkan hangTry CODEX_LINUX_RENDERING_MODE=wayland-gpu ./codex-app/start.sh or persistent launch flags
Resize ghosting or stale frame trailsTry CODEX_ELECTRON_DISABLE_GPU_COMPOSITING=1 ./codex-app/start.sh or --disable-gpu-compositing
Computer Use UI is hiddenEnable the UI opt-in; account/server rollouts may still hide upstream-gated parts
Computer Use has no input backendCheck /dev/uinput, portal support, or ydotoold / ydotool.service
Updater seems stuckCheck codex-update-manager status --json and service logs

Full list: Troubleshooting.

Project Docs

Disclaimer

This is an unofficial community project. Codex Desktop is a product of OpenAI. This tool does not redistribute any OpenAI software; it automates the conversion process that users perform on their own copies.

License

MIT