Remote-friendly web workspace for Codex sessions
Project description
open-codex-ui
Remote-friendly Codex web workspace for continuing sessions from desktop and mobile browsers.
Resume
Requirements
uvfor running the published application- Python 3.12+, Node.js 20+, and
pnpmonly for source development
Install
Run the published application without a permanent installation:
uvx open-codex-ui
The wheel includes the compiled frontend and starts in production mode. For a persistent command, install it as a uv tool:
uv tool install open-codex-ui
open-codex-ui
For source development, install the backend dependencies:
uv sync
Codex workspace support uses the published open-codex-bridge package from PyPI.
Then install the frontend dependencies:
cd web
pnpm install
Authentication
This app now supports password protection for deployed environments.
Enable auth with either:
YIER_AUTH_PASSWORDYIER_AUTH_PASSWORD_HASH
Plain password example:
export YIER_AUTH_PASSWORD='change-this-password'
Hashed password example:
uv run python -c "from yier_web.auth import hash_password; print(hash_password('change-this-password'))"
export YIER_AUTH_PASSWORD_HASH='paste-generated-hash-here'
Optional auth settings:
YIER_AUTH_SECRET: optional extra signing secret for session cookiesYIER_AUTH_SESSION_TTL_HOURS: cookie lifetime in hours, default is168YIER_CODEX_EMBED_TOKEN: token for unauthenticated Codex iframe access
If neither password variable is set, authentication is disabled.
Codex Iframe Embed
See IFRAME.md for iframe setup, authentication, and the
postMessage API.
Development Startup
Development mode is different from production:
- The backend should run with
--debug - The frontend should run with Vite dev server
- In this mode, the backend proxies frontend requests to
http://127.0.0.1:5173
Recommended one-command startup:
uv run open-codex-ui-dev
This starts:
- frontend:
pnpm dev - backend: debug mode with reload
If you prefer split terminals:
Frontend only:
uv run open-codex-ui-dev-web
Backend only:
uv run open-codex-ui-dev-backend
You can also override backend bind settings:
uv run open-codex-ui-dev --host 127.0.0.1 --port 9999
uv run open-codex-ui-dev-backend --host 127.0.0.1 --port 9999
Default address:
- App:
http://127.0.0.1:9999 - Vite dev server:
http://127.0.0.1:5173
Notes:
- Keep
pnpm devrunning, otherwise the backend cannot proxy the frontend in debug mode. - API requests still go through the Python server at port
9999.
Production Startup
The published wheel includes the compiled frontend and does not use the Vite dev server:
uvx open-codex-ui
The server listens on 127.0.0.1:9999 by default. Bind to the local network
explicitly when needed:
uvx open-codex-ui --host 0.0.0.0 --port 9999
When running from a source checkout, build the frontend before starting:
uv run open-codex-ui-build-web
uv run open-codex-ui-prod
In production mode:
- The backend serves the compiled assets packaged under
yier_web/static - No Vite proxy is used
- Authentication should usually be enabled with
YIER_AUTH_PASSWORDorYIER_AUTH_PASSWORD_HASH
Production example:
export YIER_AUTH_PASSWORD='change-this-password'
uvx open-codex-ui --host 0.0.0.0 --port 9999
Common Commands
Backend tests:
uv run --all-packages pytest
Targeted backend tests:
uv run --all-packages pytest tests/test_codex_backend.py tests/test_codex_workspace.py tests/test_app.py
Backend compile check:
uv run python -m compileall yier_web
Frontend unit tests:
cd web
pnpm test:unit
Frontend type check:
cd web
pnpm type-check
Frontend production build:
uv run open-codex-ui-build-web
Startup Summary
Development:
uv run open-codex-ui-dev
Production:
export YIER_AUTH_PASSWORD='change-this-password'
uvx open-codex-ui --host 0.0.0.0 --port 9999
Available uv Scripts
Development:
uv run open-codex-ui-dev: start frontend and backend togetheruv run open-codex-ui-dev-web: start Vite onlyuv run open-codex-ui-dev-backend: start backend only in debug mode
Production:
uvx open-codex-ui: run the published wheel in production modeuv run open-codex-ui-build-web: build frontend assetsuv run open-codex-ui-prod: start backend in production mode
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.4.tar.gz.
File metadata
- Download URL: open_codex_ui-0.1.4.tar.gz
- Upload date:
- Size: 668.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a676a0067fbf0d9d29dcb40650c821afe00fe8fac83c1d1d93d65ac3d4ce792
|
|
| MD5 |
7ab6ee4e50a424bc8cc63a4495c0b10a
|
|
| BLAKE2b-256 |
2230be3dd256070b5fb683809c600ea60849c16294c2223055bfd739fcca5771
|
Provenance
The following attestation bundles were made for open_codex_ui-0.1.4.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.4.tar.gz -
Subject digest:
6a676a0067fbf0d9d29dcb40650c821afe00fe8fac83c1d1d93d65ac3d4ce792 - Sigstore transparency entry: 2255377092
- Sigstore integration time:
-
Permalink:
Sube-py/open-codex-ui@95c02db31a466a2e9deb88d45637ab0a053fd0cd -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/Sube-py
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@95c02db31a466a2e9deb88d45637ab0a053fd0cd -
Trigger Event:
push
-
Statement type:
File details
Details for the file open_codex_ui-0.1.4-py3-none-any.whl.
File metadata
- Download URL: open_codex_ui-0.1.4-py3-none-any.whl
- Upload date:
- Size: 660.2 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 |
47689c9a4efc12456ad8d06ec7b1b2cc7b3ea38f947c15b697c2043291694913
|
|
| MD5 |
06af50336f6ddb5d39efac9ec1685e93
|
|
| BLAKE2b-256 |
0a6e80f2df70605e119e41581217d95a067354b17e654644cca866a508969e80
|
Provenance
The following attestation bundles were made for open_codex_ui-0.1.4-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.4-py3-none-any.whl -
Subject digest:
47689c9a4efc12456ad8d06ec7b1b2cc7b3ea38f947c15b697c2043291694913 - Sigstore transparency entry: 2255377094
- Sigstore integration time:
-
Permalink:
Sube-py/open-codex-ui@95c02db31a466a2e9deb88d45637ab0a053fd0cd -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/Sube-py
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@95c02db31a466a2e9deb88d45637ab0a053fd0cd -
Trigger Event:
push
-
Statement type: