Replies: 2 comments
Progress updateThe OpenSpec-only design review is now open as PR #1311. Its current head contains only the six files under The larger locally validated implementation remains local while this ownership and security boundary is reviewed. If the direction is accepted, I will port it from current upstream into reviewable implementation PRs; the exact granularity can follow maintainer preference rather than publishing the raw local worktree. The recovery-only Unix-socket bridge remains deferred from the initial implementation scope. The bounded E2E result remains intentionally narrow: one persistent Codex CLI process and one persistent OpenClaw TUI switched |
|
Design decision: the OpenSpec proposal (#1311) was declined — the core switch-without-restart use case is covered by existing per-key account scoping ( |
Uh oh!
There was an error while loading. Please reload this page.
Problem
Codex App/CLI and OpenClaw can already use the native Codex backend at
/backend-api/codex, but changing between the client's signed-in OAuth account and thecodex-lbaccount pool normally means changing provider configuration or restarting a client/app-server. Generic/v1integrations also replace part of the native harness rather than preserving it.I propose an opt-in, fixed-endpoint routing policy inside
codex-lb:The client remains signed in normally, keeps its native Responses harness, and continues selecting its own model, reasoning effort, tools, plugins/MCP, and requested service tier. The routine switch changes only which OAuth identity owns the next native request and its quota.
Proposed behavior
pool: strip the inbound client OAuth identity before normal account selection; one eligible pooled account owns the request.client_oauth: relay the request-local client OAuth identity directly; do not enter the pool or create a pooled request-log row./backend-api/codexendpoint in both modes;/v1remains unchanged.codex-lbfor the routine switch.1012so the existing client reconnects under the new policy.Security boundary
/v1behavior stays isolated;Dashboard UX
A dedicated capability-gated
/native-routingpage would make the policy switch the primary one-click action and explain both data paths. One-time client attachment/repair can remain a secondary, optional host-local companion operation over a user-private Unix socket. There would be no menu-bar app, model selector, reasoning selector, routine live inference button, or automatic service restart.The proposed page includes stable authorship attribution
DOMANHDUC · dmdfami. I am calling this out here rather than hiding it in implementation so maintainers can decide the project policy explicitly.Prototype evidence
An isolated candidate completed a real OAuth -> pool -> OAuth run with one persistent Codex CLI process and one persistent OpenClaw TUI:
app_restart_required=false;websocket -> websocket;Displayed quota percentages did not move at their rounding precision and no fresh usage-history row landed in the bounded window, so the evidence is intentionally phrased as route-proven / displayed-quota-delta-unresolved.
Decisions requested
codex-lb?pool | client_oauthpolicy the right steady-state switch?/native-routingpage appropriate, and is the explicit attribution acceptable?409for unsupported pool reset-credit behavior an acceptable first-scope limitation?If the direction is accepted, I will submit the OpenSpec proposal first and keep implementation PRs separated into policy, HTTP relay, WebSocket policy handoff, optional recovery bridge, frontend state, and the dedicated page.
All reactions