Repository iconcurepo.dev
codex-desktop-linux preview

ilysenko / codex-desktop-linux

Run OpenAI Codex Desktop on Linux - automated installer

3.9k Stars
visibility15 Watchers
fork_right505 Forks
JavaScript
historyUpdated recently

description README.md

ChatGPT Community for Linux

CI Official Linux package build Join the Discord community

English | 简体中文 | فارسی

codex-desktop is an unofficial, community-maintained distribution of OpenAI's official Linux ChatGPT desktop application. It verifies and repackages the signed upstream Linux payload, adds disabled-by-default Linux features, and produces deb, RPM, pacman, AppImage, and Nix outputs.

The custom application appears in desktop menus as ChatGPT Community and uses an icon marked with a blue C. Its package and command are codex-desktop, and its installation root is /opt/codex-desktop, so it is easy to distinguish from OpenAI's separate ChatGPT package.

OpenAI's signed Linux .deb is the only upstream source. The official Electron runtime, native modules, bundled codex and rg, code-mode host, plugins, libraries, locales, and Owl metadata are reused directly. A clean build applies only required compatibility patches to resources/app.asar and preserves the official ELF runtime and bundled tools byte-for-byte. Optional Linux features remain disabled unless explicitly selected.

Install · Uninstall · Features · Updates · Build · Troubleshooting · Docs · Discord

Before contributing, read CONTRIBUTING.md. Maintainers and coding agents should also read AGENTS.md.

Install

Clone the repository before building a native package or AppImage:

git clone https://github.com/ilysenko/codex-desktop-linux.git
cd codex-desktop-linux
PlatformRecommended commandResult
Debian, Ubuntu, Pop!_OS, Mint, Elementarymake bootstrap-nativeBuilds and installs a .deb
Raspberry Pi 5, 64-bit OSmake bootstrap-nativeBuilds the official arm64 payload; see Pi notes
Fedoramake bootstrap-nativeBuilds and installs an RPM
openSUSEmake bootstrap-nativeBuilds and installs an RPM
Arch, Manjaro, EndeavourOSmake bootstrap-nativeBuilds and installs a pacman package
Gentoomake bootstrap-nativeBuilds a local ebuild and installs through Portage; supports ui-tweaks, no updater
NixOS or another Nix systemnix run github:ilysenko/codex-desktop-linuxBuilds and runs the flake output; see Nix
Atomic desktops or another distributionmake build-app && make appimageProduces a local AppImage without the native updater

Gentoo's application merge ignores EMERGE_DEFAULT_OPTS to install through the generated ebuild rather than reuse a binary package. Global Portage settings are unchanged. Gentoo has a phase-aware dependency and package-resource framework for audited features. ui-tweaks is supported and remains disabled by default; other repository features require their own support declarations. See the Gentoo feature contract. Gentoo's local ebuild path has been tested on OpenRC; a Gentoo systemd environment has not been tested. See Gentoo validation scope.

The recommended native installation is:

make bootstrap-native

This installs build dependencies, resolves the current package through OpenAI's signed stable APT metadata, builds codex-app/, creates the native package for the detected distribution, and installs the newest artifact from dist/.

If the dependencies are already installed, use:

make install-native

For the graphical guided installer, run the standalone repository entrypoint:

./install-community

(make guided-install invokes the same entrypoint.) The installer is part of the repository setup experience, not an optional Linux feature. On desktops with GTK4/PyGObject it walks through feature selection, installation options, review, and build/install progress with a live log. Required features are selected automatically; conflicting choices are disabled with the reason kept visible.

The graphical installer does not modify feature implementations or feature settings. It updates only the enabled-feature list and its own installer preferences in the gitignored linux-features/features.json; any existing feature settings are preserved unchanged. Native output always keeps the repository identity codex-desktop under /opt/codex-desktop, whether or not the automatic updater is included.

To configure features without installing yet, keep using:

make setup-native
make install-native

make setup-native only writes the local feature selection. It does not build or install the application. See Native setup for the guided flow, non-interactive settings, updater selection, and cleanup.

Use an already downloaded official package

Normally the build resolves amd64 or arm64 from the signed stable index. You can instead provide a local package that you already trust:

UPSTREAM_DEB=/path/to/chatgpt_<version>_<arch>.deb make build-app

The local package is still checked for package name, architecture, control metadata, payload completeness, and SHA-256 recording. Because signed repository discovery is skipped, the caller is responsible for its origin. Old .dmg, DMG=, and CODEX_DMG_* inputs are intentionally unsupported.

Before you install

  • Only the latest signed stable OpenAI Linux package is supported, on amd64 and arm64.
  • Build tools require Node.js 20 or newer, npm, Python 3, curl, gpgv, dpkg-deb, tar, make, and a C/C++ toolchain. Rust is used for the updater and enabled native feature helpers. make bootstrap-native installs or guides you through these requirements.
  • The official chatgpt and custom codex-desktop packages may coexist. By default they intentionally share the upstream Codex user profile and should not run at the same time. The optional community-profile-isolation feature gives Community separate Codex and Electron state and pins its bundled CLI so users who need isolated runtimes can avoid that shared-profile boundary.
  • AppImage never adds --no-sandbox automatically. If your distribution disables unprivileged user namespaces, use the native package or follow the sandbox guidance in Troubleshooting.

Anonymous daily usage count

To help the community decide whether maintaining this distribution is useful, the launcher sends at most one anonymous usage event per UTC day to the public GoatCounter dashboard. The event contains only the fixed path /app-launch. GoatCounter derives an aggregate country from the network request; no application activity, account or machine identifier, version, architecture, package format, language, screen size, or referrer is sent. Every installation sends the same fixed, non-identifying User-Agent so GoatCounter does not discard the request as a bot.

The request runs silently in the background. A missing curl, a blocked r