ilysenko/codex-desktop-linux
ilysenko/codex-desktop-linux has 3,927 GitHub stars and 514 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-08 15:43 UTC. Last push 2026-11-02.
Unofficial ChatGPT desktop app for Linux (formerly the Codex app), built locally from OpenAI’s official macOS app. Includes Chat, Work, and Codex. Packages for Debian/Ubuntu (.deb), Fedora/openSUSE (.rpm), Arch (pacman), Nix/NixOS, and AppImage, with Wayland and X11 support.
可以做什么
- account-switcher - Experimental encrypted ChatGPT login switching from the profile menu; requires Secret Service and secret-tool; shares local chats and settings - Docs
- 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
实测星标增长
- 24小时
- 0
- 7天
- 更新延迟
- 15天
- 更新延迟
- 1个月
- 更新延迟
各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。
README.zh-CN.md
原文ChatGPT Community for Linux
codex-desktop 是 OpenAI 官方 Linux ChatGPT 桌面应用的非官方社区发行版。
它验证并重新打包已签名的官方 Linux 软件包,提供默认关闭的 Linux 扩展,
并可构建 deb、RPM、pacman、AppImage 和 Nix 产物。
桌面菜单中的自定义应用名为 ChatGPT Community,图标带有蓝色 C。
软件包名、命令名和安装目录仍为 codex-desktop、codex-desktop 和
/opt/codex-desktop,因此可以与 OpenAI 的 ChatGPT 清楚区分。
唯一的上游来源是 OpenAI 已签名的 Linux .deb。官方 Electron runtime、
原生模块、内置 codex 和 rg、code-mode host、插件、库、locale 与 Owl
metadata 均被直接复用。默认构建仅对 resources/app.asar 应用必要的兼容性补丁,
并逐字节保留官方 ELF runtime 和内置工具。可选 Linux 扩展只有在明确选择后才会启用。
安装 · 卸载 · 功能 · 更新 · 构建 · 故障排除 · 文档 · Discord
参与贡献前请阅读 CONTRIBUTING.md。维护者和 coding agent 还应阅读 AGENTS.md。
安装
构建原生软件包或 AppImage 前先克隆仓库:
git clone https://github.com/ilysenko/codex-desktop-linux.git
cd codex-desktop-linux
| 平台 | 推荐命令 | 结果 |
|---|---|---|
| Debian、Ubuntu、Pop!_OS、Mint、Elementary | make bootstrap-native |
构建并安装 .deb |
| Raspberry Pi 5(64 位系统) | make bootstrap-native |
构建官方 arm64 payload;参阅 Pi 说明 |
| Fedora | make bootstrap-native |
构建并安装 RPM |
| openSUSE | make bootstrap-native |
构建并安装 RPM |
| Arch、Manjaro、EndeavourOS | make bootstrap-native |
构建并安装 pacman 软件包 |
| Gentoo | make bootstrap-native |
构建本地 ebuild 并通过 Portage 安装;仅支持已审计的功能,不含更新器 |
| NixOS 或其他 Nix 系统 | nix run github:ilysenko/codex-desktop-linux |
构建并运行 flake;参阅 Nix |
| Atomic 桌面或其他发行版 | make build-app && make appimage |
生成不含原生更新器的本地 AppImage |
Gentoo 的应用合并会忽略 EMERGE_DEFAULT_OPTS,从生成的 ebuild 安装载荷,而非复用
二进制包缓存;不会修改全局 Portage 配置。
Gentoo 已提供分阶段依赖和包资源框架;现已支持 ui-tweaks、
remote-mobile-control 和 community-features-in-gui-settings,且仍默认关闭。手机远程控制沿用由 Desktop 管理的
app-server;ebuild 不安装或启用远程控制服务。
只读社区功能目录嵌入 ASAR,无需额外 Gentoo 依赖或更新构建器快照;
打包验证与实机 GUI 验收的区别见目录功能的 Gentoo 说明。
其他仓库功能需单独审查并声明支持。字段约定见Gentoo 功能契约。
Gentoo 本地 ebuild 安装路径已在 OpenRC 环境测试,尚未测试 Gentoo systemd
环境;验证范围见Gentoo 原生安装说明。
推荐的原生安装命令:
make bootstrap-native
它会安装构建依赖,通过 OpenAI 已签名的 stable APT metadata 解析当前
软件包,构建 codex-app/,创建适用于当前发行版的原生包,并安装 dist/
中的最新产物。
依赖已经安装时使用:
make install-native
若要使用图形化引导安装器,请运行仓库中的独立入口:
./install-community
(make guided-install 调用同一个入口。)安装器属于仓库安装流程本身,
不是一个可选 Linux 扩展。在支持 GTK4/PyGObject 的桌面环境中,它会依次
完成扩展选择、安装选项、配置确认以及带实时日志的构建/安装进度。依赖扩展
会自动选中;与当前选择冲突的扩展会被禁用,并显示原因。
图形化安装器不会修改扩展实现或扩展设置。它只更新被启用的扩展列表以及
gitignored 的 linux-features/features.json 中属于安装器自己的偏好,
已有扩展设置会保持不变。无论是否包含自动更新器,原生输出始终保持
codex-desktop 软件包身份并安装到 /opt/codex-desktop。
如果只想配置扩展而暂不安装,仍然使用:
make setup-native
make install-native
make setup-native 只保存本地扩展选择,不会构建或安装应用。向导、
非交互配置、更新器选择和清理方式见原生安装。
使用已下载的官方软件包
默认构建会从签名 stable index 中选择 amd64 或 arm64。也可以复用已下载的
本地软件包,避免再次下载包体:
UPSTREAM_DEB=/path/to/chatgpt_<version>_<arch>.deb make build-app
本地包默认仍用签名 stable metadata 核对版本、architecture、大小和 SHA-256。 所有构建默认验证,不询问或读取用户输入,交互终端中也一样。 只有显式传入以下开关,才选择仅对本次构建生效的例外:
./install.sh --skip-oai-official-sig-verification /path/to/chatgpt_<version>_<arch>.deb
该开关要求提供本地包,仍检查 package name、版本格式、architecture 和 payload
完整性,并记录 SHA-256 与 signatureVerification: "skipped";此时来源由调用者
负责。选择不会保存到配置,验签失败也不会自动改为跳过。
详见构建与打包。
旧 .dmg、DMG= 和 CODEX_DMG_* 输入已明确不再支持。
安装前须知
- 仅支持 OpenAI 最新的已签名 stable Linux 软件包和
amd64/arm64。 - 构建需要 Node.js 20+、npm、Python 3、curl、
gpgv、dpkg-deb、tar、 make 和 C/C++ 工具链。更新器及启用的原生扩展 helper 还需要 Rust。make bootstrap-native会安装或提示这些依赖。 - 官方
chatgpt与自定义codex-desktop可以同时安装。默认情况下两者会 共享上游Codex用户 profile,因此不应同时运行。可选的community-profile-isolation扩展会为 Community 使用独立的 Codex 与 Electron 状态,并固定其内置 CLI,从而避免这条共享 profile 边界。 - AppImage 不会自动添加
--no-sandbox。若发行版禁用了 unprivileged user namespaces,请使用原生软件包或参阅故障排除。
匿名每日使用计数
为了帮助社区判断是否值得继续维护本发行版,launcher 每个 UTC 日期最多向
公开的 GoatCounter dashboard 发送一次匿名
使用事件。事件只包含固定路径 /app-launch。GoatCounter 根据网络请求生成汇总
国家信息;不会发送应用内操作、账户或设备标识、版本、架构、软件包格式、语言、
屏幕尺寸或 referrer。所有安装都会发送相同且不含识别信息的固定 User-Agent,
以避免 GoatCounter 将请求当作 bot 丢弃。
请求会在后台静默执行。缺少 curl、请求被拦截或发生任何其他错误时,应用启动
都不会被延迟,也不会产生输出。可用唯一的环境变量关闭此计数:
CODEX_LINUX_DISABLE_USAGE_REPORTING=1 codex-desktop
卸载
先完全关闭 ChatGPT Community 和官方 ChatGPT,然后使用安装它的包 管理器卸载:
# 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
# Gentoo
sudo emerge --deselect app-misc/codex-desktop
sudo emerge --unmerge app-misc/codex-desktop
原生包卸载时会禁用用户更新服务。若旧安装或手动安装仍留下服务:
systemctl --user disable --now codex-update-manager.service
systemctl --user daemon-reload
AppImage 只需删除构建出的文件。仓库内生成的应用树可在 checkout 根目录中删除:
rm -rf -- ./codex-app
Nix 用户应从 profile、Home Manager 配置或 NixOS module 中删除该包,然后重新 构建 profile 或系统。
卸载软件包不会删除用户数据。仅要删除 Community wrapper 与更新器状态时, 请先检查再删除以下目录:
~/.config/codex-desktop
~/.local/state/codex-desktop
~/.cache/codex-desktop
~/.config/codex-update-manager
~/.local/state/codex-update-manager
~/.cache/codex-update-manager
若启用了 community-profile-isolation,Community 自己的状态位于
~/.codex-community,Electron profile 位于 ~/.config/Codex-Community。
只有在确实要删除这份隔离的 Community 数据时才删除这些路径。
若启用了 remote-mobile-control,删除 private device keys 前请先撤销配对设备。
除非你确实希望删除默认共享的 Codex profile、配置、插件和项目状态,否则不要
删除 ~/.codex。
功能矩阵
核心发行版
| 能力 | 默认状态 | 提供方式 |
|---|---|---|
| 官方 ChatGPT Linux runtime | 始终启用 | 来自已验证官方 .deb 的 data payload |
| 签名来源验证 | 默认启用 | 固定 repository key → InRelease → Packages SHA-256 → package SHA-256;显式本地例外会记录在构建元数据中 |
| deb、RPM、pacman 原生包 | 手动构建 | make deb、make rpm、make pacman |
| AppImage | 手动构建 | make appimage;不绕过 sandbox,不含原生 updater |
| Nix flake | 手动构建 | nix run github:ilysenko/codex-desktop-linux |
| 事务式更新管理器 | 原生包 | 除非设置 PACKAGE_WITH_UPDATER=0 |
| 官方 Browser 和 Chrome 集成 | 上游提供 | 直接复用官方 Linux 实现,不保留旧移植层 |
| 可靠的 shell 环境启动 | 始终启用 | 由已验证的上游 runtime 负责;不应用核心 shell 启动补丁 |
| 可靠地完成已批准的退出 | 始终启用 | 必需的核心补丁在唯一的 before-quit owner 中消费上游退出批准,使清理流程能够到达 will-quit |
| Linux 可选扩展框架 | 默认关闭 | 使用 make setup-native 配置 |
| 独立桌面标识 | 始终启用 | ChatGPT Community、蓝色 C 图标、codex-desktop package identity |
可选 Linux 扩展
以下扩展全部默认关闭。每个扩展目录中的 README 都包含依赖、限制、配置与测试。
| 扩展 ID | 用途 | 文档 |
|---|---|---|
account-switcher |
实验性功能:从个人资料菜单切换加密保存的 ChatGPT 登录;需要 Secret Service 和 secret-tool;本地聊天和设置共用 |
文档 |
agent-workspace |
隐藏桌面环境中的 agent-workspace 设置和 bridge | 文档 |
api-key-model-visibility |
显示 API-key compatible provider 返回的模型 | 文档 |
api-key-service-tier |
API-key compatible provider 的 Fast/service-tier UI | 文档 |
appshots |
从 composer 捕获并裁剪当前 Linux 窗口 | 文档 |
authored-message-visibility |
工具活动折叠后,仍显示助手和用户消息 | 文档 |
authenticated-proxy |
带用户名和密码的 HTTP proxy | 文档 |
automation-extensions |
多时间调度和 eager automation_update |
文档 |
browser-proxy |
让 Browser Use 的网络辅助进程继承显式代理设置 | 文档 |
chatgpt-dil-markdown-fallback |
交互式 ChatGPT 回复渲染失败时显示已保存的 Markdown 正文 | 文档 |
chatgpt-dots-any-country |
当账号响应受到国家限制时,仍显示 ChatGPT Dots 入口和可用性说明 | 文档 |
chatgpt-sidebar-separate-history |
ChatGPT 历史记录默认仅显示聊天,并记住聊天 / Work / 全部筛选选项 | 文档 |
chronicle-skysight |
可选的 Linux 桌面活动记忆与受限 Skysight MCP 工具 | 文档 |
codex-micro |
使用上游 node-hid 的 Codex Micro hotplug/hidraw policy |
文档 |
community-features-in-gui-settings |
在常规设置页顶部查看公共功能、已声明的子功能及已启用的本地功能树;显示构建选择的数量与状态,支持英语和简体中文 | 文档 |
community-profile-isolation |
将 Community 的 Codex/Electron 状态与子进程 CLI 解析和官方 ChatGPT 隔离 | 文档 |
computer-use-linux |
Linux desktop-control UI 与原生 MCP backend | 文档 |
copilot-reasoning-effort |
Copilot auth 的 reasoning-effort 默认值 | 文档 |
desktop-identity |
通知与子进程使用 Community 桌面入口标识,以正确显示图标 | 文档 |
desktop-new-window |
在 ChatGPT Community 桌面启动器中添加“新建窗口”操作 | 文档 |
directory-only-working-tree-watch |
有界 Watchbound 工作树监听 | 文档 |
filesystem-root-follow-ups |
允许工作目录为 / 的现有本地任务继续发送消息 |
文档 |
flatpak-chrome-native-messaging |
将官方 Chrome 扩展连接到 Flatpak Google Chrome | 文档 |
frameless-titlebar |
隐藏官方 Linux overlay 按钮,改由 compositor 管理窗口装饰 | 文档 |
global-dictation |
X11 / XDG portal 全局听写快捷键 | 文档 |
wayland-global-shortcuts |
为弹出聊天、Mini/Pet 等全局快捷键提供原生 Wayland 支持;可独立于听写启用 | 文档 |
global-dictation-gnome |
无需 RemoteDesktop 会话的可选 GNOME Shell 粘贴扩展;依赖 global-dictation,必须显式启用扩展 |
文档 |
linux-performance-workarounds |
针对受影响系统的 renderer workaround | 文档 |
mcp-helper-reaper |
安全清理孤立 MCP helper | 文档 |
model-picker-default-presets |
配置 ChatGPT Default 的有序 model/effort 组合 | 文档 |
node-repl-reaper |
清理 owner 退出后泄漏的 Browser Use node_repl |
文档 |
omarchy-theme |
加载当前 Omarchy 主题生成的 CSS | 文档 |
persistent-status-panel |
在线程切换和重启后保留 /status panel |
文档 |
pet-overlay |
Linux avatar overlay 定位和 compositor hints | 文档 |
preferred-editor-file-links |
单击源代码链接时使用所选编辑器打开 | 文档 |
project-group-last-updated-sort |
对 project group 和 task 应用 Last updated 排序 | 文档 |
project-task-sort |
恢复 alternate Projects 的 Created 排序 | 文档 |
read-aloud |
为 assistant response 添加 Linux 朗读控件 | 文档 |
read-aloud-mcp |
让 agent 通过 Linux Read Aloud backend 发声 | 文档 |
reasoning-visibility |
在常规设置中添加默认关闭且已翻译的推理摘要开关;重启后生效 | 文档 |
record-and-replay |
将 Linux 操作演示录制为可复用 skill | 文档 |
remote-control-ui |
显示实验性 remote-control 设置 | 文档 |
remote-mobile-control |
实验性 Linux remote-host / outbound-control flow | 文档 |
shallow-repository-watches |
避免临时 repo preview 在主线程递归遍历 | 文档 |
shared-app-server-socket |
共享 protocol-transparent Unix app-server socket | 文档 |
start-minimized-to-tray |
在常规设置中添加默认关闭的启动到系统托盘选项,可选择每次启动或仅登录自动启动时隐藏窗口 | 文档 |
thorium-chrome-plugin |
为官方 Chrome integration 添加 Thorium | 文档 |
tray-usage |
在 Linux 系统托盘菜单显示剩余用量 | 文档 |
usage-limit-send-attempt |
登录账户用量耗尽时,仍允许在本地 Codex 对话中尝试发送消息 | 文档 |
ui-tweaks |
可选 UI 与交互自定义 | 文档 |
若要在 GNOME Wayland 下听写时避免 RemoteDesktop 权限提示,请通过
make setup-native 同时选择 global-dictation 和 global-dictation-gnome,
然后重新构建并安装。首次启动应用会为当前用户安装配套扩展;注销并重新登录后,
显式执行 gnome-extensions enable [email protected]。
启用扩展后请重启应用/helper。helper 会在启动时自动检查配套扩展的版本:
已启用且兼容时选择 GNOME,否则选择 RemoteDesktop;此选择在重启前保持不变。
一旦选择 GNOME,粘贴错误不会回退到 RemoteDesktop,也不会自动重试。
构建功能仅负责分发和安装配套扩展;手动安装的兼容扩展也会被自动检测。
快捷键授权仍使用 GlobalShortcuts。关闭构建功能不会卸载用户扩展;详见
启用与移除说明。
可选的 Computer Use backend 提供 guard-accessibility 命令,可显式在前台保持
GNOME 辅助功能开启。它不会自动启动;详见 Linux Computer Use。
启用 shared-app-server-socket 并保持 Desktop 运行后,可使用
codex-desktop --cli 将 Codex CLI 连接到 Desktop 的 app-server。详见
CLI 连接说明。
ChatGPT account rollout 和 server-side 功能仍由 OpenAI 控制。重新构建本项目 不会解锁账号功能。
如需输入 CSS 字体 fallback 列表,可启用可选的
ui-tweaks 自定义字体输入,
在外观设置的字体菜单中切换系统字体列表与手填字体栈。这个子选项默认关闭,
需在本地 feature settings 中启用后重新构建。
ui-tweaks 的可选子选项 tweaks.selection.moreDetails.enabled 可恢复 Codex
回复正文选中文字菜单中的“更多详情”,让 ChatGPT Quick Chat 结合原对话上下文解释
所选文字。此子选项默认关闭;详见 UI Tweaks 配置。
测试本地构建时,通过 codex-app/start.sh 启动,并保留正常桌面启动器中的
Electron 参数,包括需要的 --proxy-server=...。ChatGPT 账号初始化完成后,
Quick Chat 入口才会可用。
ui-tweaks 的可选子选项 tweaks.selection.annotationSubmit.enabled 默认关闭:
选中文字后,当前有活动的批注文字编辑器时,Ctrl+Enter 发送批注文字,不被常规输入框拦截。
详见批注发送配置。
配置可选扩展
推荐使用向导:
make setup-native
也可以手动复制 gitignored 配置:
cp linux-features/features.example.json linux-features/features.json
{
"enabled": [
"read-aloud",
"ui-tweaks"
]
}
然后重新构建并安装:
make install-native
私有扩展可以放在 gitignored 的 linux-features/local/<feature-id>/,并使用相同
manifest。已知 retired ID 会被忽略以迁移旧配置;任意未知 ID 与拼写错误仍会
报错。参阅扩展框架 README和
扩展架构。
更新
deb、RPM 和 pacman 包默认包含 codex-update-manager。其 user service 使用同一签名 APT
metadata 检查更新,按 version/architecture/SHA-256 缓存官方包,使用当前启用
扩展在独立 workspace 中重建原生包,并等待受管应用退出后授权包管理器安装。
持久事务用于恢复中断或部分完成的安装;此流程不使用手动生成树重建的目录原子交换。
上一份已管理软件包会保留用于回滚。
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
构建不含 updater 的手动更新包:
PACKAGE_WITH_UPDATER=0 make package
make install
AppImage、仓库内生成应用、Nix 和手动更新的 Gentoo 产物不使用此原生包 updater。 参阅更新器。
构建、打包与运行
# 构建本地应用树并直接运行
make build-app
make run-app
# 为当前发行版构建并安装原生包
make package
make install
# 构建指定格式
make deb
make rpm
make pacman
make appimage
构建采用事务方式:候选版本通过验证后才会替换当前应用。启用的 ASAR 扩展 发生 drift 时会拒绝候选版本;未启用扩展不会被探测。依赖、变量、输出布局、 并行构建和 payload 检查见构建与打包。
故障排除
| 问题 | 首先检查 |
|---|---|
| 官方与 Community 启动互相影响 | 完全退出所有 ChatGPT 进程;两者共享上游 profile |
Flatpak Chrome 能打开 AppImage,但扩展显示 Native transport disconnected |
启用 flatpak-chrome-native-messaging;参阅 Flatpak Chrome 设置 |
| 迁移后 Browser/Chrome extension 无法连接 | 完全退出 ChatGPT 与 Chrome,再按故障排除执行窄范围 cache repair |
| 签名或软件包验证失败 | 检查系统时间、网络、gpgv、architecture 和磁盘空间;有意进行未验证的本地构建时,必须显式传入文档中的开关 |
| 应用无法启动 | 运行 /opt/codex-desktop/start.sh --diagnose |
| 应用使用 XWayland,或需要持久化 Electron 参数 | 确认为 Wayland 会话时会自动选择原生后端;可用 CODEX_OZONE_PLATFORM=x11|wayland 固定后端,或在 ~/.config/codex-desktop/electron-flags.conf 中每行写一个参数,例如 --ozone-platform=x11 |
| AppImage 报 sandbox 错误 | 启用 user namespaces 或安装原生包;不会自动添加 --no-sandbox |
| 上游更新后启用扩展发生 drift | 禁用该扩展确认 clean baseline,并在 issue 中附上 patch report |
| updater 等待应用退出 | 关闭受管应用(默认 /opt/codex-desktop/ChatGPT);用 codex-update-manager diagnose --json 检查 appExecutable 和 appRunning |
旧 codex-app.backup-* 出现权限错误 |
先确认精确路径,再按 root-owned backup 流程处理;不要盲删 wildcard |
完整指南:故障排除。
项目文档
- 入门:原生安装、构建与打包、Nix、Raspberry Pi 5
- 运行与维护:架构、更新器、故障排除
- 扩展:扩展框架、扩展架构、Linux Computer Use、Record and Replay、Chronicle / Skysight
- 贡献:贡献指南、Agent 指令、仓库结构、验证流程、生成与运行时说明
- 项目运维:GitHub CLI 认证、Label 管理
旧 macOS DMG 转换、下载 Electron 替换、原生模块重建、本地 webview server 和 自定义 warm-start 文档不会恢复为当前文档,因为这些 runtime 责任已由官方 Linux 软件包承担。
免责声明
这是一个非官方社区项目,与 OpenAI 没有隶属关系。ChatGPT、OpenAI 服务、 商标、上游应用代码、二进制文件和资产仍归 OpenAI 或各自所有者所有。
本仓库在本地下载并重新打包官方 Linux payload,不授予任何 OpenAI 软件或 服务权利。使用 ChatGPT 仍须遵守 OpenAI 的适用条款和 server-side 功能可用性。
MIT 许可证仅适用于本仓库的 wrapper source、打包、文档和社区扩展。