Cadora drives one topology through swappable backends: cadora doctor validates each backend CLI against the version range its adapter contract was last verified against; cadora run --executor codex drives the whole run on Codex with cost attributed to codex; --construction-executor codex --construction-model gpt-5.5 splits a single run so inception nodes run on Claude Code and construction nodes on Codex; the backend registry resolves claude, codex, kiro, glm, antigravity, and fixture; cadora compare diffs outcome and cost per node across backends; and the gates, integrity checks, evidence pack, and cost attribution are identical no matter which engine ran.

Cadora · multi-backend

One topology, swappable engines

Cadora is the conductor, not the agent. The same topology drives Claude Code, Codex, Kiro, GLM, or Antigravity — and the gates, integrity checks, evidence pack, and cost attribution are backend-agnostic, so every engine produces the same audit-grade proof. You can even split one run across two backends and still get one verdict.

Surface · CLI + backend registryRole · operator / platform ownerEngines · claude · codex · kiro · glm · antigravity
01

Know your engines before you run

Backend CLIs ship weekly and change their machine output without notice. cadora doctor checks each backend binary is present and its version falls inside the range the adapter contract was last verified against — offline, no model calls. Verified engines (claude, codex, kiro) carry a tested range; experimental ones (glm, antigravity) run, but aren't in the release smoke yet.

zsh — cadora doctor
$ cadora doctor cadora doctor — backend CLI contract checks ok python 3.12.7 ok claude (verified) 2.1.128 ok codex (verified) 0.142.3 ok kiro (verified) 2.10.4 ok glm (experimental) missing antigravity (experimental) ('agy' not on PATH) ok bun 1.1.34 (runtime for the aidlc-v2 method pack's hooks (optional otherwise)) support: 3 verified (claude, codex, kiro) · 2 experimental (antigravity, glm) (fixture needs no check — offline, no external contract)

Outside-range is a warning (untested — it usually still works); missing or unparsable is the hard signal. Exit stays 0 while at least one live backend is usable, so cadora doctor drops straight into CI. Add --json for the structured report.

02

Drive the whole run on Codex

Point --executor at any engine and the entire run executes there. Every node runs on Codex, the build gate re-runs for real, and per-node cost is attributed to codex in the archive — the same manifest shape you'd get from Claude Code.

zsh — cadora run --executor codex
$ cadora run api.topology.yaml --executor codex --model gpt-5.5 cadora · executor=codex · run=api-codex-0717 requirements · gpt-5.5 · running… (generating documents; this can take a few minutes) requirements $0.1180 integrity:ok design · gpt-5.5 · running… design $0.1640 integrity:ok construction · gpt-5.5 · running… construction $0.3210 gate:build-test ok integrity:ok ✓ run complete -> runs/api-codex-0717

The run header reads executor=codex; funding= appears only for Claude Code (its subscription-vs-api token). Cost is attributed per node to the engine that ran it — dollar figures here are illustrative (est.).

03

Split one run across two backends

Design on one engine, build on another — in a single run. --construction-executor routes construction-phase nodes to a second backend while inception and operations nodes stay on --executor. Here the three design nodes run on Claude Code and the three code nodes on Codex, each node stamped with the engine that ran it. One conductor, one archive, one verdict.

localhost:8768/runs/flags-hetero-0717
flags-hetero-0717multi-backend-feature-flags · 6 nodes · claude + codex
completed
cadora run multi-backend.topology.yaml --executor claude --construction-executor codex --construction-model gpt-5.5
inception · runs on --executor
requirements claude
architecture claude
interface-design claude
construction · routed to --construction-executor
implement-engine codex
implement-api codex
integration-tests codex
gate:build-test

Routing is by phase — inception and operations stay on --executor; only construction moves to --construction-executor. The split is invisible downstream: gates, integrity, and cost attribution treat a two-engine run exactly like a one-engine run.

04

The backend registry

--executor <name> resolves through a small registry — one class per engine, each implementing the same NodeExecutor contract: run(node, prompt, cwd) → ExecutionResult. Adding an engine is a one-class change; nothing else in Cadora knows which backend ran. get_executor(name) forwards only the kwargs a backend accepts, so --funding reaches Claude Code and is quietly ignored elsewhere.

cadora/executors/ — the backend registry
claudeclaude_code.py — default; structured stream-jsonverified
codexcodex.py — OpenAI; structured JSONLverified
kirokiro.py — AWS; credit-based (kiro-cli)verified
glmglm.py — Z.ai, driven behind the claude CLIexperimental
antigravityantigravity.py — Google (agy)experimental
fixturefixture.py — local deterministic backend for demos and teststest-only

Ask for an engine that isn't there and the registry is the allow-list: unknown executor 'x'; choose from ['antigravity', 'claude', 'codex', 'fixture', 'glm', 'kiro'].

05

Prove the swap didn't change the answer

The differentiator no single vendor ships: run the same topology through two backends and diff outcome and cost per node. cadora compare reads two archived manifests and lines them up — pass/fail, model, and cost, node by node — so “we switched engines” becomes a measured claim, not a guess.

zsh — cadora compare (claude vs codex)
$ cadora compare api-claude-0716 api-codex-0717 compare A=api-claude-0716 B=api-codex-0717 A: executor=claude topology=api.topology.yaml ok=True pass=3/3 cost=$0.9120 out_tok=47210 B: executor=codex topology=api.topology.yaml ok=True pass=3/3 cost=$0.6030 out_tok=51840 Δcost (B−A): $-0.3090 nodes: · requirements: A[ claude-opus-4-8 $0.2040] B[ gpt-5.5 $0.1180] · design: A[ claude-opus-4-8 $0.2790] B[ gpt-5.5 $0.1640] · construction: A[ claude-opus-4-8 $0.4290] B[ gpt-5.5 $0.3210]

Same topology, same gates, both green — the diff is purely engine economics (figures illustrative, est.). cadora compare is its own capability; this is just where multi-backend pays off.

06

Same proof, every engine

This is the whole point of a vendor-neutral conductor. Whichever engine ran — or a mix — the audit surface is identical: the same deterministic gates re-run the real build, the same toolchain-integrity checks, the same tamper-evident evidence pack, the same per-node cost attribution. Swapping engines changes the bill and maybe the speed. It never changes the shape of the proof.

the backend-agnostic audit surface
gates·integrity·evidence pack·cost

The terminal frames above reproduce real cadora doctor / run / compare output, rendered as editable HTML rather than raster captures — lift them into Figma or iterate directly. Cadora's bet: the conductor, the gates, and the proof stay put while the engine underneath is yours to choose — Claude Code today, Codex or Kiro tomorrow, or two at once, with the same audit-grade evidence every time.