LiquidCoder is a native macOS 26+ SwiftUI conductor for local Codex work: user-added projects in the sidebar, repeatable Codex sessions inside each project, chat on the main surface, and git/project actions close at hand.
The target borrows the useful Codex desktop app structure without copying it outright: project navigation, a chat/composer workspace, project context controls, commit controls, and quick access to the project root in Finder, Cursor, VS Code, or Ghostty. The strategic difference is orchestration: LiquidCoder should become the place where one user conducts multiple project-scoped Codex sessions without losing track of context, branches, or commits.
- Native SwiftUI macOS app targeting macOS 26.2.
- Starts with no built-in projects.
- Users add local project folders through a directory picker.
- Project sidebar with recent sessions under each project.
- Liquid Glass chat workspace and composer.
- Commit / Commit & Push controls plus Finder, Cursor, VS Code, and Ghostty launch buttons.
- Product docs and agent instructions are in place.
This is not yet a functioning Codex process manager. The UI is the first vertical slice; the real value arrives when the app can launch a real codex process for the selected project, stream the transcript, and commit reviewed changes.
LiquidCoder should become a local desktop control plane for Codex sessions:
- Let users add, select, and persist local project roots.
- Run multiple Codex sessions against separate projects or worktrees.
- Keep sessions grouped under their project in the sidebar.
- Show live transcripts, plans, command output, context usage, branch, and git state.
- Keep all project data local unless the user explicitly opts into external services.
- Provide review surfaces before changes are committed or pushed.
- Support future agent backends through a narrow adapter protocol rather than UI-specific integrations.
-
App Shell
ContentView.swiftowns state, project selection, and the nativeNavigationSplitView.SideView.swiftowns the native SwiftUI sidebar.ProjectChatView.swiftowns the project chat/detail surface.LiquidGlassComponents.swiftcontains reusable Codex-style controls.WorkspaceModels.swiftholds temporary project/session data and the first domain vocabulary.
-
Codex Runtime
- Add a
CodexProcessRunnerresponsible for launchingcodexwith a working directory, environment, approval policy, and model selection. - Stream stdout/stderr into a transcript model.
- Record process lifecycle events separately from rendered UI text.
- Add a
-
Persistence
- Store workspaces, agents, transcripts, and settings locally.
- Keep secrets out of project files.
- Prefer simple file-backed JSON or SQLite before inventing a sync layer.
-
Git Awareness
- Track branch, dirty files, staged files, commits, and diffs per agent.
- Require explicit user action for destructive git operations.
-
Backend Adapters
- Start with Codex.
- Later add adapters for Claude Code or other CLIs only after Codex session management is stable.
Open the project in Xcode:
open LiquidCoder.xcodeprojBuild from the command line:
xcodebuild -scheme LiquidCoder -project LiquidCoder.xcodeproj build- Implement a real
CodexProcessRunner. - Wire the composer to create a new session under the selected project.
- Replace mocked session rows with streamed process output and persisted transcripts.
- Replace plain path persistence with security-scoped bookmarks if sandboxing stays enabled.
- Make the Commit control open a diff/review flow before writing git history.
- Do not make this Electron.
- Do not hand-build a fake sidebar. Use the native SwiftUI sidebar/list APIs.
- Do not store user code or transcripts on a hosted service by default.
- Do not fake agent state in production UI.
- Do not couple the UI directly to one CLI command format.
- Do not drift back into a card dashboard; this is a project/session conductor.
- Do not add Claude Code support until Codex is boringly reliable.