Codex GUI
A native home for your coding agents.
Codex and DeepSeek Harness in one open-source desktop app.
Built with Rust and GPUI. Work locally or connect to a remote machine.
Installation · Build locally · Remote controls
Installation #
Download builds from the release server.
Each tag has platform directories containing packages, SHA256SUMS, and a release manifest.
Standalone DSH archives are published alongside the GUI for Linux, macOS, and
Windows on x86_64 and ARM64. They include Node and the patched app-server runtime;
see portable DSH downloads.
Build locally #
nix develop
cargo build --bin codex-code-mode-host
cargo run --bin codex-gui
Windows uses native Rust and MSVC. See Windows builds for toolchain setup, portable ZIP bundling, and disposable Windows VMs in Spindle.
GPUI dependencies use the Tangled forks and branches declared in Cargo.toml.
For local development, put [patch] overrides in .cargo/config.local.toml.
For example,
# Local development dependency overrides.
[patch."https://tangled.org/superkenvery.tngl.sh/zed"]
gpui = { path = "../Open-Agents-GUI/zed/crates/gpui" }
gpui_platform = { path = "../Open-Agents-GUI/zed/crates/gpui_platform" }
[patch."https://tangled.org/superkenvery.tngl.sh/gpui-kit"]
gpui-component = { path = "../Open-Agents-GUI/gpui-kit/crates/component" }
gpui-kit-assets = { path = "../Open-Agents-GUI/gpui-kit/crates/assets" }
Entering nix develop (or reloading direnv) installs a pre-push hook via
git-hooks.nix. It checks the committed
Cargo.lock at each ref being pushed, allowing only the repository's own crates
as path dependencies. Manifests are read from the same commit; working tree
changes do not affect the check. Deleted refs are skipped. Before pushing, disable
local patches, regenerate Cargo.lock, and commit the corrected lockfile.
To check HEAD manually:
pre-commit run --hook-stage pre-push --all-files
The local code-mode host keeps Codex's upstream transport and session protocol,
and executes JavaScript with the QuickJS runtime owned by the Codex fork
(codex-rs/code-mode-runtime).
codex-gui supports both Codex and DeepSeek Harness in one app. The source
selector offers Local Codex daemon, Embedded Codex, and Embedded DSH. Embedded
DSH runs as a GUI-managed child process. Linux, macOS, and Windows releases bundle the
patched harness with app-server support.
Remote controls #
Existing Codex sources are retained. Sources from dsh-sources.json are imported
once with their project paths, projectless chats, and chat defaults. Appearance
settings use the Codex GUI settings file.
For local development, DSH is resolved in this order:
--dsh-repo <path>(runsnix develop <path> -c pnpm dsh);--dsh-bin <path>;$DSH_GUI_DSH_BIN;- a
dshshipped next to thecodex-guiexecutable; dshonPATH.
cargo run --bin codex-gui -- \
--dsh-repo /path/to/deepseek-harness \
--dsh-profile app-server
Select Embedded DSH to use the harness. Its executable and base arguments can also be customized in the source editor.
Launch flags override the Embedded DSH client for the current process only;
they do not change the saved source configuration. For a development build,
use --dsh-bin /path/to/patched/dsh to select the harness built by this project's
nix build .#dsh-harness. A separately installed official dsh may not include
the app-server profile. Connection failures and the actual CLI invocation are
logged to the terminal; the Disconnected tag also shows the error in its tooltip.
- Rust 90%
- Python 3%
- PowerShell 3%
- Nix 2%
- HTML <1%
- 1 more language <1%