A Zig + SolidJS account manager for Codex with backend-authoritative state, typed WebUI RPC, and deterministic launch behavior.
- Multi-account management with explicit states:
active,archived,frozen. - Fast account switching (writes selected auth to
~/.codex/auth.json). - Per-account refresh with immediate, per-card UI updates.
- Automatic quota transitions:
- active accounts with zero quota move to archived.
- archived accounts with non-zero quota move back to active.
- Depleted auto-refresh at refresh-window + grace.
- Optional active-account auto-refresh with interval slider (
15sto6h). - Backend-owned persistence (frontend sends intents, backend mutates + persists).
zig build devThis runs frontend checks/build and starts the app.
zig build dev -- --webview
zig build dev -- --browser
zig build dev -- --webDefault order when no explicit flag is provided:
webview -> browser -> web
Release build:
zig build install -Doptimize=ReleaseFastRelease build with stripped symbols:
zig build install -Doptimize=ReleaseFast -Dstrip=trueBuild the full release matrix:
zig build build-all-targets -Doptimize=ReleaseFastOn Linux, build-all-targets now auto-downloads and caches a macOS SDK under .zig-cache/macos-sdk/sdk if you do not provide -Dmacos_sdk=<path> or MACOS_SDK_ROOT. Disable that with -Dauto_download_macos_sdk=false, or change the cache location with -Dmacos_sdk_cache_dir=<path>.
Run installed binary:
./zig-out/bin/codex-managerBuild-time:
- Zig
0.15.2+ - Node.js
20+ - npm
Runtime:
codexCLI inPATH- browser available for
--browser/--web
src/Zig backend, state management, RPC bridge, launch runtimefrontend/SolidJS UIdocs/architecture and RPC contractexamples/minimal integration examples
~/.local/share/com.codex.manager/accounts.json(or platform equivalent)~/.local/share/com.codex.manager/bootstrap-state.json~/.codex/auth.json
Typecheck frontend:
npm --prefix frontend exec -- tsc -p frontend/tsconfig.json --noEmitRun Zig tests:
zig build test- Native webview unavailable on Linux:
- run with
--browseror--web.
- run with
- URL prints but no window appears:
- open the printed
http://127.0.0.1:...URL manually.
- open the printed
- OAuth callback issues:
- ensure port
1455is available and retry login.
- ensure port