Skip to content

Prove persistent Codex Lab engine behind official Mac and iOS clients #385

Description

@shiny-code-bot

Objective

Prove the final Codex Lab desktop architecture without building or cloning a GUI: a persistent, provenance-verified Codex Lab engine runs independently of the official clients; the signed ChatGPT macOS app connects to it locally, and the official iOS app connects to the same engine through native remote control.

The engine owns durable sessions, projects, account selection, five-hour and five-day reset awareness, prompt-cache affinity, approvals, and remote enrollment. The official Mac and iOS apps remain replaceable controllers. A ChatGPT app restart or update must reconnect to the same Lab engine rather than silently executing through bundled Codex.

Finish Line

Stock ChatGPT Mac and iOS clients use one persistent provenance-verified Codex Lab engine across client restart and update without silent bundled-Codex fallback.

Current Status

State: waiting historical persistent-engine/controller evidence. The old Lab engine and installation are retired.
Next action: use #974/#975 for the current iPhone-to-CLI proof, starting with the owner's three existing local sessions.
Waiting for: a demonstrated fresh-route gap for which this issue's historical canaries are useful. The old requirement to use only official clients with a persistent Lab engine is not carried into the fresh milestone.
Original canary comments and controller evidence remain unchanged. Current route selection is open under DIRECTION.md.
Last verified: 2026-09-26.

Relationships

Validation

  1. Headless daemon lifecycle and provenance checks in an isolated Codex Lab home.
  2. Direct Unix control-socket initialize, version, and reconnect probes.
  3. Stock Mac controller canary against the persistent engine.
  4. Stock iOS pairing, thread continuation, approval/input, reconnect, and revocation canary.
  5. Project/worktree, terminal/file, browser, and computer-use parity matrix.
  6. Split-auth quota/failover and prompt-cache accounting checks when an alternate account has usable quota.
  7. ChatGPT quit/relaunch, staged-update, daemon crash, login, and reboot recovery tests.
  8. Fail-closed tests for missing, corrupt, stale, and protocol-incompatible Lab engines.

Decisions

  • The official ChatGPT Mac and iOS clients remain the only user-facing work surfaces.
  • Codex Lab becomes a persistent engine/service, not a replacement GUI.
  • The Mac path should be local and low-latency; iOS uses native remote control to the same engine.
  • Launcher/menu-bar work is skipped unless a concrete canary failure proves an external recovery surface is necessary.
  • Configuration is never accepted as proof of runtime identity; only live provenance from the serving engine can establish Lab status.
  • Updates must reconnect to the persistent engine and must never silently switch execution to bundled Codex.

Open Questions

  • Does the current stock Mac client preserve all local-host capabilities when connected through the existing local-daemon socket path?
  • Can Lab identity and provenance be surfaced through the native host/environment UI, or is a minimal error-only status utility ultimately required?
  • Which desktop/iOS app-server protocol changes require compatibility shims or coordinated Lab updates?
  • Which native computer-use and browser host services must be bridged into the persistent daemon?

Acceptance Criteria

  • A fixed Codex Lab engine starts from an immutable, provenance-verified candidate and cannot update itself to an upstream official binary.
  • The current stock Mac client initializes against the engine over local websocket transport while preserving local-host semantics.
  • The paired iOS client initializes against the same engine through native remote control.
  • The Mac and iOS clients can observe and continue the same thread without duplicate turns or lost output.
  • Existing projects and worktrees can be opened or mapped without accidental execution on the bundled Local host.
  • Terminal streaming, file reads/edits, search, command/file approvals, and structured user input work from both relevant controllers. File reads and native iOS command approval are proven; search, structured input, and the full controller matrix remain.
  • Browser use and native computer use are explicitly proven or recorded as a blocking parity gap.
  • Control account identity remains stable while eligible execution accounts rotate only at safe turn boundaries and preserve per-thread cache affinity.
  • ChatGPT quit/relaunch and one real in-app update reconnect to the same engine without re-pairing or bundled-Codex fallback.
  • Engine absence and provenance failure are visible and fail closed; required V8 JIT entitlement validation is now merged, while client/engine protocol incompatibility remains to be exercised explicitly.
  • A durable supervisor recovers the engine after crash, login-equivalent reload, and reinstall without launching ChatGPT automatically.
  • Rollback restores the previous Lab engine or intentionally returns to stock Codex without stale launchd state.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    planDurable planning issueplan:donePlan completed or superseded

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions