Unofficial Linux packaging for Codex Desktop.
End users only need files from GitHub Releases. No need to clone this repo or install Node.js.
Release page: https://github.com/cuongducle/codex-linux/releases/latest
- Supported target: Ubuntu 22.04 and newer
- Recommended: Ubuntu 24.04 or newer
- Unsupported: Ubuntu 20.04 and older
- Go to Releases.
- Download the latest
codex-desktop-*.debfile. - Install:
sudo apt install ./codex-desktop-*.deb- Go to Releases.
- Download the latest
codex-desktop-*-x86_64.AppImage. - Run:
chmod +x codex-desktop-*-x86_64.AppImage
./codex-desktop-*-x86_64.AppImage.deb: download and install the newer release file..AppImage: replace the old AppImage with the new release file.
# Download upstream DMG
curl -fL "https://persistent.oaistatic.com/codex-app-prod/Codex.dmg" -o Codex.dmg
# Extract payload + rebuild Linux native modules
bash scripts/setup.sh ./Codex.dmg
# Build packages
npm run build:linux
# or separately:
# npm run build:deb
# npm run build:appimageOutput artifacts are in dist/.
Push a version tag:
git tag v0.1.0
git push origin v0.1.0GitHub Actions will automatically:
- Build
.deband.AppImage - Upload both files to GitHub Releases
- Generate APT repository metadata (
Packages,Release) - Publish APT repo to
gh-pages
Workflow check-upstream.yml runs daily and:
- Sends a
HEADrequest to upstreamCodex.dmgand checksETagfirst - If
ETagis unchanged: skip download - If
ETagchanged: downloadCodex.dmg, extract Codex app version fromapp.asar/package.json - Compares that version with latest git tag (
v*) - If newer: updates
upstream-version.txt, updatesupstream-etag.txt, commits, and creates a new tagv<codex-version>
That new tag triggers the release workflow, which publishes new .deb, .AppImage, and refreshed APT metadata.
- Enable GitHub Pages:
- Settings -> Pages -> Source:
Deploy from a branch - Branch:
gh-pages(root)
-
Keep repository public (for public downloads).
-
Add repository secret
RELEASE_PAT(recommended):
- Create a Personal Access Token with
repo+workflowscopes. - Save it in repo Settings -> Secrets and variables -> Actions ->
RELEASE_PAT. - This is used by daily update workflow to push tags that can trigger downstream release workflow.
- Packaging targets: DEB and AppImage only
- Linux native module rebuild (
better-sqlite3,node-pty) - Release CI runs on current Ubuntu runners with
dmg2imgand7zip - Auto-upload release artifacts (
.deb,.AppImage) to GitHub Releases - Optional APT repo publish on release tag
scripts/setup.sh- Extract from DMG, rebuild native modules, local launcher setupscripts/build-packages.sh- Build DEB/AppImage via electron-builderscripts/build-apt-repo.sh- Generate Debian repository metadatascripts/generate-apt-install-script.sh- Generate publicinstall.sh.github/workflows/release.yml- CI build + release + APT publishelectron-builder.yml- Packaging config
- This is an unofficial packaging project.
- This repository does not redistribute Codex source; it builds from upstream
Codex.dmg. - APT setup currently uses
trusted=yes(unsigned repository).