Inside the project
Prepared with the project’s development agent from source and retained evidence. This is a project-owner assessment, not an independent customer review. Dated checks were not rerun for this website.
ccx is the owner's private Mac console for working with two AI coding agents, Claude Code and OpenAI's Codex, side by side. It is most useful when a change matters enough to be checked twice. One agent builds while the other reviews the exact change. Multi-step workflows run from a written task contract through sandboxed evidence to a decision. Nothing lands until the owner accepts it. Day to day its strongest parts are the chat window, which runs real Claude and Codex sessions with every approval as a card, and the workflow runs, which keep their own roadmap ticked off as they go. It is development software for one person on one Mac: unlicensed, unreleased, and dependent on the owner's own Claude and Codex subscriptions.
What stands out
- Real Claude Code and Codex sessions in one window, with approvals, questions, plans, MCP forms and permission grants as cards the owner answers
- Cross-checking by design: one model implements, the other reviews the exact patch; blind parallel analyses; review contracts written before code
- Evidence over assertion: checks fingerprinted against what they depend on, sandboxed no-network evidence runs, journals and receipts
- Local-first background work: drafting, classification and embeddings on free local models; Claude and Codex only when asked
- Agents can message and delegate to each other (ccx peers) without that ever counting as the owner's approval
Current limits
- macOS only, single user; not packaged, licensed or released
- Runs on the owner's subscription CLIs (personal use), not API keys, so it isn't shippable as a product
- ccx.app runs from its working folder, so it is development software
- Missions need the aa-bridge runtime built; their tests skipped when it wasn't (as of 7 Oct)
- Few current screenshots; the two that exist show the early setup console
- A page loaded before a server restart can't send approvals until it is reloaded (fix proposed, not yet in the code as of 18 Oct)
Features & evidence
Setup console (patch bay, plan, verify, snapshots)
installed-testedChoose which community tool connects Claude and Codex per channel, run the plan step by step, verify, restore snapshots
Recorded evidence
v0.1.0–0.4.0 dated 2026-09-24/25 in CHANGELOG; screenshots out/ccx-home.png, out/ccx-installed.png
Chat (Claude Code and Codex)
installed-testedTalk to either agent in a folder; answer approvals, questions and plans as cards; worktree chats, forks, attachments, a dock with terminals/plan/code
Recorded evidence
Owner daily use Oct 2026; Codex interactions (MCP forms, permission grants, goals, usage, service tier) commit f9e5053 on 2026-10-07; 263 tests, 0 failures that day; browser-checked against a fake Codex
Workflows with run roadmaps
installed-testedPick a preset (e.g. Test Engineering, Code Review); phases go to Claude, Codex or both; evidence runs sandboxed; owner accepts
Recorded evidence
Real run 'Test Engineering' on 2026-10-07 sent back for a second attempt by its critic; roadmap keeper commits b0333f9 and c0857d8 on 2026-10-07
Missions
component-testedOne agent implements in an isolated copy, the other reviews; owner integrates
Recorded evidence
Mission tests skip when the aa-bridge runtime isn't built (seen 2026-10-07); current runtime status unknown
Canvas, overlaps and housekeeping
installed-testedProjects → modules → chats with icons and filters; which chat changed which file; MacResilience read-only sweep of what would be lost removing a worktree
Recorded evidence
Housekeeping commit 453bda2 on 2026-10-07, one real sweep of a project (≈3.5 min) via a test server
Peers
installed-testedClaude and Codex sessions message and delegate to each other
Recorded evidence
Used live 2026-10-07 to 10-18, including this website collection
Run in the cloud
component-testedStart a Claude Code cloud session (cloud-session credits) for a project already on GitHub; follow up or bring it back
Recorded evidence
Commit c366784 on 2026-10-10, 5 tests; browser check with a simulated session link; no real cloud session started yet
Spoken replies and 'Ideas, heard'
sourceReplies read aloud; agents render a short musical sketch to an audio file
Recorded evidence
Described in README; no published sample checked for this packet
iPhone companion
unknownChats, approvals and runs from the phone over a paired TLS link
Recorded evidence
Source in app-ios/; not inspected for this packet
Review updates & corrections
- No new screenshots, videos or audio exist since 17 Oct; out/ still holds only the two early captures
- The stale-page approval fix proposed on 8 Oct is not in app/server.mjs as of 18 Oct (it still answers 'Missing or wrong token. Reload the page.'); keep it in the roadmap, not as a feature
- Nothing is playable or interactive on the website: ccx is a local app with no public build or link
Workflow walkthrough
A guide to the native workflow. These steps describe the app; only the recordings and images embedded on this page are available as website demonstrations.
- Open ccx on the Mac and pick Chat; start a Codex or Claude chat in a project folder.
- Ask for a change; when the agent wants to run a command or edit, an approval card appears: allow, allow for the session, or deny with a reason.
- For something bigger, start a workflow such as Test Engineering: Codex writes the task contract, Claude critiques, Codex implements.
- ccx runs the contract's evidence commands in a sandbox with no network; a blocking critique sends it back, and the run's roadmap shows 'attempt 2' and why.
- When evidence passes and no reviewer blocks, the run is ready; the owner accepts and ccx commits on the run's branch (merging stays theirs).
Planned captures · not yet available
- Chat with an approval card and a Codex permission-grant card
- A workflow run sent back for a second attempt, with its roadmap section
- Walkthrough above, 60–90 s screen recording
Development biography · earlier archive
Development profile compiled from project source and retained records in October 2026. Dates and test results describe those records; they do not imply a new build, live acceptance test or public release.
Biography
The problem. By September 2026 Douglas was running Claude Code and OpenAI's Codex daily, often on the same repositories. A dozen community projects promised to connect them: plugins that let one agent call the other, shared memory, edit-claim boards, session hand-offs. Each touched his global configuration differently, and their READMEs didn't always match their code. Two agents editing the same checkout without coordination also produced real overlap problems, most visibly in his large AssistantApp project.
Origin. ccx 0.1.0 (2026-09-24) was a "routing console". It audited eleven repositories from source at pinned commits and showed every option they expose. It built a plan for wiring Claude and Codex together on a "patch bay": channels such as Claude asks Codex, Shared memory and Edit claims, each patched with one component at a stage (study, evaluate, pilot, adopt). Each component got a checked install, a verify checklist and a restorable snapshot. The two screenshots below are from this era.
What it became. Over the following weeks ccx moved from configuring the agents to working alongside them:
- Chat. Real Claude Code sessions (
claude -pstream-json) and Codex threads (codex app-server) run in one transcript view. Approvals, questions and plans arrive as cards. There are worktree chats, forks, attachments, voice replies, and a dock with terminals, plan and code. - Missions. One agent implements in an isolated copy, the other reviews the exact patch, and nothing reaches the mission branch until the person integrates it. A review contract is written first, checks run sandboxed with no network, review is bound to the patch hash, and runtime-sealed receipts and commit trailers record who did what.
- Workflows. Presets (Second Opinion, Test Engineering, Code Review and others) take a task through contract → explore/plan → implement → evidence → review → decision. Each phase is given to Claude, Codex or both "blind". Since 2026-10-07 each run keeps its own ROADMAP section ticked off phase by phase.
- Peers. Claude Code and Codex sessions on the Mac can message and delegate to each other, with loop guards. A message is always a teammate's request, never the person's approval.
- Canvas. Projects, their modules and their chats, colour-coded with project icons, filters, an overlap view built from per-turn file "custody", and a housekeeping card fed by MacResilience.
- Workers. Scheduled roles: SDK watch, a doc-status (TAGS) worker that drafts status updates with free local models for the person to accept, an icon worker, and housekeeping.
- Research. Read-only research chats apart from projects. Local embeddings suggest related projects.
Audience. One person: Douglas, on his own Mac. It isn't packaged for others. Its rules assume a single owner who approves everything. Subscription CLI use inside it is personal use.
Distinctive ideas.
- Approval is never delegated. Agents (including other agents' messages) can ask, preview and propose. Approving, integrating, accepting findings and widening scope stay on the person's page.
- Evidence over assertion. Checks are fingerprinted against what they depend on and go stale honestly. A step that can't be observed finishes as "Ran, not verified". Records are append-only and atomically written.
- Two models, cross-checked. The design leans on disagreement: blind parallel analyses, a reviewer who sets acceptance checks before code exists, and hand-over mid-change from one model to another with a briefing written from the journal.
- Local and cheap first. Background drafting, classification and embeddings go to free local models (aa-gpu: Apple on-device, Ollama qwen3). Claude and Codex are used only when asked.
A concrete user journey.
- On the Canvas, Douglas clicks "+" to start a project.
- ccx creates the project archive with a ROADMAP.md, suggests a workflow preset, and starts a run in its own worktree.
- Codex writes the task contract; Claude critiques; Codex implements; ccx runs the contract's evidence commands sandboxed.
- A blocking critique sends it back for a second attempt. The roadmap section shows "attempt 2" and why.
- When the evidence passes and no reviewer blocks, the run is "ready" and Douglas accepts it. ccx commits on the run's branch; merging stays his.
- Meanwhile the canvas shows which chats touched which files. The housekeeping card says whether removing that worktree later would lose anything.
Main features: what a visitor could see
Authored by the ccx project:
- Home patch bay and Installed pages: see screenshots. Wiring per channel, next step, checks, clients.
- Chat page: transcript, approval/question/plan cards; Codex MCP forms, permission-grant cards, goal bar, usage card (2026-10-07); "Run in the cloud" for GitHub projects (2026-10-10). No screenshot exists.
- Missions, Workflows, Canvas, Research, Peers, Workers, Projects, Memory, Snapshots, Activity, Verify (receipts): no screenshots exist.
- Spoken replies (ccx-vocal,
tools/vocal-expression) and "Ideas, heard" (renders a short musical score to .m4a viatools/midi-express, behind a MIDI firewall): no website-safe samples exist; see §7.
Dependencies, not authored by ccx:
- Claude Code CLI, Codex CLI/app-server, git.
- Optional third-party components ccx installs and verifies: openai/codex-plugin-cc, hex1n/cc-plugin-codex, ozankasikci/global-agent-memory, dan-calin/shared-agent-memory, sharememory, a codex-team-bridge and others, pinned under
catalog/andeval/src/.
Technical foundations
- Server: Node, ESM, no npm dependencies.
bin/ccx.mjs(CLI),app/server.mjs(HTTP + SSE on 127.0.0.1 with a per-launch token),app/js/(no-framework UI under a strict CSP),mcp/server.mjs(stdio MCP server exposing ccx_ tools to agents). - Core libs in
lib/: missions, workflows, chat / chat-codex, peers, custody, canvas, housekeeping, mr-provider, doc-worker, icon-worker, research, relate, run-roadmap, cloud, terminals (pty vialib/pty-host.py). - Native:
app-mac/main.swiftis a WKWebView wrapper built byscripts/build-app.shand signed with the studio’s Developer ID.app-ios/is the iPhone companion, paired over the TLS "remote" API (lib/remote.mjs) with a pinned certificate and per-device revocable tokens. - Integrations:
- aa-bridge (Swift AssistantAgent mission runtime);
- aa-gpu at 127.0.0.1:11500 (free local models and embeddings);
- MacResilience MCP helper, through a read-only allowlist with readOnlyHint checked and its build pinned;
- tagkit/md-tags (DocStatus);
- CBOR-LD evidence packets for workflow runs.
- Safety model: one lock across UI/MCP/CLI, snapshot before change, confirm-first, owner-only evidence folders, compare-and-swap settings.
Maturity by feature (evidence; unknown marked)
| Feature | Tests | Built/installed | Runtime verified | Released |
|---|---|---|---|---|
| Routing console (stack/plan/verify/snapshots) | yes | ccx.app installed locally | yes: screenshots; owner use | no public release |
| Chat (Claude & Codex) | yes (fake CLIs) | yes | yes: daily use, Oct 2026 | no |
| Codex interactions (MCP forms, grants, goals, usage, tier) | 4 protocol tests; suite 263/0 fail | committed | browser test vs fake Codex; read-only live calls; goal-setting and real MCP elicitation not run live | no |
| Missions (aa-bridge) | tests exist but skip when aa-bridge isn't built (as of 2026-10-07) | depends on aa-bridge | unknown for current build | no |
| Workflows + run roadmaps | yes | yes | yes: real runs, e.g. "Test Engineering" 2026-10-07 | no |
| Canvas, custody overlaps | yes | yes | yes | no |
| Housekeeping (MR) | yes | committed | one real sweep (3½ min); snapshot check limited by volume access | no |
| Cloud sessions | 5 tests | committed | simulated link only; no real cloud start yet | no |
| iOS companion | unknown | unknown | unknown | no |
The full suite at 2026-10-10 was 341 tests, 340 passing. The one failure was another session's allowlist change.
Roadmap, limits, FAQs
Roadmap (from docs/plans and open work, not commitments):
- current screenshots and a public write-up;
- custody fix for failed turns (a background task was started);
- stale-token banner;
- cloud runs for workflow phases;
- one model router shared with AssistantApp;
- the Responses provider and voice , on hold pending an API budget.
Limits:
- macOS only, single user.
- ccx.app runs from the working folder, so uncommitted edits load on relaunch: it's development software.
- It depends on subscription CLIs: personal use, not a shippable product.
- Missions need aa-bridge built.
- Cloud sessions only for GitHub repositories.
FAQs:
- Is ccx a product I can download? No. It's a private tool, unlicensed and unreleased.
- Do the agents act on their own? They propose. Edits, commands, integrations and scope changes wait for the studio’s approval in ccx.
- Why two AI models? One builds and the other reviews, so an error must get past both. Blind parallel analysis surfaces disagreement.
- Does it send code to the cloud? Only through the agents' own CLIs, and through cloud sessions for projects already on GitHub, when the owner starts them. The server listens only locally.
