Remote-friendly web workspace for Codex sessions
Project description
Open Codex UI
A remote-friendly web workspace for continuing Codex sessions from desktop and mobile browsers.
[!IMPORTANT] Non-commercial use only. This project is provided solely for learning, research, personal use, and other non-commercial purposes. Commercial use requires prior written permission from the copyright holder.
Preview
Quick Start
Run the packaged application with uv:
uvx open-codex-ui
Open http://127.0.0.1:13140. The wheel already contains the compiled frontend.
To accept connections from other devices, bind explicitly to the network:
uvx open-codex-ui serve --host 0.0.0.0 --port 13140
Background Service
Install the command persistently and register login startup:
uvx open-codex-ui daemon install
This installs open-codex-ui into uv's user bin directory and uses the native
service manager for the current platform:
| Platform | Service |
|---|---|
| macOS | LaunchAgent in ~/Library/LaunchAgents |
| Linux | systemd --user service |
| Windows | Current-user Task Scheduler task |
After opening a new shell, manage the service directly:
open-codex-ui daemon status
open-codex-ui daemon stop
open-codex-ui daemon start
open-codex-ui daemon uninstall
The service starts when the user logs in. Runtime state, retained environment,
and logs live under ~/.yier/web/. Run daemon install again to update its
host, port, installed version, or captured environment.
Authentication
Authentication is disabled unless a password variable is configured:
export YIER_AUTH_PASSWORD='change-this-password'
uvx open-codex-ui daemon install --host 0.0.0.0
For a hashed password:
uv run --with open-codex-ui python -c "from yier_web.auth import hash_password; print(hash_password('change-this-password'))"
export YIER_AUTH_PASSWORD_HASH='paste-generated-hash-here'
| Variable | Purpose |
|---|---|
YIER_AUTH_PASSWORD |
Plain login password |
YIER_AUTH_PASSWORD_HASH |
Hashed login password |
YIER_AUTH_SECRET |
Additional session-cookie signing secret |
YIER_AUTH_SESSION_TTL_HOURS |
Session lifetime; defaults to 168 hours |
YIER_CODEX_EMBED_TOKEN |
Token for unauthenticated iframe access |
daemon install retains HOME, PATH, CODEX_HOME, and current YIER_*
variables in a user-only environment file so they remain available after login.
Development
Source development requires Python 3.12+, Node.js 20+, uv, and pnpm:
uv sync
pnpm --dir web install
uv run dev
The application remains at http://127.0.0.1:13140; in development mode the
backend proxies frontend traffic to the Vite server on port 5173.
| Command | Purpose |
|---|---|
uv run dev |
Start frontend and backend with reload |
uv run dev-web |
Start Vite only |
uv run dev-backend |
Start the backend only |
uv run publish |
Type-check and build frontend assets into yier_web/static |
uv run open-codex-ui |
Run the source checkout in production mode |
uv run pytest |
Run backend tests |
uv run python -m compileall yier_web |
Check Python compilation |
pnpm --dir web test:unit |
Run frontend unit tests |
pnpm --dir web type-check |
Run frontend type checking |
To test the production build from source:
uv run publish
uv run open-codex-ui
Codex integration is provided by the published
open-codex-bridge package.
Iframe Embedding
See IFRAME.md for iframe authentication, setup, and the
postMessage API.
License
Copyright 2026 Sube (zhangluguang). Licensed under the PolyForm Noncommercial License 1.0.0. Commercial use is not permitted without separate written authorization from the copyright holder.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file open_codex_ui-0.1.6.tar.gz.
File metadata
- Download URL: open_codex_ui-0.1.6.tar.gz
- Upload date:
- Size: 865.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9a35c2d093cb1318dfb4dcb83f7ed6bb4cf68c6201883646e0faae148805bfd
|
|
| MD5 |
42591a6493ce09cfc77e281e6b30a03c
|
|
| BLAKE2b-256 |
7fdc4c6df3a94955a647f78f9c7f925a73047edc6cffb9bac20d4ea7344ac3dd
|
Provenance
The following attestation bundles were made for open_codex_ui-0.1.6.tar.gz:
Publisher:
publish.yml on Sube-py/open-codex-ui
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
open_codex_ui-0.1.6.tar.gz -
Subject digest:
f9a35c2d093cb1318dfb4dcb83f7ed6bb4cf68c6201883646e0faae148805bfd - Sigstore transparency entry: 2255703953
- Sigstore integration time:
-
Permalink:
Sube-py/open-codex-ui@2a0199c0ac6121467fc91608fea3e4d59fdc2a58 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/Sube-py
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2a0199c0ac6121467fc91608fea3e4d59fdc2a58 -
Trigger Event:
push
-
Statement type:
File details
Details for the file open_codex_ui-0.1.6-py3-none-any.whl.
File metadata
- Download URL: open_codex_ui-0.1.6-py3-none-any.whl
- Upload date:
- Size: 857.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a1db3c3fb3596be347d93ecf74951f95bd17bb0a4957faa127138b66f157554
|
|
| MD5 |
d5f97b13aa9539396624799ca3fe15f2
|
|
| BLAKE2b-256 |
58eeb792f52459f581936535b017e2df4915594a8d2d769a9ef5b8f0cac3ddf4
|
Provenance
The following attestation bundles were made for open_codex_ui-0.1.6-py3-none-any.whl:
Publisher:
publish.yml on Sube-py/open-codex-ui
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
open_codex_ui-0.1.6-py3-none-any.whl -
Subject digest:
4a1db3c3fb3596be347d93ecf74951f95bd17bb0a4957faa127138b66f157554 - Sigstore transparency entry: 2255703964
- Sigstore integration time:
-
Permalink:
Sube-py/open-codex-ui@2a0199c0ac6121467fc91608fea3e4d59fdc2a58 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/Sube-py
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2a0199c0ac6121467fc91608fea3e4d59fdc2a58 -
Trigger Event:
push
-
Statement type: