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.
The Upgrade page says how to update each part: oah itself (pull and rerun the installer with --skip-tools, or a verified release archive), the files oah init wrote (oah rules check and oah rules sync), the skill kit cache and project pins, unlazy, MCP template pins and models. Finish or release open leases first.
When you need it
Models, skills and tools keep changing; without a clear way to update each part, a harness falls behind or an update silently breaks it.
How it works
From a clone: git pull, then bash install/install.sh --skip-tools (Windows: -SkipTools); then run oah --version and oah doctor in a new terminal.
In each project: oah rules check reports whether the managed block in AGENTS.md differs and only reads; oah rules sync replaces only that block; oah init writes only what is missing; oah models --refresh rereads the model lists.
Skills: the kit cache via oah skills update or the automatic check; project copies only via oah skills update --project; user-level folders only via --global, which asks first.
unlazy stays pinned and only a new oah version moves the pin. To repair OAH_UNLAZY_UNPINNED, clear or fix OAH_UNLAZY_DIR, move incompatible project copies aside, then rerun oah init --with-unlazy.
MCP templates: OAH_MCP_UPDATE_AVAILABLE means a newer npm version exists, not that it is installed; you edit the @<version> suffix in your own config and restart Claude Code or Codex.
docs/UPSTREAM_SYNC.md records which changes from the owner's own harness were ported, skipped or deferred; you receive them as ordinary oah releases.
Example
Update oah from a clone on macOS (from Upgrade).
cd open-agent-harness
git pull
bash install/install.sh --skip-tools
Requirements
No open leases: oah status lists them, and skill updates wait while any lease is active.
Limits and recovery
None of the update commands edits an MCP pin or your MCP configuration.
unused(offline) or unused(registry error) means the version check could not establish an answer; retry later.
The Models part of the page describes main, which is not in a release yet.
Nothing is copied from the owner's harness, and it is never a runtime dependency.