The Problem
OpenAI’s official Codex app docs currently list desktop downloads for macOS and Windows, plus a “Get notified for Linux” link. The Codex CLI works on Linux, but the desktop app does not have an official Linux package yet.
That leaves two practical paths:
- use the official CLI
- use an unofficial desktop wrapper
If you only need Codex in a terminal, the CLI is the cleaner answer:
npm install -g @openai/codexcodexIf you specifically want the desktop app surface on Linux, the useful community project is:
If you are looking for the official macOS or Windows install paths instead:
- How to Find the Current Codex App Build on macOS
- Codex on Windows: Store Links, Beta Channel, and Winget
What the Wrapper Does
codex-desktop-linux converts the upstream macOS Codex app into a Linux Electron app, then builds native Linux packages around it.
That matters because this is not an official OpenAI Linux build. It is a community-maintained packaging path for people who want the desktop UI before OpenAI ships a native Linux app.
The wrapper gives you:
- the Codex desktop interface
- project threads
- native Linux packages
- a managed Linux Node.js runtime
- a local updater service for future package rebuilds
- optional Linux Computer Use support
The tradeoff is trust. You are building and installing software from a community repository, so read the scripts before running them on a machine you care about.
Supported Linux Paths
The wrapper currently supports the common package families:
| Distro family | Package output |
|---|---|
| Debian, Ubuntu, Pop!_OS, Mint, Elementary | .deb |
| Fedora | .rpm |
| openSUSE | .rpm |
| Arch, Manjaro, EndeavourOS | .pkg.tar.zst |
| NixOS / Nix | nix run |
The README says X11 is supported and that the launcher targets Wayland with XWayland first, then falls through to Electron’s automatic Wayland handling.
How to Install It
The repository’s normal path is: clone, install build dependencies, build the app, build the native package, install it.
git clone https://github.com/ilysenko/codex-desktop-linux.gitcd codex-desktop-linuxbash scripts/install-deps.shmake build-appmake packagemake installmake package auto-detects the package format for supported distros. make install installs the newest package from dist/ using the distro’s package manager.
The generated app bundles a managed Linux Node.js runtime. You do not need to install a distro nodejs package just to run this wrapper, though normal developer setups with Node already installed are fine.
NixOS / Nix
For Nix users, the README gives a one-liner:
nix run github:ilysenko/codex-desktop-linuxIf that fails with a hash mismatch immediately after an upstream Codex release, the README says to wait for the repository’s bot refresh and retry.
How It Works
The messy part is that the wrapper has to turn an app built for another desktop platform into something Linux can install and launch cleanly.
It does that by:
- extracting the upstream Codex desktop app
- patching it to run under Linux Electron
- rebuilding native Node modules for Linux
- creating native
.deb,.rpm, or.pkg.tar.zstpackages - installing a local
codex-update-managerservice for rebuilding future packages from newer upstream app releases
The Codex CLI is still required at runtime. On first launch, the app can install or update @openai/codex with its bundled npm, or you can manage the CLI yourself.
Optional Computer Use Support
The project also includes an opt-in Linux Computer Use backend. That part is separate from basic desktop app installation.
If you want it, expect extra desktop automation dependencies such as ydotool, /dev/uinput access, and a working XDG Desktop Portal on non-GNOME desktops. The README has the distro-specific commands and a doctor check for readiness.
If you only want the Codex desktop app for normal project work, you can skip Computer Use.
Troubleshooting Notes
If the install fails on a hardened Linux setup, check whether /tmp is mounted with noexec.
The README recommends setting a user-writable temp and cache directory before running the install steps:
mkdir -p ~/tmp/codex-work ~/tmp/codex-cacheexport TMPDIR=~/tmp/codex-workexport XDG_CACHE_HOME=~/tmp/codex-cacheFor launcher issues, the useful logs are:
~/.cache/codex-desktop/launcher.log~/.local/state/codex-update-manager/service.logFor updater status:
systemctl --user status codex-update-manager.servicecodex-update-manager status --jsonWhen I Would Not Use This
I would not use the wrapper if I needed an official OpenAI-supported Linux desktop package. That does not exist yet.
I also would not use it on a production workstation without reading what the install scripts do. The project builds and installs local packages, uses distro package managers, and includes an updater service. That is normal for this kind of wrapper, but it is still privileged software installation.
For the lowest-risk Linux path, use the official CLI:
npm install -g @openai/codexcodex