Native Linux desktop client for ChatGPT / Codex coding workflows — local projects, streaming agent threads, diff review, and explicit command approvals. Ships a verified, pinned Codex App Server runtime inside the AppImage. No browser wrapper, no separate Codex install.
Value proposition: Cotux brings the Codex coding-agent experience to Linux as a self-contained desktop app: sign in with your existing ChatGPT subscription, work in local Git repos, and stay in control with sandboxed workspaces and approval prompts.
Not affiliated with OpenAI. Cotux is an independent open-source client. It does not load chatgpt.com, scrape private APIs, or claim feature parity with proprietary macOS/Windows apps.
There is no official ChatGPT or Codex desktop app for Linux (as of 2026). Developers on Linux typically rely on the web UI, CLI, or editor extensions. Cotux targets users who want:
- A native Linux GUI for Codex-style coding agents
- ChatGPT subscription login (managed OAuth via the official App Server — not a separate API key workflow)
- Local-first workflows: pick project folders, resume threads, stream responses
- Trust boundaries: workspace-scoped sandbox, explicit approval for shell commands and file patches
- Portable installs: AppImage with an immutable, hash-verified bundled runtime
If you are looking for ChatGPT on Linux, Codex on Linux, Codex desktop Linux, Codex AppImage, Linux coding agent GUI, or a Tauri Codex client, Cotux is built for that use case.
Suggested GitHub topics: linux chatgpt codex openai-codex codex-app-server tauri appimage rust react coding-agent ai-coding desktop-app
┌─────────────┐ Tauri commands ┌──────────────────┐
│ React UI │ ◄──────────────────────►│ Rust core │
│ (Vite/TS) │ events (streaming) │ JSON-RPC client │
└─────────────┘ └────────┬─────────┘
│ stdio (JSONL)
▼
┌──────────────────┐
│ Codex App Server │ ← bundled sidecar
│ (pinned) │
└────────┬─────────┘
│
┌────────────────────────────┼────────────────────────────┐
▼ ▼ ▼
User workspaces $CODEX_HOME ChatGPT / OpenAI
(selected folders) (~/.codex) (official OAuth)
- Frontend: React 19 + TypeScript + Vite 7
- Shell: Tauri 2 (Rust),
tauri-plugin-shellfor sidecar process control - Protocol: JSON-RPC 2.0 over newline-delimited JSON on stdio (App Server spec)
- Persistence: SQLite (app metadata) + XDG directories + standard Codex
CODEX_HOME(~/.codex) - Distribution: AppImage for x86_64 Linux (GitHub Releases)
Pull requests run validate:runtime, frontend build/tests, and Rust tests. Tags v* trigger signed AppImage builds with SBOM.
Cotux does not use a floating latest binary. The runtime is pinned in runtime-manifest.json and verified before every build.
| Field | Value |
|---|---|
| Runtime version | 0.146.0 |
| Release tag | rust-v0.146.0 |
| Upstream | openai/codex |
| Binary | codex-app-server (MUSL build for Linux) |
| Transport | stdio (stdio:// default — no extra CLI flags) |
| Supported range | >=0.145.0 <0.148.0 |
| License | Apache-2.0 |
x86_64 artifact (verified at fetch time):
| Property | Value |
|---|---|
| URL | codex-app-server-x86_64-unknown-linux-musl.tar.gz |
| SHA-256 | 37d8a614e04ee37705d0afbfbe344c9403617bb0b19647040bd0a2a3c846aa17 |
| Size | 252,473,408 bytes (~241 MB) |
Download and verify locally:
npm run fetch:runtime
npm run validate:runtime # handshake: initialize → account/read → thread/list| Setting | Value |
|---|---|
| App ID | dev.local.cotux |
| Config | ~/.config/dev.local.cotux/ |
| Data | ~/.local/share/dev.local.cotux/ |
| Cache | ~/.cache/dev.local.cotux/ |
CODEX_HOME |
$CODEX_HOME if set, else ~/.codex (same as Codex CLI / VS Code) |
| SQLite DB | ~/.local/share/dev.local.cotux/cotux.sqlite |
State lives outside the AppImage so updates and rollbacks do not wipe projects, threads, or auth data.
| Area | Status |
|---|---|
| Project folder picker + persistence | Done |
| Thread list / resume / new thread | Done |
| Streaming agent events + markdown timeline | Done |
| Turn timeline parity (summaries, plans, activity cards, fork) | Done |
| ChatGPT login via App Server OAuth | Done |
| Command & patch approval cards | Done |
| Composer harness (model, reasoning, speed, plan/meta) | Done |
| Usage quota in top bar | Done |
| i18n (en, pt, es) | Done |
| Per-file diff review (side-by-side) | Done |
| Copy message / code blocks from timeline | Done |
| Live git watcher for Changes panel | Done |
| Project archiving | Done |
| Sticky user messages in chat | Done |
| Continue from turn (thread fork + rollback) | Done |
| GitHub Actions CI | Done |
| Signed AppImage + SBOM (release workflow) | On tag |
| Embedded terminal tab | Planned (not in beta) |
| aarch64 AppImage on Releases | Not shipped yet |
Cotux detects the system language (navigator.languages) and supports English, Portuguese, and Spanish. You can override the locale in Settings → Language.
- Not a chatgpt.com Electron/WebView wrapper
- Not an unofficial ChatGPT client for general chat (coding-agent focus)
- Not a guarantee of parity with proprietary Codex/ChatGPT desktop apps on other OSes
- Does not use private APIs, scraping, or reverse engineering
- OS: Linux x86_64 (validated on Ubuntu 24.04+; Wayland and X11)
- Display: X11 or Wayland
- Account: ChatGPT paid plan (Plus, Pro, Team, or Enterprise)
- Install: AppImage from GitHub Releases (
chmod +xrequired after download) - Build deps: see below (not required for end-user AppImage)
sudo apt update
sudo apt install -y \
libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev \
libglib2.0-dev pkg-config libayatana-appindicator3-dev librsvg2-devgit clone <this-repo> cotux && cd cotux
npm install
npm run fetch:runtime # download + SHA-256 verify sidecar
npm run tauri devnpm run validate:runtime
cd src-tauri && cargo test
npm run build./scripts/build-release.sh
# or: npm run build && npm run tauri buildDocker-based validation (GTK deps included):
docker build -f Dockerfile.validate -t cotux-validate .
docker run --rm -v "$PWD":/workspace -w /workspace/src-tauri cotux-validate cargo testcotux/
├── src/ # React UI (projects, threads, chat, approvals)
├── src-tauri/ # Rust core (runtime supervisor, storage, Tauri commands)
│ └── binaries/ # codex-app-server sidecar (generated, gitignored)
├── scripts/
│ ├── fetch-codex-runtime.ts
│ ├── validate-runtime.ts
│ └── build-release.sh
├── runtime-manifest.json # pinned runtime version + hashes
└── docs/
├── implementation-journal.md
├── release-validation.md
├── threat-model.md
└── adr/
- Contributing
- Security policy
- Implementation journal
- Release validation notes
- Threat model (draft)
- E2E checklist
- Beta test plan (pre-release sign-off)
- Roadmap (post-timeline features)
- Changelog
Apache-2.0. See LICENSE.
The bundled Codex App Server is licensed under Apache-2.0 by its upstream authors. Cotux is a separate project and is not endorsed by OpenAI.