Reelier vs Codex Record & Replay
Codex Record & Replay records a human demonstration and lets a language model re-interpret it against the live screen at each replay — flexible but non-deterministic; Reelier records the agent's own tool calls and replays them with no model in the loop — deterministic, zero-token, and loud when the world really changes.
Where Codex Record & Replay wins
Reach for Codex Record & Replay when the task is a human, GUI-driven workflow that has no clean tool-call trace to capture — filing an expense report, submitting a time-off request, clicking through an internal admin panel. You demonstrate the workflow once on your Mac; per OpenAI's docs, Codex "observes the actions and window content needed to learn the workflow," then "drafts a skill" that spells out when to use it, what inputs it needs, what steps to follow, and how to verify the result. For a job that lives in windows and clicks rather than typed API calls, that is exactly the right capture surface, and it is one Reelier does not have.
The replay mechanism is a feature, not a flaw — and it is the real reason to pick Codex. Replay is not fixed-script playback. OpenAI's docs are explicit that on reuse, "Codex uses the skill as reusable context for the task" and "can then complete the workflow with the tools available in the current environment." A language model re-interprets the demonstrated intent against whatever the screen actually looks like this time, so a moved button, a renamed field, or a slightly restructured page doesn't break the skill — the model works around it. That generalization is the whole point of programming-by-demonstration routed through an LLM, and a deterministic replay genuinely cannot do it.
So if your workflow lives in a GUI, changes shape often, or you specifically want the agent to figure out the current screen and adapt, Codex is the right tool and Reelier is the wrong one. Reelier can't see a screen at all — it replays typed tool calls, not clicks. Nothing below is an argument to reach for Reelier when the job is a human demo through a web UI.
Where Reelier fits
Reelier works one axis over. It doesn't record a human demonstration; it records the agent's own tool calls — MCP calls and its http.get/http.post builtins — from a run that already worked, and compiles them into a SKILL.md. Both tools hand you an inspectable markdown skill, but the contents are opposite: Codex's captures intent for a model to re-read, while Reelier's captures the exact typed calls. At replay, no model is consulted — the default --max-level 0 never even constructs an LLM client. The recorded calls re-execute against the live systems, run-varying values re-bound against the fresh responses, and an assertion checks every step it can check.
That buys the opposite properties from Codex's flexibility, and the trade is the whole story. Deterministic: the same calls, in the same order, every run. Free: the run record in .reelier/runs/ reads 0 LLM tokens because none were spent, not rounded down. And loud: because nothing re-interprets, a real change can't be quietly absorbed — the affected step fails its assertion and reelier diff exits 1 with that assertion as the why. Where Codex adapts around a changed field, Reelier stops and tells you the field changed. For a recurring production job, "it silently adapted" and "it flagged the change" are different contracts — Codex is built for the first, Reelier for the second, and you choose per job.
The boundaries are honest and narrow. Reelier can't replay a GUI click, a file edit, or a shell command — only deterministic tool calls; a click-driven or edit-heavy workflow honestly reports nothing replayable rather than pretending. Replay is read-only by default: --allow-writes unlocks idempotent writes only, and a destructive step still needs --yes. Judgment can bring a model back, but only opt-in and BYOK, as escalation for a step that already drifted — never the default path. And the assertions are minimal by design: a step with a clean recorded result gets one, while a failed or result-less step stays an open question and replays unchecked, never "passed."
Side by side
| Codex Record & Replay | Reelier | |
|---|---|---|
| What gets recorded | A human demonstration — the actions and window content on your Mac | The agent's own tool calls (MCP + http.get/http.post builtins) from a run that worked |
| Replay engine | A language model re-interprets the skill against the live environment | No model — --max-level 0 never constructs an LLM; recorded calls re-execute as data |
| On a UI / interface change | Adapts — the model works around a moved button or renamed field | Fails loudly — the step's assertion breaks and reelier diff exits 1 |
| Determinism and cost | Non-deterministic; each replay consults a model and spends tokens | Byte-identical every run, 0 LLM tokens in the run record |
| Best-fit surface | GUI / computer-use workflows with no clean tool-call trace | Recurring tool-call / API jobs where “it ran” isn't proof |
| Writes on replay | The model acts in the live environment as the skill instructs | Read-only by default; --allow-writes = idempotent only, destructive needs --yes |
A real receipt
The output below is a real replay receipt, not a mockup: the registry-latest portfolio skill — one recorded HTTP call to the npm registry, checked against the fresh response — replayed on 2026-07-21 with the CLI pinned to the version that recorded the seed (npx -y reelier@0.12.1), so it reproduces verbatim. Unlike a Codex replay, no model was in the loop at any point: the recorded call re-ran as data, the assertion checked the live result, and the token count is zero because none were spent.
npx -y reelier@0.12.1 run examples/portfolio/registry-latest.skill.md === registry-latest === ✓ Step 1 — Latest dist-tag from the registry [passed] 152ms PASSED: 1/1 steps ok, 0 failed, 152ms total
Verbatim seed receipt recorded in seldonframe/reelier examples/portfolio/README.md (reelier@0.12.1, 2026-07-21). Replay it yourself from a checkout of the repo — read-only, no account, no key.
- OpenAI Codex — Record & Replay docs (records a demo, replays via the model in the current environment)
- OpenAI — Introducing Record & Replay (official announcement: show a workflow once, reuse it as a skill)
- seldonframe/reelier — the open-source (AGPL-3.0) deterministic replay engine this page describes