Two AI agents work this repo in tandem. Both commit and act as @adrev, so GitHub authorship cannot tell us apart. The signatures and lanes below are how we stay coordinated.
CodeX is the PM and default point of contact. Andrew can reach CodeX from his phone, so requests flow through CodeX by default. CodeX has final say on priority, scope, PR readiness, merge order, and what ships.
Fable is the local Claude Code executor and integration partner. Fable may run through Claude Code on Andrew's machines. CodeX should queue machine-tethered or delegated work for Fable on issue #1, and Fable clears that queue when live.
| Fable | CodeX | |
|---|---|---|
| Role | Local Claude Code executor and integration partner | PM, intake owner, final ship decision |
| Runs on | Claude Code on Andrew's available machine | Codex from Andrew's phone/Mac session |
| Can reach | Windows/local stack, Tailscale resources, local Docker/Postgres, desktop-only flows | GitHub, repo work, Andrew-facing coordination, and Mac/browser/cloud tools when available |
| Branch prefix | claude/* |
codex/* |
| Commit trailer | Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
Co-Authored-By: CodeX <codex@openai.com> |
| Comment signature | **[Fable -> CodeX]** |
**[CodeX -> Fable]** |
The coordination inbox is GitHub issue #1 ("Agent coordination"). It is the single async channel both agents can reach.
- Send a message: comment on issue #1, first line
**[<from> -> <to>]** (fyi|needs-response|blocking). - Receive: check issue #1 at the start of every session and after each meaningful task.
- Code review happens on the PR, not the issue.
- Handoffs on issue #1 should include branch, PR, local state, verification run, deploy status, and exact next action.
- Andrew can read and route the whole thing from his phone via GitHub.
The split is pragmatic, not absolute. Both agents may run commands, tests, deploys, and browser checks when they have safe access and the task is intentionally assigned to them. CodeX decides ownership per task and may take work outside the default CodeX lane when the current environment can safely do it. If CodeX cannot complete something because it needs Fable's machine, desktop state, local credentials, or Tailscale access, or if the task is a large chunk that should not block Andrew's phone workflow, CodeX queues it for Fable.
CodeX owns by default:
- Andrew intake, prioritization, backlog shaping, and final ship calls.
- PR/issue triage, reviews, acceptance criteria, and merge sequencing.
- Self-contained code changes, tests, docs, and refactors.
- Security and QA review reports, with actionable prompts or delegated tasks.
- Mac/browser/cloud work when CodeX has active access and the action is safe to perform.
Fable owns by default:
- Work that requires Andrew's local machine, Windows-only desktop state, or local app/browser interaction unavailable to CodeX.
- Tailscale/DGX/NAS/local Docker/local Postgres verification.
- Production deploy execution when CodeX queues it or when local credentials/access make Fable the safer operator.
- Live smoke tests that require the local player/DM desktop setup.
- Integration help: reviewing CodeX PRs, resolving local conflicts, and reporting deploy/test results back on issue #1.
- Branch-per-agent (
claude/*/codex/*). Do not commit directly tomainunless Andrew explicitly asks for an emergency hotfix and the state is documented on issue #1. - PR to
mainfor normal work. CodeX has final say on merge readiness, but any riskyserver/,shared/, auth, payment, deploy, data, or infra change should get either Fable's glance or explicit Andrew approval. - Deploys are coordinated, not assumed. CodeX may deploy only when it has the right environment and the action is intentional; otherwise CodeX queues deploys for Fable. Whoever deploys posts revision, URL, smoke result, and rollback notes on issue #1.
shared/type changes: announce on issue #1 before editing because they can break both trees.- Pull before work; push small and often.
mainis the source of truth across Andrew's Mac, Windows PC, and cloud sessions. - Label PRs with the originating agent in the title prefix (
[claude]/[codex]) since the GitHub author isadrevfor both. - One active owner per feature. Do not work on the same feature, bug, or deploy path at the same time. Claim the feature on issue #1, hand it off explicitly, or wait.
- Do not overwrite the other agent's uncommitted or in-flight work. If a task needs files the other agent is changing, stop and coordinate on issue #1.
- Keep issue #1 operational. Use it for claims, blockers, handoffs, "main moved, pull", deploy queues, and final decisions. Keep long code review details on the relevant PR.