macOS · Claude Code + Codex macOS · Claude Code + Codex 지원

Parallel agents are the easy part. Landing their work isn't. 병렬로 돌리는 건 어렵지 않습니다. 어려운 건 병합까지입니다.

Running agents side by side is the horizontal axis. Wooi adds the vertical one: dependent work branches off the work it depends on, and the whole chain stays valid as parents merge. Agents build those chains themselves through Wooi's built-in tools, and every review lands on the diff instead of in a transcript. 에이전트를 나란히 돌리는 건 가로축입니다. Wooi 는 세로축을 더합니다. 이어지는 작업은 자기가 딛고 선 작업에서 분기하고, 부모가 병합돼도 체인 전체가 유효하게 남습니다. 그 체인은 에이전트가 내장 도구로 직접 쌓고, 리뷰는 채팅 로그가 아니라 diff 위에 붙습니다.

⬇ Download for macOS ⬇ macOS 다운로드 ★ View on GitHub ★ GitHub 에서 보기

Free & open source (Apache 2.0) · Apple Silicon · No API key required 무료 & 오픈소스 (Apache 2.0) · Apple Silicon · 별도 API 키 불필요

Wooi in action
Why Wooi왜 Wooi 인가

The bottleneck already moved 병목은 이미 옮겨갔습니다

Running agents in isolated worktrees is table stakes now — plenty of orchestrators already do it. But worktrees solve file collisions; they don't solve dependencies. The unsolved half is downstream: branches that were written in parallel and have to land in sequence, and a review queue that grows as fast as the agents write. Here's where Wooi puts its weight. 격리된 worktree 에서 에이전트를 돌리는 건 여러 오케스트레이터가 이미 지원합니다. 하지만 worktree 는 파일 충돌은 막아도 의존성은 못 풉니다. 안 풀린 쪽은 그 다음입니다. 병렬로 쓰였지만 순서대로 병합돼야 하는 브랜치들, 그리고 에이전트가 코드를 쓰는 속도만큼 쌓이는 리뷰 대기열. Wooi 가 힘을 싣는 자리가 여기입니다.

🧱

The whole stacked-PR lifecycleStacked PR의 전 과정을 다룹니다

Build dependent work as a PR stack. Wooi imports stacks from GitHub, reviews every layer together, and keeps the chain valid through restacks and merges. 의존 작업을 PR 스택으로 쌓습니다. GitHub 스택을 가져와 모든 레이어를 함께 리뷰하고, restack과 병합 뒤에도 체인을 유효하게 유지합니다.

🤖

Agents orchestrate the app, not just the repo에이전트가 앱을 조종합니다

Built-in tools let agents split work, build stacks, form teams, and message other workspaces. Permission and receive policies keep files, diffs, and transcripts inside their workspace. 내장 도구로 작업을 나누고 스택을 쌓으며, 팀을 꾸리거나 다른 워크스페이스에 메시지를 보냅니다. 파일과 diff, 대화 기록은 권한·수신 정책이 허용한 범위를 벗어나지 않습니다.

🔍

The diff and the stack are the review surfacediff와 스택 위에서 바로 리뷰합니다

Each review has its own worktree, with findings anchored to diff lines. Stack reviews read every layer together, while workspace comments send the exact code location back to the agent. 리뷰마다 전용 worktree가 있고 지적은 diff 줄에 붙습니다. 스택 리뷰는 모든 레이어를 함께 읽으며, 워크스페이스 코멘트는 정확한 코드 위치를 에이전트에게 돌려보냅니다.

🎛️

Two agent backends, integrated deeply두 백엔드를 얕지 않게

Wooi exposes each backend's own models, permissions, effort, fast mode, rate limits, and MCP servers. Switch between Claude Code and Codex mid-conversation with the existing context carried over. 각 백엔드의 모델·권한·effort·fast mode·레이트리밋·MCP 서버를 그대로 살립니다. 대화 도중 Claude Code와 Codex를 바꿔도 기존 맥락이 이어집니다.

🔒

Quiet where it counts조용해야 할 곳에서 조용합니다

No telemetry or servers of its own: settings and transcripts stay local. Updates wait for active work, ignored files carry into new worktrees, and sessions survive restarts. 텔레메트리와 자체 서버가 없어 설정·대화 기록은 로컬에 남습니다. 업데이트는 작업이 끝날 때까지 기다립니다. 필요한 ignore 파일은 새 worktree로 전달되고, 세션은 재시작 뒤에도 이어집니다.

How it works동작 방식

Repository → Workspace → PR리포 → 워크스페이스 → PR

One task = one dedicated git worktree + branch + agent session. Nothing runs until you send your first message. 작업 1개 = 전용 git worktree + 브랜치 + 에이전트 세션 1개. 첫 메시지를 보내기 전까지 아무것도 실행되지 않습니다.

01

Connect a repo리포 연결

Point Wooi at a git repository (its main checkout). Configure per-repo Setup / Dev / Archive scripts like npm install. git 리포(메인 체크아웃)를 연결합니다. 리포 단위로 Setup / Dev / Archive 스크립트(npm install 등)를 지정합니다.

02

Spin up a workspace워크스페이스 생성

Each task gets its own worktree + branch + agent session under ~/wooi/workspaces/<repo>/<branch>, running independently and in parallel. 작업마다 전용 worktree + 브랜치 + 세션이 ~/wooi/workspaces/<repo>/<branch> 에 생성되어 독립적·병렬로 실행됩니다.

03

Land the work병합까지

Open a GitHub PR in one click. If the task builds on another, stack it and Wooi keeps the chain rebased and retargeted as parents merge — and review lands on the diff, not in a chat log. 클릭 한 번으로 GitHub PR 을 엽니다. 앞선 작업 위에 얹히는 작업이면 스택으로 쌓아 두면, 부모가 병합될 때마다 Wooi 가 체인을 rebase 하고 base 를 옮깁니다. 리뷰는 채팅 로그가 아니라 diff 위에 붙습니다.

Agent support: Since v1.4.0, Wooi supports both Claude Code and OpenAI Codex. Choose an agent when you create a workspace; models, reasoning effort, permissions, and commands adapt to that backend. 에이전트 지원: v1.4.0부터 Claude Code와 OpenAI Codex를 모두 지원합니다. 워크스페이스를 만들 때 에이전트를 선택하면 모델·reasoning effort·권한·명령이 해당 백엔드에 맞게 표시됩니다.
Features기능

Everything you need to run agents in parallel — and land what they write에이전트를 병렬로 돌리고, 그 결과를 병합하기까지

🧱

Stacked PRsStacked PR

  • No extra tooling추가 도구 없음 — not every task is independent — sometimes step 2 builds on step 1. Wooi manages those chains itself with plain git and gh — no extra stacking CLI needed. 모든 작업이 독립적이지는 않습니다 — 2번 작업이 1번 위에서 이어져야 할 때가 있죠. Wooi 는 그 체인을 git 과 gh 만으로 직접 관리합니다. 별도 스택 도구가 필요 없습니다.
  • Or let the agent stack it에이전트가 쌓게 두기 — create_stacked_workspace opens the next workspace on top of the current branch when the work just finished is a complete, reviewable unit. See Agent orchestration below. create_stacked_workspace 는 방금 끝낸 작업이 리뷰 가능한 한 덩어리일 때 현재 브랜치 위에 다음 워크스페이스를 엽니다. 아래 에이전트 오케스트레이션을 참고하세요.
  • Stack overview스택 한눈에 — a Stack button in the header lists every branch in the chain with its PR state, PR number, and ahead/behind counts. Click to jump, or open a PR for a branch that doesn't have one. 헤더의 Stack 버튼이 체인의 모든 브랜치를 PR 상태·PR 번호·ahead/behind 와 함께 보여 줍니다. 클릭해 이동하거나, PR 이 없는 브랜치는 그 자리에서 PR 을 엽니다.
  • RestackRestack — rebase a workspace onto the latest parent branch and push with --force-with-lease. Conflicts stop in the worktree so you can resolve them there. 최신 부모 브랜치 위로 rebase 하고 --force-with-lease 로 push 합니다. 충돌이 나면 worktree 에 멈춰 있어 거기서 해결하면 됩니다.
  • Merge cascade병합 캐스케이드 — when a parent PR merges, Wooi retargets each child PR's base to the grandparent branch and rebases the children onto it, so the rest of the stack stays valid. 부모 PR 이 병합되면 각 자식 PR 의 base 를 조부모 브랜치로 옮기고 자식 브랜치를 그 위로 rebase 해, 스택 나머지가 그대로 유효하게 남습니다.
  • Detected, not just declared선언이 아니라 감지 — if an agent builds a chain itself with git checkout -b and gh pr create, Wooi reconstructs the stack from the PRs' base links and shows it the same way. 에이전트가 git checkout -b 와 gh pr create 로 직접 체인을 만들어도, PR 의 base 링크에서 스택을 복원해 똑같이 보여 줍니다.
  • The parent is the default base — for everyone기본 base 는 누가 열든 부모 — stacking a workspace records the parent as that branch's merge base, so a bare gh pr create — yours or an agent's — targets the parent. If a PR still lands on the wrong base, Wooi says so and offers to retarget it instead of quietly dropping the stack. 워크스페이스를 스택으로 만들면 그 브랜치의 merge base 에 부모를 기록합니다. 그래서 그냥 실행한 gh pr create 도 — 사용자가 치든 에이전트가 치든 — 부모 브랜치를 향합니다. 그래도 엉뚱한 base 로 열렸다면, 조용히 스택을 잃는 대신 알려 주고 리타겟할지 물어봅니다.
  • GitHub stacks come in tooGitHub 스택도 가져오기 — Wooi reads GitHub's server-side stack object and its explicit layer order when available, then falls back to the PR base chain. If the remote branch has diverged from the local expectation, synchronization stops instead of overwriting it. GitHub의 서버 스택 객체가 있으면 명시된 레이어 순서를 읽고, 없을 때만 PR base 체인으로 복원합니다. 원격 브랜치가 로컬의 예상과 갈라졌다면 덮어쓰지 않고 동기화를 멈춥니다.
  • Review the stack as a stack스택을 스택답게 리뷰 — one session reads every layer together and looks for ordering, boundary, granularity, churn, and cross-layer dependency problems. Findings stay attached to the PR they concern. 세션 하나가 모든 레이어를 함께 읽습니다. 순서·경계·크기·되돌림·레이어 간 의존성을 짚고 지적은 해당 PR에 남깁니다.
🤖

Agent orchestration에이전트 오케스트레이션

  • A built-in MCP server, nothing to configure설정 없이 붙는 내장 MCP 서버 — Wooi attaches a server named wooi to every Claude Code and Codex session it starts. The agent doesn't just edit files in its worktree; it can drive Wooi itself — split a task, open the workspaces for the pieces, stack them in dependency order, and pass results along the chain. Wooi 가 띄우는 모든 Claude Code·Codex 세션에 wooi 서버가 붙습니다. 에이전트는 자기 worktree 의 파일만 고치지 않습니다. Wooi 자체를 조종합니다. 작업을 쪼개고, 조각마다 워크스페이스를 열고, 의존 순서대로 쌓고, 결과를 체인을 따라 넘깁니다.
  • See the neighbours first옆자리부터 확인 — check_related_work lists the other workspaces open on this repo and the paths each is changing, flags overlaps with what this agent plans to touch, and tells it to check with you first. Paths only — diffs are never shared between workspaces. check_related_work 는 이 리포에 열려 있는 다른 워크스페이스가 각각 어떤 경로를 바꾸는지 알려 줍니다. 이 에이전트가 건드리려는 경로와 겹치면 사용자에게 먼저 물어보라고 안내합니다. 넘어가는 건 경로뿐입니다. diff 는 워크스페이스 사이를 넘지 않습니다.
  • Fan out or stack up펼치거나 쌓거나 — create_workspace starts an independent workspace off the default branch; create_stacked_workspace starts a child off the committed tip of the current branch. Either can be handed a first message that starts the new agent's turn immediately. create_workspace 는 기본 브랜치에서 독립 워크스페이스를 만듭니다. create_stacked_workspace 는 현재 브랜치의 커밋된 끝에서 자식 워크스페이스를 만듭니다. 둘 다 첫 메시지를 함께 넘겨 새 에이전트의 턴을 바로 시작할 수 있습니다.
  • Talk along the chain체인을 따라 주고받기 — report_to_parent records a result for the parent without interrupting it, check_stacked_work lists the children with their branch, PR state, and latest report, and notify_child sends an update that starts a turn in a child. report_to_parent 은 부모의 턴을 끊지 않고 결과를 기록합니다. check_stacked_work 는 자식들의 브랜치·PR 상태·최신 보고를 나열합니다. notify_child 는 자식에게 소식을 보내 턴을 시작합니다.
  • Fenced in울타리 — most tools act only on the calling workspace; tools that take a workspace id can only name one the caller created. Read-only tools run without a prompt; state-changing ones follow the workspace's permission mode and show an approval card. 대부분의 도구는 호출한 워크스페이스에만 작용합니다. 워크스페이스 id 를 받는 도구는 호출자가 직접 만든 것만 겨냥할 수 있습니다. 읽기 전용 도구는 승인 없이 돌고, 상태를 바꾸는 도구는 권한 모드를 따라 승인 카드를 띄웁니다.
  • Talk across workspaces워크스페이스 사이에서 대화하기 — list_workspace_peers and send_to_workspace carry a short text message to another open workspace. The receiver can accept, hold for approval, or refuse it; files, diffs, and transcripts do not travel with it. list_workspace_peers·send_to_workspace로 다른 열린 워크스페이스에 짧은 평문 메시지를 보냅니다. 받는 쪽이 즉시 수신·승인 대기·거절을 정하며 파일·diff·대화 기록은 함께 가지 않습니다.
  • Grow into an agent team필요할 때 에이전트 팀으로 — an agent can request that a solo workspace become an agent team. Once you approve, Wooi carries the conversation over and automatically continues the task after the switch. 에이전트가 단독 워크스페이스를 에이전트 팀으로 바꾸도록 요청할 수 있습니다. 사용자가 승인하면 기존 대화를 넘기고 전환 뒤 하던 작업을 자동으로 이어 갑니다.
🔍

PR reviewPR 리뷰

  • A diff you review on, not a transcript you read읽는 로그가 아니라 작업하는 diff — three panes: the changed files with a count of findings on each, the full diff in the middle, and a findings / activity sidebar. Every agent reviews PRs now — what was missing is somewhere to work the result. 3분할입니다. 왼쪽은 변경 파일과 파일별 지적 개수, 가운데는 diff 전체, 오른쪽은 총평/활동 사이드바. PR 리뷰는 이제 어떤 에이전트든 합니다. 없던 건 그 결과를 다룰 화면입니다.
  • Findings land on the lines they're about지적은 해당하는 줄 위에 — each one is anchored to its hunk and rendered as a card right there in the diff, with a severity badge and a markdown body. If an agent cites a line that isn't in the diff, the card says so and shows where it moved to — you catch a misplaced comment before it goes out, not after. 각 지적이 자기 hunk 에 앵커되어 심각도 배지와 마크다운 본문을 단 카드로 diff 안에 바로 붙습니다. 에이전트가 diff 에 없는 줄을 짚으면 카드가 그 사실과 옮겨진 위치를 알려 줍니다. 엉뚱한 줄에 달린 코멘트를 나간 뒤가 아니라 나가기 전에 잡습니다.
  • Curate before you post게시 전에 추리기 — Edit reworks the wording inline, Discard drops what you don't want, Comment posts that finding on its own. Or tick the ones you want and send the batch — each goes out as its own review comment, and posted cards go quiet with a link to the comment on GitHub. Edit 로 문장을 그 자리에서 고치고, Discard 로 안 달 것을 버리고, Comment 로 그 지적만 올립니다. 원하는 것만 체크해 한 번에 올릴 수도 있습니다. 각각 개별 리뷰 코멘트로 나가고, 게시된 카드는 GitHub 코멘트 링크만 남기고 조용해집니다.
  • Review a stack as one unit스택 전체를 하나로 리뷰 — one session reads every layer together, separates stack findings from layer findings, anchors inline comments to the correct PR, and records partial success when verdict submission stops partway through. 세션 하나가 모든 레이어를 함께 읽습니다. 스택 전체의 문제와 각 레이어의 문제를 나누고 인라인 지적은 올바른 PR에 연결합니다. 레이어별 판정을 올리다 일부만 성공해도 그 상태를 기록합니다.
  • Send your diff feedback to the agent내 diff 피드백을 에이전트에게 — comment on a changed line in a regular workspace and reply with that file and line attached. The agent gets the code location instead of a detached description. 일반 워크스페이스의 변경 줄에 코멘트를 달고 파일·줄 위치와 함께 회신합니다. 코드와 떨어진 설명을 다시 채팅에 옮길 필요가 없습니다.
  • Keep your place in a big diff큰 diff 에서 자리 잃지 않기 — tick a file as viewed and it collapses out of the way. The mark is stored against a fingerprint of that file's contents, so a new commit that changes the file puts it back to unviewed on its own — and files that didn't change stay checked. 파일에 봤음 표시를 하면 접혀 비켜 줍니다. 이 표시는 파일 내용의 지문과 함께 저장되므로 새 커밋이 그 파일을 바꾸면 저절로 안 본 상태로 돌아갑니다. 바뀌지 않은 파일은 표시가 그대로 남습니다.
  • Its own worktree전용 worktree — the PR head is checked out into a dedicated review worktree, so the agent can read code outside the changed hunks without touching the checkout you're working in. PR head 를 별도 리뷰 worktree 에 체크아웃해, 지금 작업 중인 체크아웃은 건드리지 않으면서 변경된 hunk 바깥의 코드까지 읽게 합니다.
  • Activity timeline활동 타임라인 — replies to comments you posted and new commits on the PR are polled automatically and land in the timeline; ask a follow-up and the review picks up from there. 게시한 코멘트의 답글과 PR 의 새 커밋을 주기적으로 가져와 타임라인에 쌓습니다. 이어서 질문하면 그 지점부터 다시 이어집니다.
  • Verdicts판정 — comment, approve, or request changes. Unposted findings can go up with the verdict — comments first, and the verdict is held back if any of them fail. Approve / request changes are hidden on your own PR, which GitHub rejects anyway. comment · approve · request changes 를 제출합니다. 안 올린 지적은 판정과 함께 올릴 수 있고 — 코멘트가 먼저 올라가며, 하나라도 실패하면 판정은 보류됩니다. 내 PR 에서는 approve/request changes 를 숨깁니다(GitHub 이 거부하므로).
🎛️

Agent backends에이전트 백엔드

  • Backend-specific controls백엔드별 컨트롤 — models, reasoning effort, permission modes, slash commands, and account details all come from the selected backend, so a workspace only shows controls that actually work there. 모델·reasoning effort·권한 모드·슬래시 명령·계정 정보가 전부 선택한 백엔드에서 옵니다. 워크스페이스에는 거기서 실제로 동작하는 컨트롤만 뜹니다.
  • Permission modes, cycled with Shift+TabShift+Tab 으로 순환하는 권한 모드 — Claude Code offers default, accept edits, plan, and auto; Codex offers read only, auto, full access, and plan. Prompts offer "Always allow" alongside Allow/Deny — Enter = Allow, Esc = Deny. Claude Code 는 default·accept edits·plan·auto 를, Codex 는 read only·auto·full access·plan 을 제공합니다. 권한 프롬프트는 Allow/Deny 외에 "Always allow" 도 제공합니다(Enter=Allow / Esc=Deny).
  • Switch agents without losing the conversation대화를 버리지 않고 에이전트 교체 — use /agent after work has started. Because Claude and Codex cannot resume each other's native session IDs, Wooi sends a bounded handoff with your next message and shows its estimated cost first. 작업이 시작된 뒤에도 /agent를 쓸 수 있습니다. Claude와 Codex는 서로의 세션 ID를 이어받을 수 없으므로 Wooi가 제한된 크기의 인수인계를 다음 메시지와 함께 보내고 예상 비용을 미리 보여 줍니다.
  • Capabilities only one side has한쪽에만 있는 기능 — /rewind (roll code back to a file checkpoint) and /btw (a side question that doesn't derail the turn) appear where the backend supports them, and mid-turn steering is used where it exists instead of being queued. /rewind(파일 체크포인트로 되돌리기)와 /btw(턴을 흐트러뜨리지 않는 곁가지 질문)는 백엔드가 지원할 때 나타납니다. 턴 중간 steering 도 되는 쪽에서는 큐잉 없이 그대로 씁니다.
  • Rate limits, normalized정규화된 레이트리밋 — account usage from either backend shows in one status line, pinned to the window that actually paces you — Claude's 5-hour session window, Codex's weekly one — so the number doesn't swap out from under you. 양쪽 백엔드의 계정 사용량을 상태줄 하나로 보여 주되 실제로 페이스를 좌우하는 창에 고정합니다(Claude 는 5시간 세션 창, Codex 는 주간 창). 볼 때마다 다른 숫자로 바뀌지 않습니다.
  • Your MCP servers come along내 MCP 서버도 그대로 — servers configured in your own Claude/Codex CLI setup are resolved and injected into the session alongside Wooi's own wooi server. Claude·Codex CLI 에 설정해 둔 MCP 서버를 읽어 Wooi 자체 wooi 서버와 함께 세션에 붙입니다.
🗂️

Workspaces워크스페이스

  • Choose Claude Code or CodexClaude Code 또는 Codex 선택 — pick the coding agent when creating a workspace and change it later with /agent. If work has started, the new agent receives a bounded conversation handoff; stacked workspaces initially inherit their parent's. 워크스페이스를 만들 때 코딩 에이전트를 고르고 나중에도 /agent로 바꿀 수 있습니다. 이미 작업을 시작했다면 새 에이전트가 제한된 크기의 대화 인수인계를 받습니다. 스택 워크스페이스는 처음에 부모의 에이전트를 물려받습니다.
  • Per-workspace model & effort워크스페이스별 모델·effort — set from the status line or by typing /model, /effort, and /fast. Options depend on the selected agent and model. 상태줄에서 고르거나 /model·/effort·/fast 로 바꿉니다. 선택지는 에이전트와 모델에 따라 달라집니다.
  • Sessions resume across restarts재시작 간 세션 resume — your conversation context is restored, so the next message continues where you left off. 대화 맥락이 복원되어, 재시작 후 첫 메시지에서 하던 작업을 이어갑니다.
  • Carried filesCarry files — a new worktree only contains git-tracked files, so list the ignored ones you need (.env, CLAUDE.local.md, …) per repo. Copy gives each workspace its own version, Link shares one original. 새 worktree 에는 git 이 추적하는 파일만 들어오므로, 필요한 ignore 파일 (.env, CLAUDE.local.md 등)을 리포마다 적어 둡니다. Copy 는 워크스페이스마다 자기 사본을, Link 는 원본 하나를 공유합니다.
👁️

Parallel-session visibility병렬 세션 가시화

  • Fan out one prompt프롬프트 하나를 여러 곳에 펼치기 — send the same prompt to several independent workspaces, compare their responses and diffs side by side, then adopt one winner and archive the alternatives. 같은 프롬프트를 여러 독립 워크스페이스에 보내 응답과 diff를 나란히 비교합니다. 하나를 채택한 뒤 나머지는 아카이브할 수 있습니다.
  • Status at a glance한눈에 보는 상태 — the sidebar distinguishes running (spinner), awaiting permission (yellow shield), and unread responses (blue dot). 사이드바에서 실행 중(spinner)·권한 대기(노란 방패)·미확인 응답(파란 점)을 구분해 보여줍니다.
  • Overview boardOverview 보드 — lists every active session with status filters (All / Running / Needs input / Unread / Idle) and a Stop all action. 모든 활성 세션을 상태별 필터(All / Running / Needs input / Unread / Idle)로 훑고 Stop all 로 일괄 중단합니다.
🧰

Work area작업 영역

  • ChangesChanges — a per-file diff against the base branch (same as a PR diff), covering commits + staged + unstaged + untracked. A Create PR button opens GitHub's PR page. base 브랜치 대비 파일별 diff(PR diff 와 동일). 커밋 + staged + unstaged + untracked 를 모두 포함하고, Create PR 버튼이 PR 작성 화면을 엽니다.
  • PreviewPreview — open the workspace's dev server inside Wooi, capture the page or pick an element into the composer, and send collected console and network failures to the agent. It runs in a separate, permission-denied session. 워크스페이스의 dev 서버를 Wooi 안에서 엽니다. 화면을 캡처하거나 특정 요소를 골라 입력창에 넣습니다. 수집한 콘솔·네트워크 오류도 에이전트에게 보냅니다. Preview는 권한을 차단한 별도 세션에서 실행됩니다.
  • TerminalTerminal — per-workspace login-shell terminals with multiple tabs. They survive workspace switches, preserving running commands and shell state. 워크스페이스별 로그인 셸 터미널에 탭을 여러 개 둘 수 있습니다. 전환했다 돌아와도 실행 중이던 명령과 셸 상태가 유지됩니다.
✍️

Composing messages메시지 작성

  • Status line & auto-compact상태줄 · 자동 압축 — branch · directory · model · effort · context usage always shown; long conversations auto-compact, or run /compact manually. 브랜치 · 디렉토리 · 모델 · effort · 컨텍스트 사용량이 항상 표시되고, 길어지면 자동 압축되거나 /compact 로 수동 압축합니다.
  • Drafts, queueing & shortcuts초안·큐잉·단축키 — in-progress messages survive workspace switches; queue follow-ups while a turn runs; ↑/↓ recall messages, ⌘1–9 and ⌘↑ ⌘↓ switch workspaces, ⌘[ goes back. 작성 중 메시지는 전환에도 유지되고, 실행 중 후속 메시지를 큐에 넣습니다. ↑/↓ 로 이전 메시지, ⌘1–9 / ⌘↑ ⌘↓ 로 전환하고, ⌘[ 로 직전 워크스페이스로 돌아갑니다.
Get started시작하기

Install in a couple of minutes몇 분이면 설치 완료

One brew command, then a quick onboarding. brew 명령 한 줄, 그리고 간단한 온보딩이면 됩니다.

1

Install with HomebrewHomebrew 로 설치

Homebrew puts Wooi.app straight into Applications. Homebrew 가 Wooi.app 을 Applications 에 바로 설치합니다.

brew install --cask youngminnnn/tap/wooi

Rather do it by hand? Download the latest .dmg and drag Wooi into Applications. Older builds live on the Releases page. 직접 설치하시겠어요? 최신 .dmg 를 받아 Wooi 를 Applications 로 드래그합니다. 이전 빌드는 Releases 페이지에 있습니다.

2

Onboarding: consent & sign in온보딩: 동의 & 로그인

Consent to the Terms/Privacy, then connect Claude Code or Codex — you only need one. Sign-in finishes in-app; Codex accepts ChatGPT or an OpenAI API key. GitHub is optional at this point: skip it and start working, and Wooi will ask the first time you open a PR, merge, stack a branch or check CI, then resume what you were doing. 약관·개인정보처리방침에 동의한 뒤 Claude Code 또는 Codex를 연결합니다. 둘 중 하나만 있으면 되며, Codex는 ChatGPT 또는 OpenAI API 키로 연결할 수 있습니다. GitHub 은 이 단계에서 건너뛸 수 있습니다 — 바로 작업을 시작하면, PR 생성·병합·스택·Check 를 처음 쓰는 순간 Wooi 가 연결을 요청하고 연결 후 원래 하려던 동작을 이어서 실행합니다.

Requirements요구 사항

macOS req

Apple Silicon.Apple Silicon.

Coding agent req

Claude Code, or Codex CLI v0.128.0+.Claude Code 또는 Codex CLI v0.128.0 이상.

gh CLI opt

Needed for the PR & stacking features. Everything that's pure git works without it.PR·스택 기능에 필요합니다. git 만으로 되는 기능은 없어도 모두 동작합니다.

git req

Standard git install.기본 git 설치.

Prefer to build from source? Requires Node.js 24 on Apple Silicon: 소스로 빌드하시겠어요? Apple Silicon 에 Node.js 24 가 필요합니다:
git clone https://github.com/youngminnnn/wooi.git
cd wooi
nvm use          # optional — Node 24
npm install      # deps + Electron binary
npm run dev      # launch in dev mode
Privacy & Data개인정보 / 데이터

Your code stays yours코드는 당신의 것

🚫

No analytics분석 없음

Wooi has no servers of its own and collects no analytics or telemetry. Wooi 는 자체 서버가 없고 분석·텔레메트리를 수집하지 않습니다.

🔗

Direct to providers공급자로 직접 전송

Prompts & code go to the selected agent's provider — Anthropic for Claude Code or OpenAI for Codex. PR metadata goes to GitHub via the gh CLI. 프롬프트·코드는 선택한 에이전트의 제공자(Claude Code는 Anthropic, Codex는 OpenAI)에게 전송됩니다. PR 메타데이터는 gh CLI로 GitHub에 전송됩니다.

💾

Local only로컬에만 저장

Settings & transcripts are stored locally in ~/Library/Application Support/Wooi/. 설정·대화 기록은 ~/Library/Application Support/Wooi/ 에만 저장됩니다.

Ready to run your agents in parallel?에이전트를 병렬로 돌릴 준비되셨나요?

Free and open source under the Apache License 2.0. Download the latest build and ship from three branches at once. Apache License 2.0 의 무료 오픈소스입니다. 최신 빌드를 받아 세 브랜치에서 동시에 배포해 보세요.