oah helps you build an AI development workflow that fits you and keeps changing as AI improves. It is a working reference and a guide you can adapt.
A useful result needs more than generated code: the scope must be clear, the changes checked, and decisions kept for the next session. oah connects those steps so one request can carry through the work with a record of what happened.
002 / Why it keeps changing
Older rules and skills can hold a newer model back or make its results worse. Defaults should be easy to understand and change; a rule that gets in your way is a design problem to fix.
Keep the parts that help, remove what no longer helps, and revise the workflow as your tools improve. You can start with the full setup or take only the impact map, wiki, leases, evidence gates or review loop that your project needs.
003 / Why Claude builds and Codex reviews
This split comes from the author's own experience, not a measured comparison: Claude fills in details a beginner might miss in a first version; Codex checks and corrects within a fixed scope.
The current commands run Claude Code and Codex CLI. The ideas can also be adapted to another tool or harness, with one AI or several. Give each stage to the AI that suits your work.
004 / From one request to a checked change
Describe the result you want in plain language. The AI records the goal and scope, checks what the change touches, reserves its paths and chooses the tools for the task. Claude builds; Codex reviews, corrects and reviews again.
Gates record the checks and their results. The project wiki keeps the decisions and reasons beside the code. In v0.3.0, optional TypeSafe Jev can judge difficulty for model selection; rules remain the fallback when it is unavailable or uncertain.
005 / The decisions stay with you
You ask, answer when the AI needs a decision, and confirm before the change lands. If the same problem repeats or the work reaches a design choice, the loop stops to ask you.
Ask “Is the review done?” or “Did all the gates pass?” and inspect the evidence. The final confirmation belongs to you; writing code, checking it and approving its landing are separate steps.
006 / Free, open source, yours to adapt
oah is free, open-source software under the MIT license. Read the source, change it and bring the useful pieces into your own workflow. Your AI services and any optional services use their own accounts and billing.
The current v0.3.0 release supports macOS and native Windows, and expects familiarity with git and pull requests. Install it, run oah init in your project, then try the small hello-oah example. The installation and documentation sections explain each step.
New in v0.3.0: benchmark scores pick the model. Difficulty and a profile — performance, balanced or efficient — set the score a job needs. Balanced takes the cheapest model that reaches it, efficient the best score per price, and performance the top scorer for the hardest work. No table ties a difficulty to a model.
When you need it
A fixed table from difficulty to model goes stale every time a new model ships, and it cannot weigh price against quality.
How it works
Inside the engine [stages] names, the model is the first that applies: a model pinned for the tier, the first listed model in that tier's tier_pools, a quality_order naming a listed model, then the score rule.
Tiers count low 0, medium 1, high 2, max 3; performance adds 1 and balanced adds nothing, and the step never goes below the floor of the task's kind.
performance and balanced take the cheapest model by list price that reaches the step; efficient may go one step lower, never below the floor, and takes the most score per list price.
balanced and efficient accept a model within 2 percent of the scale below the mark; performance and floors have no such margin. The tier still sets the effort.
oah models and oah doctor show the profile, scores with source and date, each tier's model and each left-out model with its reason; oah recommend --engine <engine> --stage <stage> answers for one task, launches nothing and writes nothing.
Example
See the model choice for one task without launching anything (from Concepts).
oah recommend --engine <engine> --stage <stage>
Requirements
Requires v0.3.0 or later.
Claude Code and Codex CLI that list their models.
Limits and recovery
Published scores measure general quality on someone else's tests, not your repository; Epoch AI's tasks are mostly maths, puzzles and reasoning, not coding, and there are few of them.
List prices stand in for what you pay; a subscription pays in quota instead.
A wrong or stale score can send work to a weaker model; to decide for yourself, pin a model.
efficient can cost more than balanced at a low tier.
With no model list (OAH_MODEL_CATALOG_UNAVAILABLE) or no usable scores (OAH_MODEL_NO_SCORES), automatic choice stops; a pin gets past both, and oah never falls back to a default model.