CodexUI 1.0 is a native Qt 6 Widgets and browser frontend for the AISuite
codex-bridge. Both applications present the same Codex app-server behavior
without introducing another backend, semantic cache, snapshot store, or
persistence authority.
The canonical process has two threads:
Qt GUI thread
<-> bounded nonblocking Unix socketpair
SNode.C client thread
<-> codex-bridge
<-> Codex app-server
The Qt thread owns widgets and PresentationModel. The SNode.C thread owns the
event loop, selected transport, AISuite::OpenAICodex frontend proxy SDK,
native protocol normalization, and connection/controller telemetry. They
exchange only bounded codexui.presentation JSONL commands and events.
codex-ui is the canonical visual application. Its production shell consumes
the normalized presentation protocol and model directly; there is no parallel
legacy UI or alternate application target.
CodexWebUI is the browser presentation. It uses the framework-neutral
@snodec/codex-frontend SDK from AISuite, connects directly to the bridge over
WebSocket, and follows the same controller, prompt, thread, turn, projection,
and reconnect rules as the native application. Browser-only limitations are
listed in the 1.0 contract.
Qt 6 Widgets, Threads, libgit2 development files (discoverable as libgit2
through pkg-config), SNode.C master/HEAD, and an installed canonical AISuite
package exporting AISuite::OpenAICodex are required. On Debian and Ubuntu,
the libgit2 package is libgit2-dev.
cmake -S . -B "${BUILD_DIR}" -G Ninja \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_PREFIX_PATH="/path/to/aisuite;/path/to/snodec"
cmake --build "${BUILD_DIR}" --parallel 8
ctest --test-dir "${BUILD_DIR}" --output-on-failure --parallel 8
cmake --install "${BUILD_DIR}"Installation includes the codex-ui executable, desktop entry, and SVG icon.
The executable name, application ID, StartupWMClass, desktop entry, and icon
name intentionally match so Linux launchers and taskbars associate the window
with the installed CodexUI application.
Node.js 20 or newer and the exact AISuite revision recorded in
web/AISUITE_REVISION are required. The source
dependency expects the release/CI checkout layout shown below.
workspace/
├── AISuite-extraction/AISuite-final/
└── CodexUI/codexui/
npm ci --prefix ../../AISuite-extraction/AISuite-final/packages/codex-frontend
npm test --prefix ../../AISuite-extraction/AISuite-final/packages/codex-frontend
npm ci --prefix web
npm run release --prefix webThe production artifact is web/app-dist/. CMake installs it below
${CMAKE_INSTALL_DATADIR}/codexui/web; codex-bridge serves those files and
its /codex WebSocket endpoint from the same listener. Node is not part of the
installed runtime. Deployment details are in web/README.md.
The complete thread model, presentation protocol, authority rules, normalized
event vocabulary, public APIs, shell behavior, implementation report, and test
boundaries are documented in
docs/codex-architecture.md.
Current message routing, pending-prompt acknowledgment, scrolling, composer
geometry, shell-output, Inspector, and desktop-integration decisions are
documented in
docs/ui-behavior.md.
The browser architecture, native/web parity boundary, state ownership, and
version 1.0 delivery gates are documented in
docs/web-1.0-contract.md.
Measured performance, equality evidence, packaging, and the release gate are
recorded in docs/web-qualification.md and
docs/web-release.md.
CodexUI is available under the LGPL-3.0-or-later OR MIT dual license.