codex-desktop-linux README

The project's README from github.com/ilysenko/codex-desktop-linux. As one markdown file: 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, command, and installation identity remain codex-desktop and /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. With no ASAR-changing feature enabled, resources/app.asar remains byte-for-byte identical to the official package.

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
Platform Recommended command Result
Debian, Ubuntu, Pop!_OS, Mint, Elementary make bootstrap-native Builds and installs a .deb
Raspberry Pi 5, 64-bit OS make bootstrap-native Builds the official arm64 payload; see Pi notes
Fedora make bootstrap-native Builds and installs an RPM
openSUSE make bootstrap-native Builds and installs an RPM
Arch, Manjaro, EndeavourOS make bootstrap-native Builds and installs a pacman package
NixOS or another Nix system nix run github:ilysenko/codex-desktop-linux Builds and runs the flake output; see Nix
Atomic desktops or another distribution make build-app && make appimage Produces a local AppImage without the native updater

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

To choose optional features before installing:

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

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 request, or any other error never delays the application and produces no output. Disable the usage count with the single environment variable:

CODEX_LINUX_DISABLE_USAGE_REPORTING=1 codex-desktop

Uninstall

First close both ChatGPT Community and the official ChatGPT application. Then remove the native package with the package manager that installed it:

# Debian / Ubuntu
sudo apt remove codex-desktop

# Fedora
sudo dnf remove codex-desktop

# openSUSE
sudo zypper remove codex-desktop

# Arch / Manjaro
sudo pacman -R codex-desktop

Native package removal disables the user update service. If a service from an older or manual installation remains, remove it explicitly:

systemctl --user disable --now codex-update-manager.service
systemctl --user daemon-reload

For AppImage, delete the AppImage file you built. For a repository-only app, delete only the generated tree inside the checkout:

rm -rf -- ./codex-app

For Nix, remove the package from your profile, Home Manager configuration, or NixOS module and rebuild that profile or system.

Package removal preserves user data. To remove only Community wrapper and updater state, inspect and then delete the following directories:

~/.config/codex-desktop
~/.local/state/codex-desktop
~/.cache/codex-desktop
~/.config/codex-update-manager
~/.local/state/codex-update-manager
~/.cache/codex-update-manager

If remote-mobile-control was enabled, revoke paired devices before removing its private device keys. Do not remove ~/.codex unless you intentionally want to delete the shared Codex profile, configuration, plugins, and project state used by both official and Community applications.

Feature matrix

Core distribution

Capability Default How it is provided
Official ChatGPT Linux runtime Always Copied from the verified official .deb data payload
Signed source verification Always Pinned repository key → InRelease → Packages SHA-256 → package SHA-256
Byte-identical baseline ASAR Always The ASAR is not unpacked when no enabled feature needs it
Native deb, RPM, and pacman packages Manual build make deb, make rpm, or make pacman
AppImage Manual build make appimage; no automatic sandbox bypass or bundled updater
Nix flake Manual build nix run github:ilysenko/codex-desktop-linux
Transactional update manager Native packages Included unless built with PACKAGE_WITH_UPDATER=0
Official Browser and Chrome integrations Upstream Reused from the official Linux package; no legacy port layer
Optional Linux feature framework Disabled Configure with make setup-native
Distinct desktop identity Always ChatGPT Community, blue C icon, codex-desktop package identity

Optional Linux features

Every feature below is disabled by default. Its adjacent README describes requirements, known limitations, configuration, and tests.

Feature ID Purpose Documentation
agent-workspace Agent-workspace settings and bridge for hidden desktop environments Docs
api-key-model-visibility Show models reported by API-key authenticated compatible providers Docs
api-key-service-tier Fast/service-tier UI for API-key authenticated compatible providers Docs
appshots Capture and crop the focused Linux window from the composer Docs
authenticated-proxy Username/password support for HTTP proxies Docs
automation-extensions Multi-time schedules and eager automation_update exposure Docs
browser-proxy Pass explicit proxy settings to Browser Use network helpers Docs
chronicle-skysight Opt-in Linux desktop activity memory and restricted Skysight MCP tools Docs
codex-micro Work Louder Codex Micro hotplug and hidraw policy using upstream node-hid Docs
computer-use-linux Linux desktop-control UI and native MCP backend Docs
copilot-reasoning-effort Persistent reasoning-effort defaults for Copilot-auth sessions Docs
directory-only-working-tree-watch Bounded Watchbound working-tree watching Docs
filesystem-root-follow-ups Allow follow-ups in existing local tasks rooted at / Docs
flatpak-chrome-native-messaging Bridge the official Chrome extension into Flatpak Google Chrome Docs
frameless-titlebar Hide official Linux overlay buttons for compositor-managed decorations Docs
global-dictation X11 and XDG portal global dictation hotkeys Docs
linux-performance-workarounds Measured renderer workarounds for affected systems Docs
mcp-helper-reaper Reap orphaned MCP helpers without touching live sessions Docs
model-picker-default-presets Configure ordered model/effort pairs behind ChatGPT Default Docs
node-repl-reaper Reap Browser Use node_repl helpers leaked after owner exit Docs
omarchy-theme Load CSS generated from the current Omarchy theme Docs
persistent-status-panel Keep the /status panel across thread switches and restarts Docs
pet-overlay Linux avatar-overlay placement and compositor hints Docs
project-group-last-updated-sort Apply Last updated ordering to project groups and tasks Docs
project-task-sort Restore Created ordering for alternate Projects tasks Docs
read-aloud Add Linux read-aloud controls to assistant responses Docs
read-aloud-mcp Let the agent speak through the Linux Read Aloud backend Docs
record-and-replay Record a Linux demonstration and turn it into a reusable skill Docs
remote-control-ui Expose experimental remote-control settings on Linux Docs
remote-mobile-control Experimental Linux remote-host and outbound-control flows Docs
shallow-repository-watches Avoid recursive main-thread walks for transient repository previews Docs
shared-app-server-socket Share one protocol-transparent Unix app-server socket Docs
thorium-chrome-plugin Add Thorium to the official bundled Chrome integration Docs
tray-usage Show usage remaining in the Linux system-tray menu Docs
ui-tweaks Optional visual and interaction customizations Docs

With shared-app-server-socket enabled and Desktop running, use codex-desktop --cli to attach Codex CLI to Desktop's app-server. See Attached CLI.

Account rollouts and server-side ChatGPT features remain controlled by OpenAI. Rebuilding this project does not unlock an account rollout.

Configure optional features

The recommended editor is the setup wizard:

make setup-native

For manual configuration, copy the example to the gitignored local file:

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

Then rebuild and install:

make install-native

Private features may live under the gitignored linux-features/local/<feature-id>/ tree and use the same manifest contract. Known retired IDs are ignored to migrate old local configs; arbitrary unknown IDs and misspellings remain errors. See the feature framework README and feature architecture.

Updates

Native packages include codex-update-manager by default. Its user service polls the same signed APT metadata, caches official packages by version/architecture/SHA-256, reconstructs the selected native package with the currently enabled features, and waits for the application to exit before promotion. The immediately previous managed package remains available for rollback.

codex-update-manager status
codex-update-manager status --json
codex-update-manager check-now
codex-update-manager diagnose
codex-update-manager install-ready
codex-update-manager rollback
systemctl --user enable --now codex-update-manager.service
systemctl --user status codex-update-manager.service
journalctl --user -u codex-update-manager.service

Build a manual-update package without the service:

PACKAGE_WITH_UPDATER=0 make package
make install

AppImage and repository-only generated apps do not include the native package updater. Full behavior and recovery steps are documented in Updater.

Build, package, and run

# Build the local application tree and run it without installing a package
make build-app
make run-app

# Build and install the package format detected for this distribution
make package
make install

# Build a specific output
make deb
make rpm
make pacman
make appimage

Builds are transactional: a candidate is verified before it replaces the working tree. Enabled ASAR-feature drift rejects a candidate; disabled features are not probed. Package scripts consume the generated codex-app/ tree. See Build and packaging for prerequisites, variables, output layout, parallelism, and payload inspection.

Troubleshooting

Problem First check
Official and Community launches interfere Fully exit every ChatGPT process; both apps share the upstream profile
AppImage opens from Flatpak Chrome, but the extension says Native transport disconnected Enable flatpak-chrome-native-messaging; see Flatpak Chrome setup
Browser/Chrome extension cannot connect after migration Exit ChatGPT and Chrome completely, then follow the narrow cache repair in Troubleshooting
Signature or package verification fails Do not bypass it; check time, network, gpgv, architecture, and disk space
App does not launch Run /opt/codex-desktop/start.sh --diagnose
App uses XWayland or needs persistent Electron flags A confirmed Wayland session selects the native backend automatically; pin one with CODEX_OZONE_PLATFORM=x11|wayland, or put one flag per line in ~/.config/codex-desktop/electron-flags.conf, for example --ozone-platform=x11
AppImage reports a sandbox error Enable user namespaces or install a native package; --no-sandbox is not added automatically
Enabled feature drifts after an upstream release Disable that feature to confirm the clean baseline and attach its patch report to an issue
Updater waits for application exit Close official and Community processes, then inspect codex-update-manager status --json
Old codex-app.backup-* reports permission errors Inspect the exact path and follow the root-owned backup procedure; never delete a wildcard blindly

Full guide: Troubleshooting.

Project documentation

Historical macOS DMG conversion, downloaded Electron replacement, native-module rebuild, local webview server, and custom warm-start documents are intentionally not active documentation: the official Linux package now owns those runtime responsibilities.

Disclaimer

This is an unofficial community project and is not affiliated with OpenAI. Ch

codex-desktop-linux (ilysenko/codex-desktop-linux)

Searching Database…

这是什么?codex-desktop 是 OpenAI 官方 Linux ChatGPT 桌面应用的非官方、社区维护发行版。它把带签名的上游载荷重新打包成原生 deb、RPM、pacman、AppImage 和 Nix 产物,添加可选的 Linux 专属功能,并以独立的“ChatGPT Community”应用形式与官方应用并存安装。
这是带新代码的 fork,还是只是官方应用的重新打包?它是一个重新打包工具:官方的 Electron 运行时、原生模块、codex 和 rg 二进制文件以及插件都直接复用自 OpenAI 带签名的 .deb;在不启用任何可选功能的情况下,应用的 resources/app.asar 与上游逐字节完全一致。
怎么在我的发行版上安装?运行“make bootstrap-native”,根据你的发行版(Debian/Ubuntu、Fedora/openSUSE、Arch)构建并安装原生 .deb、RPM 或 pacman 包;NixOS 上运行“nix run github:ilysenko/codex-desktop-linux”;其他发行版可用“make build-app && make appimage”生成便携版 AppImage。
构建之前需要装好什么?你需要 Node.js 20 或更新版本、npm、Python 3、curl、gpgv、dpkg-deb、tar、make 和 C/C++ 工具链;更新器和原生功能辅助程序需要 Rust。“make bootstrap-native”会安装或引导你装好其中大部分。
可以和官方 ChatGPT 应用一起运行吗?两者可以共存,但共享同一个上游 Codex 配置,同时运行可能适得其反——单实例锁可能把你的第二次启动导向已在运行的进程。仅支持最新的带签名 OpenAI Linux 稳定包(amd64/arm64)。
它会偷偷上报或追踪使用情况吗?启动器每天最多向一个公开的 GoatCounter 仪表盘发送一次匿名、不具识别性的使用 ping(只是 /app-launch 这个路径),用于了解社区关注度;其中不含账号、机器 ID、版本或架构信息,并且可以通过环境变量禁用。
它在官方应用基础上添加了哪些可选的 Linux 功能?有二十多个可选加入的功能,默认全部关闭——包括原生桌面控制 MCP 工具(computer-use-linux)、全局听写热键、朗读、系统托盘用量指示器和 Omarchy 主题支持等。每个功能都通过“make setup-native”向导或本地功能开关文件来切换。
它能自动更新吗?原生包(deb/RPM/pacman)默认带有 codex-update-manager 用户服务,它会轮询 OpenAI 带签名的 APT 元数据,按你启用的功能重新构建包,并保留上一个版本以便回滚。AppImage 和仅仓库构建没有这个自动更新器。
为什么它显示为“ChatGPT Community”而不是 ChatGPT?为了避免与官方包冲突,构建使用 codex-desktop / /opt/codex-desktop 标识,在应用菜单里显示为带蓝色 C 图标的“ChatGPT Community”,尽管它由同一个带签名的 Linux 载荷构建而来。
能把 Codex CLI 连接到桌面应用吗?可以——启用 shared-app-server-socket 功能后,你可以运行“codex-desktop --cli”,把 Codex CLI 连接到桌面应用正在运行的 app-server。
Creator
ilysenko
Size
10.6 MB
Stars
3.9K
Updated
CommitOct 21
Age
8mo
Commits · 90 Days