ultrawork 한 단어로 11명의 에이전트 팀을 가동한다. ⭐60,997 · TypeScript 91% · 라이선스 SUL-1.0(독자 라이선스). 핵심 발명은 편집 성공률을 6.7%→68.3%로 끌어올린 Hashline 편집과 모델 이름 대신 의도로 라우팅하는 카테고리 추상화. (저장소: code-yeongyu/oh-my-openagent)oh-my-openagent(줄여서 OmO)는 OpenCode와 Codex CLI 같은 코딩 에이전트 위에 얹어, 여러 LLM을 역할별로 분업시키는 "에이전트 하니스(harness)"다. 혼자 일하는 LLM 하나가 아니라, 그리스 신화 이름을 붙인 11명의 전문 에이전트가 팀처럼 협업한다. 사용자는 ultrawork(또는 ulw) 한 단어만 치면 전체 팀이 자동으로 가동되고, 매니저 자리에서 결과만 본다.
Claude Code·Cursor가 "한 명의 만능 개발자에게 계획·코딩·검토를 다 맡기는 방식"이라면, OmO는 "PM·팀 리드·시니어 개발자·아키텍트를 각각 다른 모델(Claude, GPT, Gemini, Kimi, GLM)로 두고 병렬로 굴리는 팀"이다.
핵심은 디스플린 에이전트(Discipline Agents)다. 메인 지휘자 시시포스가 일을 쪼개 전문 에이전트에게 위임하고, "끝날 때까지 멈추지 않는" 규율로 작업을 완수한다.
단일 LLM 도구(Claude Code, Cursor)는 훌륭하지만 실전에서 세 가지 벽에 부딪힌다. OmO는 이 셋을 정면으로 공략해 ⭐6만을 넘겼다.
① 모델 잠금: Claude만 쓰면 Claude가 못 푸는 문제는 영원히 못 푼다. ② 편집 실패율: "이 텍스트를 저 텍스트로 바꿔라"식 편집은 한 글자만 틀려도 실패 — Grok Code Fast 1에서 성공률 6.7%까지 추락. ③ 계획 부재: 큰 작업을 받으면 무작정 코드부터 쓰다가 방향이 틀어진다.
① 모델 이름을 코드에 박지 않고 카테고리(의도)로 추상화해 최적 모델로 자동 라우팅. ② Hashline 편집으로 편집 성공률을 6.7%→68.3%로(10배+) 개선. ③ 프로메테우스가 코딩 전에 사용자를 인터뷰해 계획부터 세운다.
| 비교 대상 | OmO의 포지셔닝 |
|---|---|
| Claude Code | OmO는 Claude Code 하니스 기능(훅·커맨드·스킬·MCP·플러그인)과 호환되면서도, 단일 모델이 아니라 멀티 모델 팀으로 굴린다. "Claude Code는 좋은 감옥이지만 감옥"이라는 도발적 슬로건을 내건다 |
| Cursor | Cursor는 IDE 종속. OmO는 OpenCode/Codex 위의 터미널 네이티브 — 한 리뷰어는 "OmO 때문에 Cursor 구독을 해지했다"고 평 |
| OpenCode (단독) | OmO는 OpenCode를 대체하지 않고 강화한다. "OpenCode가 Debian/Arch라면, OmO는 Ubuntu/Omarchy"라는 비유 — 합리적 기본값을 미리 깔아준 배포판 |
| oh-my-pi | Hashline 편집의 영감을 준 프로젝트. OmO는 그 발상을 OpenCode/Codex 환경에 이식·개선 |
이 레포는 매우 빠르게 진화한다. 모델명(Opus 4.7, GPT-5.5, Kimi K2.6, GLM-5.1)·스타 수(약 6만)·기능 목록은 2026-06-04 기준이다. 모델 카탈로그가 매달 바뀌므로 숫자보다 "발상"에 집중해 읽는 게 좋다. 이는 OmO가 카테고리 추상화를 도입한 이유 그 자체이기도 하다.
제작자 본인은 "TypeScript를 잘 모른다 — 99%를 OpenCode로 만들었다"고 밝힌다. 즉 이 레포 자체가 OmO로 OmO를 만든 셀프 호스팅(self-hosting) 사례다.
| 기술 | 역할 | 상세 |
|---|---|---|
| Bun / Node.js | 런타임 | Ultimate 에디션은 bunx, Light 에디션은 npx(Node)로 설치 |
| OpenCode | 호스트 ① | Ultimate 에디션이 얹히는 코딩 에이전트(플러그인으로 등록) |
| Codex CLI | 호스트 ② | Light 에디션이 얹히는 OpenAI Codex (lazycodex-ai로 설치) |
| npm 패키지 | 배포 | oh-my-opencode(레거시) / oh-my-openagent 듀얼 퍼블리시 |
| 제공자 | 대표 모델 | 주 용도(2026-06 기준) |
|---|---|---|
| Anthropic | Claude Opus 4.7 | 오케스트레이션·계획(시시포스·프로메테우스) |
| OpenAI | GPT-5.5 | 딥 워커(헤파이스토스), ultrabrain xhigh |
| Gemini 3.x | 비주얼 엔지니어링·문서화 | |
| Moonshot | Kimi K2.6 | Opus 대체 오케스트레이션(저비용) |
| Z.ai | GLM-5.1 | Opus 대체 계획/오케스트레이션 |
| 구성요소 | 역할 | 상세 |
|---|---|---|
| Hashline | 편집 엔진 | 줄마다 콘텐츠 해시 부여 — 핵심 발명(hashline-core) |
| LSP | 코드 지능 | rename·goto·references·diagnostics (양 에디션 공통) |
| AST-Grep | 구조 검색 | 25개 언어 대상 패턴 인식 검색/리라이트 |
| 내장 MCP ×3+ | 외부 지식 | Exa(웹검색) · Context7(공식 문서) · Grep.app(GitHub 코드검색) |
| Tmux | 대화형 터미널 | REPL·디버거·TUI를 세션 안에서 라이브 제어 / Team Mode 시각화 |
메인 에이전트 시시포스가 직접 코드를 다 짜지 않는다. 작업을 쪼개 전문 에이전트(서브에이전트)에게 위임하고, 여러 명을 병렬로 돌린 뒤 결과를 모은다. 컨텍스트 윈도우는 메인이 가볍게 유지한다(Background Agents).
OmO의 매력은 작명에 있다. "에이전트 1, 2, 3"이 아니라 신화 속 인물에 역할을 입혀, 이름만 알면 역할이 외워진다.
| 에이전트 | 역할 | 비유 / 모델 |
|---|---|---|
| Sisyphus (시시포스) | 메인 오케스트레이터 — 작업 분해·위임·완수까지 굴림. "멈추지 않는 규율" | 운영진 · Opus 4.7 / Kimi K2.6 / GLM-5.1 |
| Prometheus (프로메테우스) | 전략 플래너 — 코딩 전 인터뷰 모드로 범위·모호함을 짚고 계획 수립 | PM · Opus 4.7 / Kimi K2.6 / GLM-5.1 |
| Hephaestus (헤파이스토스) | 자율 딥 워커 — "레시피가 아니라 목표를 주면" 끝까지 혼자 수행. 대장간의 신 | 시니어 개발자 · GPT-5.5 |
| Atlas (아틀라스) | 실행 조율 — 계획을 받아 워커에게 작업 무게를 나눠 짐(소스 트리에 전용 모듈 존재) | 팀 리드 |
| Oracle (오라클) | 아키텍처·디버깅 자문 — 읽기 위주라 빠르고 안전 | 아키텍트 |
| Librarian / Explore | 문서 검색 / 빠른 코드 grep — 보조 탐색 역할 | 리서처 |
| Multimodal Looker 외 | 비주얼 분석, 계획 검증(Metis), 보조 역할들 | 전문 스태프 |
README가 명시하는 에이전트는 위와 같으며 보조 역할까지 합쳐 총 11명으로 소개된다. Team Mode를 켜면 리드 1 + 최대 8명의 멤버가 추가로 병렬 동작한다.
OmO의 가장 두드러진 발명. 기존 방식은 "이 텍스트를 찾아 저 텍스트로 바꿔라" — LLM이 원본을 완벽히 재현해야만 작동한다. 띄어쓰기 하나만 달라도 실패한다(Grok Code Fast 1: 6.7%). Hashline은 읽을 때 각 줄에 콘텐츠 해시를 붙여 돌려준다.
에이전트는 LINE 22#XJ를 수정하라처럼 안정적 식별자로만 지시한다. 파일이 변하면 해시가 달라져 즉시 거부 → 손상 전에 막힌다. 같은 모델·같은 작업으로 성공률이 68.3%로 뛴다.
실패의 상당수는 모델이 아니라 편집 도구(하니스) 탓이다. 더 똑똑한 모델을 기다리기 전에 도구의 인터페이스부터 점검하라 — 이것이 "the harness problem"의 핵심이다.
시시포스가 서브에이전트에 위임할 때 모델을 고르지 않는다. 카테고리(의도)를 고르면 하니스가 최적 모델로 자동 매핑한다.
| 카테고리 | 쓰임새 |
|---|---|
| ultrabrain | 어려운 논리·아키텍처 결정 (기본 GPT-5.5 xhigh) |
| deep | 자율적 리서치 + 실행 |
| visual-engineering | 프론트엔드·UI/UX·디자인 |
| quick | 단일 파일 변경·오타 수정 |
리드 에이전트가 카테고리별 멤버 팀(최대 8명)을 만들어 team_create·team_send_message·team_task_create·team_status 도구로 통신시키고, tmux 레이아웃에서 전원이 동시에 일하는 걸 본다. 그 위에 두 스킬이 올라탄다 — hyperplan(5명의 적대적 비평가가 계획을 찢는다), security-research(3명의 취약점 헌터 + 2명의 PoC 엔지니어). 또한 Skill-Embedded MCP로 스킬이 자기 MCP 서버를 온디맨드로 띄웠다 닫아 컨텍스트 윈도우를 깨끗이 유지한다.
OmO는 Bun 워크스페이스 모노레포다. 기능이 packages/*-core(순수 로직)와 *-mcp(MCP 서버)로 분리돼 있어, 여러 하니스에서 재사용하기 좋게 설계됐다(현재 진행 중인 멀티 하니스 리팩터링의 토대). 에이전트·훅·MCP 등 플러그인 코어는 루트가 아닌 packages/omo-opencode/src/ 안에 위치한다.
읽는 순서 추천: packages/hashline-core(가장 독창적) → packages/model-core(카테고리 라우팅) → packages/omo-opencode/src/agents/(분업 구조) → docs/guide/orchestration.md(에이전트 협업 원리).
배울 것: 한 LLM에 다 맡기지 않고 역할별로 분업시키는 설계. 메인(시시포스)이 작업을 분해→위임→병렬 실행→취합하는 흐름, Background Agents로 메인 컨텍스트를 가볍게 유지하는 기법. "한 명이 빌딩을 지으면 무너진다 — 설계사·시공자·감리를 나눠라"는 발상.
배울 것: 모델 이름(구현)을 의도(ultrabrain/deep/quick)로 감싸 결합도를 낮추는 설계. CSS design token, React props, REST endpoint와 같은 원리 — "이름은 안정적, 구현은 가변적". 모델이 매달 바뀌는 시장에서 코드를 안 고치는 방법.
배울 것: LLM이 "원본을 재현"하게 만들지 말고, 검증 가능한 앵커(해시)를 주는 인터페이스 설계. 실패의 원인이 모델이 아니라 도구일 수 있다는 통찰("the harness problem"). 작은 도구 개선이 성능을 10배 끌어올린 실증 사례.
배울 것: 54+ 훅(Team Mode 포함 61개)으로 워크플로를 자동화하는 이벤트 드리븐 아키텍처. 또 Claude Code의 훅·커맨드·스킬·MCP·플러그인을 그대로 재사용하는 호환 레이어 설계 — 생태계를 흡수하는 전략.
배울 것: MCP 서버가 컨텍스트 윈도우를 잡아먹는 문제를, 스킬이 자기 MCP를 필요할 때만 띄웠다 닫는 온디맨드 방식으로 푸는 발상. 점진적 공개(Progressive Disclosure) 패턴의 응용.
배울 것: *-core(순수 로직)와 *-mcp(어댑터)를 분리해 여러 하니스에서 재사용하는 패키지 레이어링. 그리고 "OmO로 OmO를 만든" 셀프 호스팅 — 도구가 스스로를 개발하는 도그푸딩의 모범.
| 항목 | Ultimate (OpenCode) | Light (Codex CLI) |
|---|---|---|
| 설치 명령 | bunx oh-my-openagent install | npx lazycodex-ai install |
| 런타임 | Bun 필요 | Node/npm (Bun 불필요) |
| 포함 범위 | 11 에이전트·54+ 훅·5 내장 MCP·Team Mode 전부 | rules·comment-checker·LSP·ultrawork·ulw-loop·telemetry 등 이식 가능 컴포넌트 |
| OS | macOS / Linux(arm64·x64, musl 포함) / Windows x64 — 사전 빌드 바이너리 제공 | |
| 둘 다 | bunx oh-my-openagent install --platform=both | |
| 구독 | 월 비용 | 비고 |
|---|---|---|
| ChatGPT | $20 | 이 조합만으로도 ultrawork가 잘 동작(제작자 추천, 비제휴) |
| Kimi Code | $19 | Opus 대체 오케스트레이션 |
| GLM Coding Plan | $10 | 저비용 계획/오케스트레이션 |
제작자는 개인 프로젝트에 LLM 토큰으로 $24,000을 썼다고 밝힌다. 동시 호출 수를 제한하는 modelConcurrency·providerConcurrency(provider/model별 동시성 설정)를 반드시 조정하라. 페이-퍼-토큰이 가능하면 Kimi·Gemini 조합이 상대적으로 저렴하다.
OpenCode에 OmO를 깔고 진단까지 돌린 뒤, 작은 프로젝트에서 ultrawork(또는 ulw) 한 단어로 팀이 병렬 가동되는 걸 관찰한다.
# 설치 (TUI가 단계별로 안내)
bunx oh-my-openagent install
# 진단 — 플러그인 등록·설정·모델·환경 점검
bunx oh-my-opencode doctor
# OpenCode에서 한 단어
> ultrawork # 또는 ulw
.opencode/oh-my-openagent.jsonc에 korean-docs 같은 본인만의 카테고리를 정의하고, 어떤 모델·온도·시스템 프롬프트를 쓸지 지정한다. "의도→모델" 매핑을 직접 만들어 본다.
quick으로 한 번, ultrabrain으로 한 번 시켜 결과·비용·속도 차이를 비교한다. 카테고리만 바꿨는데 모델이 바뀌는 걸 확인.TypeScript로 100줄 안팎의 미니 Hashline 편집기를 만든다. 각 줄에 SHA-256 앞 4자리를 해시로 붙이고, LINE#HASH 수정 명령을 처리하되, 파일이 변경되면 거부한다.
# 의사코드
lines = read(file)
for i, line in lines:
print(f"{i+1}#{sha256(line)[:4]}| {line}")
# 편집 명령: ("12#AB3F", "새 내용")
if sha256(lines[11])[:4] != "AB3F":
reject("stale line!") # 해시 불일치 → 거부
else:
lines[11] = "새 내용"
Planner(Claude) → Coder(GPT) → Reviewer(Claude) 흐름을 직접 코딩한다. 계획→구현→검토의 계층적 위임을 작은 규모로 재현 — API 3개면 100줄 안에 가능하다.
하나의 계획을 서로 다른 시각(보안·성능·UX·비용·유지보수)의 5개 프롬프트로 동시에 비판하게 만든 뒤, 그 비판들을 종합해 계획을 보강한다. OmO의 hyperplan(5 적대적 비평가) 발상을 손으로 구현.
| 요일 | 학습 내용 | 실습 |
|---|---|---|
| 월 | 하니스 개념 & OmO 설치 | OpenCode + OmO 설치, doctor 진단 |
| 화 | ultrawork 모드 체험 | 작은 작업을 ulw로 끝까지 굴려보기 |
| 수 | 그리스 신 분업표 이해 | 시시포스/프로메테우스/헤파이스토스 역할 관찰 |
| 목 | 구독·비용 구조 | concurrency 설정으로 비용 통제 실습 |
| 금 | 모드 정리 | search/analyze/team/hyperplan 차이 정리 |
| 요일 | 학습 내용 | 실습 |
|---|---|---|
| 월 | 카테고리 추상화 원리 | ultrabrain/deep/quick 매핑 읽기 |
| 화 | 커스텀 카테고리 | 본인 카테고리 정의 + 모델 지정 |
| 수 | JSONC 설정 구조 | .opencode/oh-my-openagent.jsonc 편집 |
| 목 | 에이전트 오버라이드 | 특정 에이전트 모델·온도·프롬프트 조정 |
| 금 | fallback 모델 | fallback_models로 장애 대비 설정 |
| 요일 | 학습 내용 | 실습 |
|---|---|---|
| 월 | the harness problem 읽기 | Can Bölük 글 + Hashline 원리 정리 |
| 화 | Hashline 직접 구현 | 미니 해시 앵커 편집기(과제 3) |
| 수 | LSP / AST-Grep | rename·diagnostics·25개 언어 패턴 검색 |
| 목 | 내장 MCP | Exa·Context7·Grep.app 호출 관찰 |
| 금 | Skill-Embedded MCP | 스킬이 MCP를 온디맨드로 띄우는 구조 분석 |
| 요일 | 학습 내용 | 실습 |
|---|---|---|
| 월 | Team Mode 켜기 | team_mode.enabled + tmux 시각화 |
| 화 | team_* 도구 패밀리 | create/send_message/task_create/status |
| 수 | hyperplan 적대적 리뷰 | 5 비평가 패턴 직접 구현(과제 5) |
| 목 | 3명 미니 오케스트레이터 | Planner→Coder→Reviewer 코딩(과제 4) |
| 금 | 종합 | 카테고리+Hashline+팀을 결합한 워크플로 |
| 키워드 | 설명 |
|---|---|
| 하니스 (Harness) | LLM을 실제로 일하게 만드는 실행 껍데기. 도구 호출·편집·오케스트레이션 담당. OmO의 정체성 |
| 멀티 에이전트 | 역할·권한·도구·모델이 다른 여러 LLM 에이전트가 협업하는 구조 |
| Discipline Agents | "끝날 때까지 멈추지 않는" 규율로 작업을 완수하는 OmO의 에이전트 군 |
| Sisyphus | 메인 오케스트레이터 에이전트. 작업 분해·위임·완수를 총괄 |
| Prometheus | 전략 플래너. 코딩 전 인터뷰 모드로 계획을 세움 |
| Hephaestus | 자율 딥 워커. 목표만 주면 끝까지 혼자 수행("Legitimate Craftsman") |
| Hashline | 각 줄에 콘텐츠 해시를 붙여 안정적 식별자로 편집하는 기법(6.7%→68.3%) |
| the harness problem | 에이전트 실패의 다수는 모델이 아니라 편집 도구 탓이라는 통찰(Can Bölük) |
| 카테고리 라우팅 | 모델명 대신 의도(ultrabrain/deep/quick 등)로 작업을 분류해 모델 자동 매핑 |
| ultrabrain / deep / quick | 대표 카테고리 — 어려운 논리 / 자율 리서치+실행 / 단순 수정 |
| ultrawork (ulw) | 모든 에이전트를 가동해 끝까지 일하게 하는 트리거 키워드 |
| Ralph Loop / ulw-loop | 100% 끝날 때까지 스스로 반복하는 자기참조 루프(.omo/ulw-loop/) |
| Team Mode | 리드 + 최대 8 멤버가 병렬로 일하는 진짜 멀티 에이전트 모드(v4.0) |
| hyperplan | 5명의 적대적 비평가가 계획을 코딩 전에 찢는 스킬 |
| IntentGate | 행동 전에 사용자의 진짜 의도를 분석해 문자 그대로의 오해를 줄이는 게이트 |
| Skill-Embedded MCP | 스킬이 자기 MCP 서버를 온디맨드로 띄워 컨텍스트 비대화를 막는 패턴 |
| AGENTS.md | 프로젝트 컨텍스트 규칙 파일. /init-deep가 계층적으로 자동 생성 |
| Light / Ultimate 에디션 | Codex CLI용(이식 컴포넌트) / OpenCode용(전체 기능) 두 배포 형태 |