Skip to content

Repository files navigation

Cotux

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.

Cotux IDE-style shell: project sidebar, streaming agent chat, and git Changes panel with side-by-side diff


Why Cotux?

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

Related searches

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


Architecture

┌─────────────┐     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-shell for 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)

CI

CI

Pull requests run validate:runtime, frontend build/tests, and Rust tests. Tags v* trigger signed AppImage builds with SBOM.


Bundled Codex App Server (pinned)

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

Application identity & paths

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.


Features (current)

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

Internationalization

Cotux detects the system language (navigator.languages) and supports English, Portuguese, and Spanish. You can override the locale in Settings → Language.


What Cotux is not

  • 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

Requirements

  • 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 +x required after download)
  • Build deps: see below (not required for end-user AppImage)

Linux build prerequisites

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-dev

Quick start (development)

git clone <this-repo> cotux && cd cotux
npm install
npm run fetch:runtime    # download + SHA-256 verify sidecar
npm run tauri dev

Verify

npm run validate:runtime
cd src-tauri && cargo test
npm run build

Release build

./scripts/build-release.sh
# or: npm run build && npm run tauri build

Docker-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 test

Project layout

cotux/
├── 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/

Documentation


License

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.

About

Native Linux desktop client for ChatGPT / Codex coding workflows

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages