001 / 만든 이유
oah는 각자에게 맞고 AI가 발전하는 만큼 함께 바뀌는 개발 환경을 만들도록 돕습니다. 가져다 고쳐 쓸 수 있는 참고 구현이자 가이드라인입니다. 코드를 만드는 것만으로 작업이 끝나지는 않습니다. 어디까지 바꿀지 정하고, 결과를 검증하고, 다음 세션이 읽을 기록도 남겨야 합니다. oah는 이 과정들을 연결해 하나의 요청이 작업과 확인, 기록까지 이어지게 합니다.
Open Agent Harness · Claude Code와 Codex CLI용.
코딩이 어려워?
AI가 만들고, 검토하고, 기록합니다. 변경이 닿는 곳을 살피고, 고칠 경로를 예약하고, 위키와 게이트 증거를 남기고, 막는 문제가 없을 때까지 Codex 리뷰를 이어 갑니다. 판단이 필요할 때 답하고 반영 전에 확인하세요.
다시 설명할 문맥과 반복할 작업을 줄입니다. 각 단계에서 아끼는 작업이 어떻게 쌓이는지 따라가 보세요.
30%
토큰·시간 절감 효율최대 · 계산 기준
기준 작업량 100에서 절감분 30을 항목별로 배분한 계산이며, 실제 절감량은 작업과 사용 환경에 따라 달라질 수 있습니다.
반복하지 않아도 되는 작업의 영수증
목표와 범위01 / 06
영향 지도02 / 06
프로젝트 위키03 / 06
리뷰 반복04 / 06
증거와 게이트05 / 06
다음 세션06 / 06
반영 전 필수 검증은 그대로 수행합니다.
사용자요청 · 답변 · 확인
하네스는 AI 코딩 도구를 둘러싼 도구와 규칙, 기록의 묶음입니다. oah는 이것들을 이어서 평범한 요청 하나가 범위 설정, 구현, 리뷰, 검사, 기록까지 이어지게 하고, 판단이 필요하면 사용자를 위해 멈춥니다. 필요한 부분만 가져가도 되고, 전체 구성으로 시작해 자기 것으로 만들어도 됩니다.
v0.3.0의 새 기능 ↗AI가 파일을 고치면 영향 지도가 관련 코드, 문서, 다시 돌릴 검사를 보여 준다. 결과는 pin, exec, link, mention 순서라서 바뀐 경로를 고정하거나 실행하는 게이트가 먼저 나온다. 지도는 HEAD와 입력에 묶여 있고, oah는 낡은 지도를 몰래 쓰지 않는다.
oah init은 Obsidian에서 바로 열리는 docs/wiki/를 만들고, AI가 작업 이력과 결정, 그 이유를 코드 옆에 남긴다. oah wiki maintain이 작업마다 로그 항목과 색인 줄을 쓰고 oah finish가 실행 여부를 확인한다. 다음 세션은 처음부터 다시 설명을 듣는 대신 읽을 기록이 있다.
리스는 작업 하나가 바꿀 경로를 예약해서 AI 세션 둘이 실수로 같은 파일을 고치지 않게 한다. 겹치는 리스는 OAH_LEASE_CONFLICT로 거절하고 누가 잡고 있는지 알려 준다. 리스가 편집기의 쓰기를 막을 수는 없으므로, 작업을 끝낼 때 실제로 바뀐 파일을 범위와 대조한다.
게이트는 “끝났다”를 증거가 남는 검사로 바꾼다. 확인할 수 있는 결과 하나, 그것을 증명하는 명령, 그 명령이 내야 하는 출력으로 이뤄진다. oah gates check는 사용자가 승인한 뒤 unlazy로 CHECK 줄을 실행하고, 통과한 게이트에 증거와 함께 체크 표시를 붙여 입력에 묶는다. oah finish는 충족하지 못한 게이트를 거절한다.
Claude Code가 첫 버전을 만들고, Codex CLI가 깨끗한 읽기 전용 스냅샷을 리뷰해 반영을 막는 지적을 고치고 다시 리뷰한다. 라운드 수는 정해져 있지 않다. 승인이 나오거나 P2/P3 후속 작업만 남으면 끝난다. 같은 문제가 반복되거나 설계 선택이 필요하면 멈추고 사용자에게 묻는다. 반복 횟수의 상한은 선택이다.
TypeSafe Jev는 권장 선택형 판정기다. 선택한 스킬의 순서를 다시 매기고 v0.3.0에서는 Intent와 Scope 경로로 난이도를 판정한다. 그 tier가 확신도 기준과 최저 하한을 지키며 모델 선택에 반영된다. 키가 없거나 Jev가 꺼져 있거나 확신도가 낮으면 규칙이 판단한다.
패킷에는 작업 하나에 관한 모든 것이 들어 있다. 의도, 범위, 계획, 완료 게이트, 보고 형식이다. 의도는 문제, 원하는 결과, 확인할 수 있는 성공 조건을 적고, 승인해야 리스에 묶이며, 모든 단계와 워커, 리뷰어에게 바이트 그대로 간다. 모든 보고는 성공 조건마다 AC 줄 하나로 끝난다.
작업마다 low, medium, high, max 가운데 하나인 tier가 붙고, tier가 엔진마다 모델과 추론 강도를 정한다. 읽을 수 있는 규칙이 종류, 작업량, 추론, 위험 네 축에 점수를 매긴다. 추론 강도는 검증하고 몰래 낮추지 않으며, 선택 사항인 tier 후보에 확인한 모델을 적고, 실행마다 tier의 출처를 기록한다.
스킬은 Claude Code와 Codex가 읽어 들이는 지침 폴더다. oah가 작업 종류, 단계, 위험, Scope의 파일 종류로 지시문마다 스킬을 고르고 스킬마다 이유를 붙인다. 키트 캐시는 리스가 없을 때 하루에 많아야 한 번 업데이트되고, 프로젝트에 추적되는 사본은 oah skills update --project를 실행할 때까지 고정된다.
oah land --check는 리뷰한 head를 그대로 반영해도 되는지 판단하고 리스, 의도, 리뷰, 게이트, 영향, 필수 검사, fast-forward, 비밀 검사, CI마다 한 줄씩 보여 준다. oah land --merge는 모든 검사를 다시 돌리고 사용자에게 확인을 받은 뒤에만 원격 기본 브랜치를 정확히 그 head로 fast-forward한다.
원격이 연결된 git 저장소인 프로젝트마다 oah init을 한 번 실행한다. 선택 사항마다 한 번씩 묻고, 도구와 Claude Code·Codex 로그인을 확인하고, 전체 계획을 보여 준 뒤 사용자가 확인해야 파일을 바꾼다. 그다음 설정, 규칙 블록, 위키, 템플릿을 쓰고 첫 영향 지도를 만든다.
지금 oah 명령은 Claude Code와 Codex CLI를 움직이지만, 그 아이디어는 다른 도구나 하네스를 포함해 AI 하나만 써도 여러 AI를 함께 써도 적용할 수 있다. 리스, 엔진 단계, 증거 게이트, 영향 지도, 위키, 리뷰 루프 가운데 필요한 부분을 가져가고 단계마다 자기에게 맞는 AI를 고른다.
고정된 공개 문서 · cc0c0b6
기능별 작업 흐름을 하나씩 살펴보세요. 도식을 열면 단계가 세부 요소로 펼쳐지고, 연결선을 따라 흐른 뒤 다시 합쳐집니다.기능별로 정리한 도식을 따라 작업 흐름을 한 단계씩 살펴보세요.
영향 지도
변경이 닿는 곳을 찾습니다
변경한 경로가 의존 관계와 검사 목록으로 펼쳐집니다. 필수 pin·exec 결과는 계획에 남습니다.
자세히 · docs/concepts.md01 · 변경이 닿는 곳을 찾습니다영향 지도
리스
병렬 작업의 범위를 지킵니다
쓰기 전에 경로를 예약합니다. 겹치는 리스는 경계에서 거절하고 작업이 끝나면 경로를 해제합니다.
자세히 · docs/concepts.md02 · 병렬 작업의 범위를 지킵니다리스
리뷰 반복
검토하고 고친 뒤 다시 검토합니다
Codex가 읽기 전용 스냅샷을 검토합니다. P0/P1은 수정으로 돌아가며 반복되는 문제는 사용자의 판단을 구합니다.
자세히 · docs/concepts.md03 · 검토하고 고친 뒤 다시 검토합니다리뷰 반복
게이트
완료를 확인 가능한 결과로 만듭니다
명령과 기대 결과가 기록된 증거가 됩니다. 결속된 입력이 바뀌면 해당 증거를 다시 검증합니다.
자세히 · docs/concepts.md04 · 완료를 확인 가능한 결과로 만듭니다게이트
프로젝트 위키
다음 작업을 위해 이유를 남깁니다
결정은 작업 기록이 되고 다음 세션이 찾을 수 있는 색인으로 이어집니다. 반복 관리에서도 중복 항목을 만들지 않습니다.
자세히 · docs/concepts.md05 · 다음 작업을 위해 이유를 남깁니다프로젝트 위키
모델 선택
작업에 맞는 모델을 고릅니다
난이도와 벤치마크 점수에 프로필과 위험도 하한을 적용합니다. 선택형 Jev가 난이도를 판단하고 규칙이 대체 경로로 남습니다.
자세히 · docs/concepts.md06 · 작업에 맞는 모델을 고릅니다모델 선택
첫 작업, hello-oah
8단계 중 1단계
1–2단계 · 한 번만 설정
AI에게 hello-oah를 별도 프로젝트로 복사해 달라고 하면 git과 원격을 준비한다. 원격은 GitHub 저장소이거나, 반영 직전에서 멈추는 로컬 연습용 원격이다. 그다음 사용자가 직접 oah init을 실행해 질문에 답하고(unlazy는 예, GitHub에 반영하려면 CI 스타터도 예) 전체 계획을 승인한다. 규칙, 위키, 템플릿을 설치하고 첫 영향 지도를 만든다. 이 예제는 Jev를 끈 채로 진행하므로 난이도와 모델은 규칙이 정한다.
Copy hello-oah into a separate project so I can try it.hello-oah(영문) › 1–2. 연습용 사본과 설정 ↗
시작하기
현재 릴리스는 v0.3.0이며 git과 PR에 익숙한 개발자를 위한 것입니다. macOS와 네이티브 Windows를 지원하고 Linux는 아직 지원하지 않습니다. 설치 프로그램은 빠진 도구를 설치하기 전에 묻고, 비밀번호나 키를 보지 않습니다.
macOS 13 이상 · 터미널
태그에 고정된 복제 설치입니다. 릴리스의 단독 설치 스크립트도 사용할 수 있으며, 압축 파일의 SHA-256을 검증한 뒤 풉니다. 설치 파일·SHA256SUMS ↗
그다음 프로젝트에서
AI가 반복되는 문제나 설계 선택 때문에 멈추면 답해 주세요. 그래야 이어서 진행합니다.
01 · 먼저 git
xcode-select --installgit --version이 실패할 때만.
02 · oah 설치
git clone --branch v0.3.0 --depth 1 https://github.com/KenSuh/open-agent-harness.git
cd open-agent-harness
bash install/install.sh--dry-run을 붙이면 모든 단계를 보여 주기만 하고 아무것도 바꾸지 않습니다.
03 · 미리보기(선택)
bash install/install.sh --dry-run04 · 새 터미널에서 확인
oah --version기대 출력: oah 0.3.0
05 · 프로젝트마다 한 번
oah init원격이 있는 git 저장소. 계획을 보여 주고 확인한 뒤에만 파일을 바꿉니다.
oah는 git과 pull request를 이미 쓰는 개발자와 작은 팀이 자기 컴퓨터에서 실무 수준의 검토 절차를 지키도록 돕는다. AI 코딩 결과가 아쉽거나 처음 하네스를 꾸리는 사람을 가장 먼저 생각하고 만들었다.
현재 릴리스인 v0.3.0은 여전히 git과 pull request에 익숙한 사용자를 전제로 한다. 브랜치에서 일하고, push하고, pull request를 열고, 반영을 직접 확인한다.
WSL 없이 macOS 13 이상과 Windows 11을 지원한다. Windows 10 22H2는 가능한 범위에서 지원한다. Linux는 아직 지원하지 않는다.
oah는 Python 3.11 이상과 표준 라이브러리만 쓴다. CI 스타터는 고르면 Linux 러너(ubuntu-latest)에서도 내 프로젝트를 테스트할 수 있지만, oah 자체가 도는 환경과는 별개다.
oah 자체는 MIT 라이선스이며 키가 필요 없다. 엔진은 사용자가 직접 설치하고 로그인한다. Claude Code는 Pro, Max, Team, Enterprise, Console 계정이 필요하고, Codex는 ChatGPT 요금제나 API 키를 받는다.
선택 기능은 각자의 조건이 있다. TypeSafe Jev는 자기 TypeSafe 계정과 키가 필요하고 TypeSafe는 요청마다 요금을 물릴 수 있다. Aside에는 무료 요금제가 있다. 비공개 GitHub 저장소에서 필수 검사 규칙 세트를 쓰려면 GitHub Pro, Team, Enterprise Cloud가 필요하다. 문서에 가격은 적혀 있지 않다.
설치 프로그램을 한 번 실행하고, 원격이 연결된 git 저장소인 프로젝트마다 oah init을 한 번 실행한 뒤 쓴 파일을 커밋한다. 그다음부터는 그 프로젝트에서 AI를 열고 “로그인 기능을 oah로 만들어 줘.”처럼 평소 말로 요청한다.
따라 하기 예제 examples/hello-oah는 작은 작업 하나를 전체 흐름에 태우며 20분쯤 걸린다. 내가 할 말, AI가 하는 일, 확인할 것을 먼저 보여 주고 전체 명령 예제를 이어 싣는다.
지금 oah 명령은 Claude Code와 Codex CLI를 움직인다. 리스, 엔진 단계, 증거 게이트, 영향 지도, 위키, 리뷰 루프 같은 아이디어는 다른 도구나 하네스를 포함해 AI 하나만 써도, 여러 AI를 함께 써도 적용할 수 있다. 필요한 부분을 가져가고 단계마다 자기에게 맞는 AI를 고른다.
oah 안에서는 .oah/config.toml의 [stages]가 단계마다 엔진을 정한다. 맞지 않는 엔진 호출은 거절되며 --override-stage를 주면 실행하되 기록한다. 한 엔진이 작성과 리뷰를 모두 맡으면 리뷰 영수증은 독립 리뷰가 아니라고 정직하게 적는다.
이 역할 분담은 만든 사람의 개인적인 경험에서 나왔고, 측정한 비교 결과는 아니다. 만든 사람이 써 보니 Claude는 첫 버전을 만들면서 초보자가 놓치기 쉬운 부분까지 채우는 데 강했고, Codex는 정해진 범위 안에서 검사하고 고치는 데 강했다.
그래서 Claude가 먼저 만들고 Codex가 검토, 수정, 재검토한다. 다른 분담이 맞으면 .oah/config.toml에서 단계 배정을 바꿀 수 있다.
아니다. Jev는 권장 선택형 판정기다. 키가 없거나 끄면 정해진 규칙이 판단하고, 결과에는 rerank=unused(no key)나 rerank=unused(not-enabled)가 표시된다. 키만으로는 켜지지 않는다. 직접 켜야 하며 oah init이 한 번 묻는다.
v0.3.0에서 Jev는 선택한 스킬의 순서를 다시 매기고 Intent와 Scope 경로로 난이도를 판정한다. 확신도가 충분할 때만 판정한 tier를 쓰고 위험도 하한 아래로 내려가지 않는다. 꺼짐, 실패, 낮은 확신도에서는 규칙이 판단한다. Jev 실패는 호출을 막지 않는다.
게이트는 사용자가 승인한 CHECK 명령을 unlazy로 실행해 EXPECT 출력이 나왔다는 것을 증명하며, 그 증거를 기록하고 입력에 묶는다. 나중에 입력이 바뀌면 게이트를 다시 돌리고, oah finish는 충족하지 못한 게이트를 거절한다.
명령이 확인하는 것 이상은 증명하지 않는다. 게이트의 입력은 추적 중인 파일, 무시되지 않은 미추적 파일, 실행 환경이므로 외부 서비스나 무시된 미추적 파일이 바뀌어도 다시 돌지 않는다. 그런 것은 따로 확인한다. oah review summary와 oah gates status는 체크 칸을 구조로만 읽고 아무것도 다시 실행하지 않으므로, 체크된 칸도 이미 낡았을 수 있다.
리스는 작업 하나가 바꿀 경로를 예약한다. 범위가 겹치는 두 번째 리스는 OAH_LEASE_CONFLICT로 거절하고 누가 잡고 있는지 알려 주므로, AI 세션 둘이 실수로 같은 파일에서 시작하지 않는다. 선택형 pre-push 훅을 설치하면 이 워크트리에 리스가 남아 있는 동안 push도 거절한다.
리스가 편집기의 다른 곳 쓰기를 막을 수는 없다. 대신 oah finish가 리스를 잡은 뒤 실제로 바뀐 파일을 범위와 대조하고 OAH_SCOPE_EXCEEDED로 거절한다. 리스는 기본 4시간 동안 유효하고 그 뒤에는 STALE로 보인다.
라운드마다 범위 안의 새 지적이 나오는 동안 이어 간다. P0와 P1 지적은 막고 oah fix로 고친다. 승인이 나오거나 P2와 P3 지적만 남은 라운드에서 시리즈가 끝나고, 남은 지적은 후속 작업으로 기록한다.
꼭 필요할 때만 사용자에게 묻는다. 앞선 수정이 이미 고치려 한 종류의 지적이 다시 나오거나 고치는 데 설계나 저장 형식 변경이 필요하면 OAH_REVIEW_NEEDS_DECISION으로 멈춘다. 사용자가 결정한 뒤 oah review --task <task> --decision "<결정한 내용>"으로 이어 가면 기록된다.
라운드 수는 정해져 있지 않다. 상한을 두고 싶으면 [review] max_rounds를 설정한다. 닿으면 OAH_REVIEW_ROUNDS_EXHAUSTED로 멈추고, --extra-round로 이어 가면 기록되며, 상한을 올리거나 지울 수도 있다.
이와 별도로 한 라운드에서 리뷰어 호출이 세지 않고 여러 번 실패하면 oah는 OAH_REVIEW_ATTEMPTS_EXHAUSTED로 유료 리뷰어 호출을 멈춘다. 마지막 실행의 stderr.log를 읽고 원인을 고친 뒤 --extra-attempt로 다시 실행한다.
공유 규칙 블록이 에이전트에게 push와 강제 push를 금지하고, 반영은 사용자가 확인하는 명령이다. oah land --check는 정확한 head에서 리스, 의도, 리뷰, 게이트, 영향, 필수 검사, fast-forward, gitleaks 검사, CI를 확인한다.
oah land --merge는 모든 검사를 다시 돌리고 y 입력으로 확인을 받은 뒤, 원격 기본 브랜치가 방금 확인한 커밋과 여전히 같을 때만 정확히 리뷰한 head로 fast-forward한다. 검증되지 않은 CI는 head마다 명시적 예외를 기록하지 않는 한 막히고, 실패하거나 진행 중인 CI는 언제나 막힌다.
설치 프로그램은 비밀번호나 키를 보지 않는다. 비밀번호가 필요한 설치 프로그램은 직접 묻는다. Claude Code와 Codex는 자기 자격 증명을 각자 보관하고, oah는 상태 명령(claude auth status, codex login status)만 실행해 로그인 여부를 읽는다. 동반 앱 설정도 로그인 상태 칸만 보고 명령 출력은 버린다.
선택 기능의 키는 실행할 때만 환경 변수나 OS 키체인에서 읽는다. oah는 키를 파일에 붙여 넣으라고 하지 않고, 키를 쓰거나 출력하거나 지시문, 실행 기록, 오류 메시지에 넣지 않는다.
구현과 리뷰는 사용자가 로그인한 엔진인 Claude Code와 Codex가 한다. 스킬 선택 기록은 상태 폴더의 로컬 파일에만 남고 어디로도 보내지 않는다.
Jev를 켜면 요청은 TypeSafe로 간다. v0.3.0의 난이도 판정은 작업의 Intent 글과 Scope 경로를 16,000자까지 보내며 코드, diff, 파일 내용, 키는 보내지 않고, 개인정보 검사에 걸리면 아무것도 보내지 않는다. v0.3.0에서 모델 카탈로그를 다시 만들 때 Epoch AI의 공개 벤치마크 파일을 받는데, 그 요청에는 프로젝트, 작업, 사용자에 관한 것이 들어가지 않고 [models] fetch_scores = false로 멈출 수 있다.
확인하기 전에는 아무것도 바꾸지 않는다. oah init은 먼저 선택 사항마다 한 번씩 묻고, 도구와 로그인을 확인하고, 전체 계획을 보여 준다. 승인하면 .oah/config.toml, AGENTS.md의 규칙 블록(CLAUDE.md가 불러온다), docs/wiki/의 위키, .oah/templates/의 템플릿, 로컬 비밀 파일을 위한 .gitignore 항목을 쓰고 첫 영향 지도를 만든다. 쓴 파일은 커밋한다.
두 번째로 실행하면 아직 빠진 것만 쓴다. --force 없이는 기존 파일을 바꾸지 않고, 위키의 색인과 로그는 바꾸지 않는다. 동반 앱 단계 가운데 [global]이 붙은 것은 사용자 폴더의 파일을 바꾸며 단계마다 먼저 묻는다.
먼저 열린 리스를 끝내거나 내려놓는다. 클론에서는 git pull 뒤 --skip-tools(Windows는 -SkipTools)로 설치 프로그램을 다시 실행한다. 릴리스에서는 새 태그의 소스 압축 파일과 SHA256SUMS를 받아 지문이 일치한 뒤에만 푼다. 그다음 새 터미널에서 oah --version과 oah doctor를 확인한다.
프로젝트마다 oah rules check와 oah rules sync로 관리 규칙 블록을 새로 고치고, oah init은 빠진 것만 쓰며, oah models --refresh는 모델 목록을 다시 읽는다. 스킬, unlazy, MCP 템플릿 고정 버전은 업그레이드 문서에 각자의 업데이트 방법이 있다.
고정한 문서에는 oah 자체를 제거하는 방법이 적혀 있지 않다. 동반 앱을 지우는 방법(claude mcp remove aside --scope user, codex mcp remove aside, 앱 제거 등)은 있고, oah hooks가 선택형 훅을 지운다.
문서에 있는 복구 방법은 로그 옮기기가 중단된 뒤의 oah wiki recover, 맞지 않는 unlazy 사본을 옮겨 두고 oah init --with-unlazy 다시 실행, 끝내지 않고 리스를 내려놓는 oah release --reason, 그리고 키가 새어 나갔을 때 이력을 정리하기 전에 먼저 발급한 곳에서 키 바꾸기다.
모든 거절은 OAH_* 코드로 시작하고, 나머지 메시지가 관련된 파일, 리스, 게이트와 다음에 실행할 명령을 알려 준다. 종료 코드 1은 거절(메시지대로 고치고 다시 실행), 2는 사용법 오류나 사전 점검의 ABORT, 69는 환경 문제, 75는 실행이 진행 중인데 oah wait이 제한 시간에 닿았다는 뜻이다.
먼저 oah doctor를 실행하고 문제 해결 문서에서 코드를 찾는다. 자주 만나는 코드를 단계별로 묶어 뜻과 다음에 할 일을 적어 두었다. 그래도 막히면 oah status, oah intent show <task>, oah gates status <task>가 도움이 된다.
반영할 때 gh로 정확한 head의 CI 결과를 읽는다. gh가 없거나 결과가 없거나(워크플로를 설치하지 않은 경우 포함) 필수 검사 결과가 빠지면 CI는 unverified이고 기본적으로 반영을 막는다. --accept-unverified-ci "<reason>"으로 head마다 명시적 예외를 기록할 수 있지만 CI는 unverified로 남고 통과로 세지 않는다.
oah ci init은 보여 주고 물은 뒤 시작 워크플로를 쓴다. 고른 운영체제에서의 테스트와 버전을 고정한 gitleaks 검사가 들어 있고, 권한은 읽기 전용이며 action은 전체 커밋 SHA로 고정한다. oah는 저장소 설정을 바꾸지 않는다. 검사를 필수로 만드는 GitHub 규칙 세트는 사용자가 직접 더한다.
아니다. 둘 다 선택이며 oah는 이 앱 없이도 모두 동작한다. oah doctor는 둘을 optional로 표시하고, 선택 앱이 없다고 실패하지 않는다. 설정은 앱마다 무엇을 더해 주는지 한 줄로 설명하고 사용자가 확인한 것만 설치하며, --yes로는 설치하지 않는다.
Orca는 코딩 에이전트를 각자의 git 워크트리에서 나란히 돌리고, oah call --launcher orca로 워커를 Orca 터미널에서 실행할 수 있다. Aside는 AI 에이전트가 들어 있는 브라우저이고 Claude Code와 Codex가 MCP로 웹 작업에 쓴다. Linux에서는 돌지 않는다.
oah는 MIT 라이선스로 배포하며 저작권자는 open-agent-harness 기여자다. skills/의 스킬은 각 라이선스가 허락하는 것만 원본 그대로 싣고, 해당 라이선스와 출처 기록을 함께 둔다.
THIRD_PARTY_NOTICES.md에 바탕으로 삼은 diagram-design 템플릿(MIT), Tabler Icons(MIT), Epoch AI 벤치마크 자료(CC BY 4.0), 그리고 unlazy, superpowers, graphify, Claude Code, Codex CLI 등 oah가 실행하거나 연결하는 도구의 출처가 있다.
oah를 업데이트한 뒤 프로젝트마다 oah rules sync를 실행한다. oah --version 출력은 oah 0.3.0이다. 새 규칙은 AI가 설계 난이도를 먼저 판정하게 하며, 없으면 패킷 생성 때 OAH_DESIGN_UNJUDGED가 나온다. 사용자 설정은 고치지 않는다.
모델을 고정하지 않았다면 이제 점수로 모델을 고른다. 기존 프로젝트의 도구 업데이트는 꺼진 채로 남는다. Jev가 켜져 있으면 확장된 Intent·Scope를 처음 보낼 때 OAH_RERANK_SCOPE_WIDENED가 나온다. 하한, 고정 모델, 점수 다운로드와 Jev를 끄는 방법은 업그레이드 문서에 있다.
v0.3.0은 현재 공개된 릴리스이며 주제는 벤치마크로 고르는 모델이다. 벤치마크 점수가 performance, balanced, efficient 프로필에 따라 모델을 고르고, 점수는 키 없이 Epoch AI에서 가져오거나 자기 Artificial Analysis 키로 받는다. 새 세대 모델은 알림과 함께 자동으로 합류하고 빠지며, Jev가 Intent와 Scope 경로로 난이도를 판정하되 호출을 막지 않는 규칙 기반 대체가 있고, 리뷰는 위험도 하한 아래로 실행하지 않으며, 마지막 리스 뒤에 선택형 도구 업데이트가 돌고, oah models report와 내보내기가 선택 방식을 센다. 고정 모델, tier 후보, 추론 강도 상한, 작업별 최저 기준은 그대로 유지된다.
2026년 11월 4일 공개됐다. 고정된 설치 스크립트, 소스 압축 파일과 SHA256SUMS가 포함된다. 안내형 설계 대화는 계속 v0.4.0 계획이다.
안내형 설계 대화다. 만들고 싶은 것을 말하면 oah가 추천안과 함께 설계 질문을 하나씩 묻고, 사용자는 구현 전에 설계 결정에 직접 참여한다. 예정된 기능이며 아직 제공하지 않는다.
지금도 AI와 목표를 의논하고, 리뷰 루프가 멈추면 판단에 답할 수 있다.