Codex App without electron
2

Configure Feed

Select the types of activity you want to include in your feed.

Rust 94.3%
Nix 2.2%
JavaScript 1.6%
PowerShell 1.0%
Python 0.9%
Starlark 0.1%
Shell 0.1%
112 2 0

Clone this repository

https://tangled.org/superkenvery.tngl.sh/codex-gui https://tangled.org/did:plc:d6fh5uvf5pmvkyfqmo4rxqwj
git@tangled.org:superkenvery.tngl.sh/codex-gui git@tangled.org:did:plc:d6fh5uvf5pmvkyfqmo4rxqwj

For self-hosted knots, clone URLs may differ based on your setup.


README.md

codex-gui#

Opensource desktop GUI app for codex. No electron, built with gpui.

image image

The frame rate is actually steady 60fps when using. HUD shows instable frame interval because there were no user interaction at that time, so no new frames were generated.

https://github.com/user-attachments/assets/75e13e95-1d42-4869-a9c0-9a102414f130

Installation#

You can download build artifacts from github action runs.

Run#

nix develop
cargo build --bin codex-code-mode-host
cargo run --bin codex-gui

The current local dependency upgrade uses sibling checkouts at ../Open-Agents-GUI/gpui-kit and ../Open-Agents-GUI/zed. Keep both directories in place when building with Cargo. The forks are updated locally and have not been pushed; switch the path dependencies back to published Git revisions before producing a standalone distribution.

The local code-mode host keeps Codex's upstream transport and session protocol, but executes JavaScript with the patched QuickJS runtime in crates/codex-code-mode-runtime-quickjs.

dsh-gui is the same GUI driving a DeepSeek Harness instead of the embedded Codex runtime. Released packages bundle the harness, so it needs no flags; the GUI looks for dsh in this order:

  1. --dsh-repo <path>, which runs pnpm dsh inside a harness source checkout;
  2. --dsh-bin <path>;
  3. $DSH_GUI_DSH_BIN;
  4. a dsh shipped next to the dsh-gui executable;
  5. dsh on PATH.
cargo run --bin dsh-gui -- \
  --dsh-repo /path/to/deepseek-harness \
  --profile app-server

The GUI continues to use the pinned Codex protocol types; the dsh process owns model, permission, session, and configuration compatibility. Harness state stays in $DSH_HOME (defaulting to ~/.dsh), so a bundled dsh-gui shares its login, sessions, and settings with any other dsh installation and never copies the harness into the home directory.

Packaging#

The flake is the canonical package definition for Linux and macOS. It also declares the public GHCR-backed binary cache, so these commands can reuse CI builds:

nix run --accept-flake-config .
nix build --accept-flake-config .#codex-gui

Linux additionally exposes .#deb, .#rpm, and .#appimage. macOS exposes .#macos-app and .#macos-archive. Every package keeps codex-gui and codex-code-mode-host in the same executable directory because the host is a runtime component, not a standalone application.

The dsh-gui outputs use the same packaging pipeline for the DeepSeek Harness client:

nix build --accept-flake-config .#dsh-gui
nix build --accept-flake-config .#dsh-gui-deb        # also -rpm, -appimage
nix build --accept-flake-config .#dsh-gui-macos-archive

dsh-gui carries the harness, its node runtime, and the Codex app-server adapter, so its artifacts are considerably larger than codex-gui's.

Cached build components#

.#rust-binaries compiles the Rust executables once through Crane. .#dsh-harness builds the SuperKenVery/deepseek-harness fork from the commit in flake.lock, including its existing app-server adapter and profile. Both are independent, cacheable derivations; product assembly and archives consume them without recompilation. There is no intermediate adapter release.

The harness build uses pinned Node/pnpm, a fixed-output dependency store, and offline compilation of the shared host/client libraries and native components. Its install check starts the stdio server with a temporary DSH_HOME, requiring no account. The pnpm 11 SQLite index is cached as normalized logical records and restored before offline installation, so Linux and macOS share the same dependency hash.

To update the harness, run nix flake update deepseek-harness, update the dependency hash in nix/dsh-harness.nix if the lockfile changed, and build .#dsh-harness before the platform bundles. Keep the pnpm version aligned with the fork's packageManager. CI builds Linux x86_64/aarch64 and macOS aarch64; macOS x86_64 is also exposed as a flake output but has no CI runner.

Release artifacts#

The GitHub Actions build publishes x86_64 and aarch64 Linux DEB, RPM, and AppImage artifacts, an aarch64 macOS app archive, and native x86_64 and aarch64 Windows ZIP archives, plus the same Linux and macOS artifacts for dsh-gui.

DSH GUI.app includes its Node runtime and relocated native libraries. macOS bundles use ad-hoc signatures verified during packaging. Developer ID signing and Apple notarization are not part of this build; downloaded apps may still trigger Gatekeeper.