e↗entertrainment
← All project stories
Developer tools / PROJECT STORY

ccx

Coordinate Claude Code and Codex through a shared local console, durable messages and reviewable missions, with the person retaining control of integration.

Local collaboration console11 MIN READDEVELOPMENT ARCHIVE · OCT 2026
ccx · actual archived routing-console interface. This early capture predates the current Chat and Canvas surfaces; the shown checks and versions belong to that capture.
ccx · actual archived routing-console interface. This early capture predates the current Chat and Canvas surfaces; the shown checks and versions belong to that capture. Open full size ↗
PROJECT REVIEW · 18 October 2026

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-tested

Choose 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-tested

Talk 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-tested

Pick 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-tested

One 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-tested

Projects → 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-tested

Claude 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-tested

Start 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'

source

Replies 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

unknown

Chats, 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.

  1. Open ccx on the Mac and pick Chat; start a Codex or Claude chat in a project folder.
  2. 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.
  3. For something bigger, start a workflow such as Test Engineering: Codex writes the task contract, Claude critiques, Codex implements.
  4. 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.
  5. 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 -p stream-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 via tools/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/ and eval/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 via lib/pty-host.py).
  • Native: app-mac/main.swift is a WKWebView wrapper built by scripts/build-app.sh and 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)

FeatureTestsBuilt/installedRuntime verifiedReleased
Routing console (stack/plan/verify/snapshots)yesccx.app installed locallyyes: screenshots; owner useno public release
Chat (Claude & Codex)yes (fake CLIs)yesyes: daily use, Oct 2026no
Codex interactions (MCP forms, grants, goals, usage, tier)4 protocol tests; suite 263/0 failcommittedbrowser test vs fake Codex; read-only live calls; goal-setting and real MCP elicitation not run liveno
Missions (aa-bridge)tests exist but skip when aa-bridge isn't built (as of 2026-10-07)depends on aa-bridgeunknown for current buildno
Workflows + run roadmapsyesyesyes: real runs, e.g. "Test Engineering" 2026-10-07no
Canvas, custody overlapsyesyesyesno
Housekeeping (MR)yescommittedone real sweep (3½ min); snapshot check limited by volume accessno
Cloud sessions5 testscommittedsimulated link only; no real cloud start yetno
iOS companionunknownunknownunknownno

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.

Explore the connections.

Browse all project stories ↗