๋ณ๋ ฌ AI ์์ด์ ํธ ์ธ์ ์ ํ ์ฐฝ์์. Parallel AI coding agent sessions in one window โ split panes, isolated git worktrees, native PTY terminals.
AI๋ ๊ฐ๋ ฅํ๊ณ ๋๋ํ์ง๋ง, ๊ฒฐ์ ๊ณผ ์ฑ ์์ ๊ฒฐ๊ตญ ์ฌ๋์ ๋ชซ์ด์ฃ . Acorn์ AI์ ์ฌ๋์ด ์์ฐ์ค๋ฝ๊ฒ ํ์ ํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ๋๊ตฌ์ ๋๋ค.
Acorn์ ์ฌ๋ฌ AI ์ฝ๋ฉ ์์ด์ ํธ(Claude Code / Codex / Antigravity / Grok Build / Ollama / llm ๋ฑ) ์ธ์ ์ ํ ์ฐฝ์์ ๋ณ๋ ฌ๋ก ๋ค๋ฃจ๊ธฐ ์ํ ๋ฐ์คํฌํฑ ์ฑ์ ๋๋ค. ๋ค์ดํฐ๋ธ PTY์ ์ฑํ , ๋ถํ PaneยทKanbanยทCanvas, ์ธ์ ๋ณ ๊ฒฉ๋ฆฌ๋ git worktree, ์์ ์์ฝ๊ณผ ์งํ ์ํ ํ์๋ฅผ ํ๋์ ์ํฌ์คํ์ด์ค์์ ์ ๊ณตํฉ๋๋ค.
๋ฉ์ธ ์ํฌ์คํ์ด์ค โ ์ฌ์ด๋๋ฐ + ๋ถํ Pane + ์ฐ์ธก ํจ๋
Kanban ์ํฌ์คํ์ด์ค โ Idle๋ถํฐ Done๊น์ง ์ธ์ lifecycle ์ถ์
Canvas ์ํฌ์คํ์ด์ค โ ๋ผ์ด๋ธ ํฐ๋ฏธ๋์ ์์ ๋กญ๊ฒ ๋ฐฐ์นํ๊ณ ํ๋์ ํ์
PR ์์ธ ๋ชจ๋ฌ โ ์ฒดํฌ ์ํ + ๋ณ๊ฒฝ ์ฌํญ + ๋จธ์ง ์ต์
Control session โ `acorn-ipc`๋ก ๋ค๋ฅธ ์ธ์ ์กฐ์
- ๊ฐ๋ก/์ธ๋ก ๋ถํ + ์์ ๋ก์ด ํฌ๊ธฐ ์กฐ์
- Pane ๊ฐ ์ธ์ ๋๋๊ทธ-๋๋กญ, ํญ ์ด๋ยท๋ณต์ ยท์ฌ๋ฐฐ์น
- ๋น Pane ๋๋ธ ํด๋ฆญ์ผ๋ก ์ ์ธ์ ์์ฑ
- ๋ณด์ด๋ ์ธ์ ์ ๊ฐ์ ์ ๋ ฅ์ ๋์์ ๋ณด๋ด๋ multi-input ๋ชจ๋
- Pane๊ณผ Kanban ๋ณด๊ธฐ๋ฅผ ํ๋ก์ ํธ๋ณ๋ก ์ ํยท๊ธฐ์ตํ๊ณ ์ ํ๋ก์ ํธ์ ๊ธฐ๋ณธ ๋ณด๊ธฐ ์ค์
- ์ธ์ ์ํ์ ์์ ํธ๋ฆฌ diff, PR ์ํ๋ฅผ ์กฐํฉํด Idle / Working / Waiting / Review / Done์ผ๋ก ์๋ ๋ถ๋ฅ
- ์ธ์ ๊ฒ์ยท์ ๋ ฌ, ๋จ๊ณ๋ณ ์ฒด๋ฅ ์๊ฐ๊ณผ stall ํ์, ์๋ ์๋ฃ ์ฒ๋ฆฌ, ์ด ๋๋น ์กฐ์
- ์นด๋์์ ํฐ๋ฏธ๋ยท์ฑํ ํ์ค๋ฒ ์ด๊ธฐ, ์ธ์ ์ด๋ฆ ๋ณ๊ฒฝ, PR ์์ธ ํ์ธ, ์ ์ผ๋ฐยทworktreeยทchatยทcontrol ์ธ์ ์์ฑ
- ๋ผ์ด๋ธ ํฐ๋ฏธ๋ยท์ฑํ ์ธ์ ์ ์์ ๋กญ๊ฒ ๋ฐฐ์นํ๊ณ ๋๋๊ทธยทํฌ๊ธฐ ์กฐ์
- ํ๋ยท์ถ์, ์บ๋ฒ์ค ์ด๋, ์ ์ฒด ๋ง์ถค, ๋ ์ด์์ ์ด๊ธฐํยท์คํ ์ทจ์
- ๋ฏธ๋๋งต์ผ๋ก ๋ฉ๋ฆฌ ๋จ์ด์ง ์ธ์ ์ ํ์ํ๊ณ ํฐ๋ฏธ๋์ ํ์ค๋ฒ๋ Pane์ผ๋ก ์ ํ
- ์ฑ ์์์ ์ git ํ๋ก์ ํธ ์์ฑ ๋๋ ๊ธฐ์กด ํ๋ก์ ํธ ์ถ๊ฐ
- ํ๋ก์ ํธ ์์ ์ด๋ฆ ์๋ ์ํฌ์คํ์ด์ค๋ฅผ ๋ง๋ค๊ณ ์ฌ์ด๋๋ฐ ๊ทธ๋ฃนํยท๋๋๊ทธ ์ฌ์ ๋ ฌ
- ์ธ์ ๋ง๋ค ๋ณ๋ worktree๋ก ๋์ผ ์ ์ฅ์ ์์ ๋์ ์์
- ๊ธฐ์กด linked worktree๋ฅผ ์ํฌ์คํ์ด์ค๋ก ๊ฐ์ ธ์ค๊ฑฐ๋ ํ๋ก์ ํธ ์ค์ ์์ ํ์ธยท์ญ์
- ์ข ๋ฃ ์ worktree ์ ๋ฆฌ ์ต์ + ์ง์ฐ ์ญ์ ์คํ ์ทจ์ (ํญ์ ์ญ์ ๋ชจ๋ ํฌํจ)
- ๋ค์ดํฐ๋ธ PTY ์ ธ ์ธ์ , ์ฌ์คํ ์ ์คํฌ๋กค๋ฐฑ ์๋ ๋ณต์
- ํฐ๋ฏธ๋ ์์ ํ์ผ ๊ฒฝ๋ก ํด๋ฆญ โ ์ฝ๋ ๋ทฐ์ด๋ก ์ด๊ธฐ
- URL ํด๋ฆญ, ์ค ๋์ด, ๋ง์ง๋ง ์ฌ์ฉ์ ํ๋กฌํํธ ๊ณ ์ ๋ฑ ๋์ ์ต์
- ์ธ์
์ ํญ์
$SHELL๋ก ์์ โ ๊ทธ ์์์ ์ํ๋ AI CLI(claude/codex/agy/grok/ollama/llm๋ฑ) ์ง์ ์คํ - Claude / Codex / Antigravity / Grok ์ธ์ ์ ํ์ฌ Pane์ด๋ ์ worktree๋ก fork
- ์์ด์ ํธ ํญ ์ ๋ชฉ ์๋ ์์ฑ โ ๋ํ ๋ด์ฉ์ ๋ง์ถฐ ํญ ์ ๋ชฉ ๊ฐฑ์
- ์ฌ์ด๋๋ฐ ๋ผ์ด๋ธ ์ํ โ ์ ํด / ์ ๋ ฅ ๋๊ธฐ / ์์ ์ค (provider transcript ๊ธฐ๋ฐ, ์ง์๋๋ CLI๋ hook ๋ณํ)
- ์ฐ์ธก ํจ๋ todo ๋ฆฌ์คํธ๋ Claude Code ์ ์ฉ โ transcript์
TodoWrite์ด๋ฒคํธ ํ์ฑ
- ํฐ๋ฏธ๋ ๋ช ๋ น ์์ด Claude / Codex / Antigravity / Grok๊ณผ ๋ํํ๋ chat ์ธ์
- ์๋ต ์คํธ๋ฆฌ๋ฐยท์ค์ง, provider ์ ํ, ํ์ผ ์ฒจ๋ถ, ๋ฉ์์ง ๋ณต์ฌ
- ์ฌ์ฉ์ ๋ฉ์์ง ์์ , ์๋ต ์ฌ์์ฑ, ์ดํ ๋ํ ๊ฐ์ง ์ญ์
- ์ํ๋ ๋ฉ์์ง ์์ ์์ ๊ฐ์ worktree ๋๋ ์ ๊ฒฉ๋ฆฌ worktree๋ก ๋ํ fork
claude/codex/agy/grok๋ํ UUID๋ฅผ ์ธ์ ๋ณ๋ก ์ถ์ ํด ํฌ์ปค์ค ์ ์ด์ ๋ํ resume ์ ์- ์ฐ์ธก ํจ๋ History ํญ์์ ํ๋ก์ ํธ๋ณ transcript ํ์คํ ๋ฆฌ ํ์ธ, ๋๋ธ ํด๋ฆญ์ผ๋ก ์ ํฐ๋ฏธ๋์์ resume
- ์ฑ์ ์ข ๋ฃยท์ฌ์์ํด๋ PTY ์ธ์ ๊ทธ๋๋ก ์ ์ง โ ๋ค์ ์ด๋ฉด ํ๋ฉด ๋ณต์
- ๊ธฐ๋ณธ ON. Settings โ Services ์์ ์ํ ํ์ธ + Kill / Restore / Forget ์ ์ด
- ์ํ ํ์์ค ์์ด์ฝ ๋๋กญ๋ค์ด์ผ๋ก ํ๋์ ํ์ธ
- ํ ์ธ์ ์์ AI๊ฐ ๊ฐ์ ํ๋ก์ ํธ์ ๋ค๋ฅธ ์ธ์ ์ ์ง์ ์กฐ์ (์ ๋ ฅ ์ ์ก, ํ๋ฉด ์ฝ๊ธฐ, ์ ์ธ์ ์์ฑ, ์ ํ, ์ข ๋ฃ)
- ์์:
โโฅโงT๋๋ ์ปค๋งจ๋ ํ๋ ํธ โ New control session - ์์ธํ ์ฌ์ฉ๋ฒ + ๋ณด์ ๋ชจ๋ธ:
docs/CONTROL_SESSIONS.md - ํ๋ซํผ: macOS / Linux (Windows ๋ฏธ์ง์)
์ธ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ธ ํญ:
- Code โ Files / Staged / Commits. ํ์ผ ํธ๋ฆฌยท๊ฒ์ยทGit ์ํ, ์คํ ์ด์ง ๋ณ๊ฒฝ, ์ปค๋ฐ + Diff ๋ชจ๋ฌ
- GitHub โ PRs / Issues / Actions. PR ๋ฆฌ์คํธ(๋ผ๋ฒจ/์ฒดํฌ/CI ์๊ฐ), Issues ๋ชฉ๋ก/๊ฒ์/์์ธ ๋ชจ๋ฌ, PR ์์ธ ๋ชจ๋ฌ(ConversationยทCommitsยทChecksยทFiles), ์ด์ยทPR ๋๊ธ ์์ฑ/์์ /์ญ์ , ๋ณธ๋ฌธ task ํ ๊ธ, ๋จธ์ง ๋ฉ์์ง AI ์๋ ์์ฑ. GitHub Actions ์คํ + workflow ํํฐ
- Agents โ Activity / History / Todos. ์ธ์
๋ณ ์๋ฆผ, transcript ํ์คํ ๋ฆฌ, Claude Code todo (
TodoWrite์ด๋ฒคํธ)
- ํ์ผ๋ช ยท๋ด์ฉ ๊ฒ์ (์ ๊ท์, ๋์๋ฌธ์, include/exclude) + dotfileยทgitignored ํ์ผ ํ์ ์ ํ
- ํ์ผยทํด๋ ์ด๋ฆ ๋ณ๊ฒฝ, ํด์งํต ์ด๋, ์๋ยท์ ๋ ๊ฒฝ๋ก ๋ณต์ฌ, Finder/๊ธฐ๋ณธ ํ๋ก๊ทธ๋จ/์ธ๋ถ ์๋ํฐ๋ก ์ด๊ธฐ
- ํ์ผ์ Claude / Codex / Antigravity / Grok ๋ํ์ ์ฒจ๋ถํ๊ณ ํญ ์์ญ์ผ๋ก ๋๋๊ทธํด ์ด๊ธฐ
- ํ์ผ ํ์๊ธฐ ๋๋ ํฐ๋ฏธ๋์ ํ์ผ ์ฐธ์กฐ ํด๋ฆญ์ผ๋ก ์ฝ๋ ๋ทฐ์ด ์ง์
- ์ ํ์ค ํ์ด๋ผ์ดํ , in-file ๊ฒ์, markdown source/preview ์ ํ
- Diff ํตํฉ / ๋ถํ ๋ชจ๋, ์ธ๋ถ ์๋ํฐ๋ก ์ด๊ธฐ
- ์ด๋ฏธ์ง ํ๋ยท์ถ์์ PDF ์ธ์ฑ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
- ์ธ์ ๋ฉ๋ด์์ ํ์ฌ worktree์ ๋ณ๊ฒฝ ํ์ผยท๋ผ์ธ ์ฆ๊ฐยท์ํ ๋ถํฌ๋ฅผ ํ ํญ์ ์ง๊ณ
- ๋ณ๊ฒฝ ํ์ผ์ ์์ฝ์์ ๋ฐ๋ก ์ด๊ณ ์ธ์ ยท๋ธ๋์นยทtranscript metadata ํ์ธ
- ๋ค์ดํฐ๋ธ ์ฑํ ์ ๋ฉ์์งยทํด ํํฉ๊ณผ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ ๋ ฅยท์ถ๋ ฅยท์บ์ยท์ถ๋ก ํ ํฐ ์ฌ์ฉ๋ ํ์
- ์ธ์ ๋ณ ์๋ฆผ(์ ๋ ฅ ๋๊ธฐ / ์๋ฃ / ์คํจ)์ ์ฐ์ธก ํจ๋ Activity ํญ๊ณผ ์ํ ํ์์ค์์ ๋ชจ์ ๋ณด๊ธฐ
- ๋ค์ดํฐ๋ธ ์๋ฆผ ์ด๋ฒคํธ๋ณ ํ ๊ธ, ํ์คํ ๋ฆฌ ๋ณด๊ด ๊ธฐ๊ฐ ์ค์
| Action | Shortcut |
|---|---|
| ์ปค๋งจ๋ ํ๋ ํธ | โP |
| ์ ์ธ์ / isolated / control | โT / โโฅT / โโฅโงT |
| ์ ํ๋ก์ ํธ | โโงN |
| Pane ๋ถํ (์ธ๋ก/๊ฐ๋ก) | โD / โโงD |
| Pane ํฌ๊ธฐ ๊ท ๋ฑํ | โโฅE |
| ํญ ๋ซ๊ธฐ | โW |
| ์ฌ์ด๋๋ฐ / ๋ฉ์ธ / ์ฐ์ธก ํจ๋ ํฌ์ปค์ค | โ1 / โ2 / โ3 |
| ์ฌ์ด๋๋ฐ / ์ฐ์ธก ํจ๋ ํ ๊ธ | โB / โJ |
| multi-input ํ ๊ธ | โโฅI |
| ๋ค์/์ด์ ์ธ์ | Ctrl+Tab / Ctrl+โง+Tab |
| ์ต๊ทผ ์ ๋ ฅ ๋๊ธฐ ์ธ์ ์ผ๋ก ์ด๋ | Ctrl+โฅ] |
| ํฐ๋ฏธ๋ ํด๋ฆฌ์ด | โK |
| ์ค์ | โ, |
์ ์ฒด ๋ชฉ๋ก์ Settings โ Shortcuts ํญ์์ ํ์ธํ๊ณ ์ํ๋ ์กฐํฉ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
- ์ธ์ด / UI ๋ฐฐ์จ / theme / ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง / ๊ธฐ๋ณธ PaneยทKanban ๋ณด๊ธฐ
- ํฐ๋ฏธ๋ ํฐํธ fallbackยทํ๋ฆฌ์ , ํฌ๊ธฐยท๊ตต๊ธฐยท์๊ฐยท์ค ๋์ดยท์ํฐ์จ๋ฆฌ์ด์ฑ, ์์ฃผ ํฐ๋ฏธ๋ ์
- ๋จ์ถํค ์ง์ ๋ นํยท์ถฉ๋ ๊ฐ์งยท๊ฐ๋ณ/์ ์ฒด ์ด๊ธฐํ
- AI ๊ณต๊ธ์ ์ ํ (
claude/codex/antigravity/grok/ollama/llm/ ์ปค์คํ ), ์ธ๋ถ ์๋ํฐ ๋ช ๋ น - Background sessions ์ ์ด, ์์ ์ค ์ ์ ๋ฐฉ์ง, ์ข ๋ฃ ๊ฒฝ๊ณ , orphan worktreeยท์บ์ ์ ๋ฆฌ
- macOS ๋ณดํธ ํด๋ ๊ถํ ์ ๊ฒยท์ฌ์ค์
- ํ๋ก์ ํธ๋ณ PR ์์ฑ ์ค์ (์ฌ์ด๋๋ฐ ํ๋ก์ ํธ โ Settings)
- ๋ฉ๋ชจ๋ฆฌ + ํ๋ก์ธ์ค๋ณ Breakdown, ํ์ฌ worktree ๋ธ๋์น, GitHub ๊ณ์ ๋ฐฐ์ง
- ํ์ฑ Claude / Codex ์ธ์ ์ ํ ํฐ ์ฌ์ฉ๋, Background sessions / multi-input ์ํ ํ์
- macOS ์๋ ์ ๋ฐ์ดํธ โ ์ ๋ฒ์ ๊ฐ์ง ์ ๋ฐฐ๋, ์ ์ฉ ์์ ์ ์ฌ์ฉ์๊ฐ ์ ํ
- About ํญ์์ ํ์ฌ ๋ฒ์ ์ GitHub ๋ฆด๋ฆฌ์ค ๋ ธํธ ํ์ธ
curl -fsSL https://raw.githubusercontent.com/im-ian/acorn/main/scripts/install-macos.sh | bash์ต์ ๋ฆด๋ฆฌ์ค DMG๋ฅผ ๋ด๋ ค๋ฐ์ /Applications/Acorn.app์ ๋ณต์ฌํ๊ณ quarantine ์์ฑ์ ์ ๊ฑฐํฉ๋๋ค. ์์น๋ฅผ ๋ฐ๊พธ๋ ค๋ฉด ACORN_INSTALL_DIR๋ฅผ ์ง์ :
curl -fsSL https://raw.githubusercontent.com/im-ian/acorn/main/scripts/install-macos.sh \
| ACORN_INSTALL_DIR="$HOME/Applications" bashReleases์์ Acorn_*_aarch64.dmg(Apple Silicon) ๋๋ Acorn_*_x64.dmg(Intel)๋ฅผ ๋ฐ์ Applications๋ก ๋ณต์ฌํ ๋ค quarantine ์์ฑ ์ ๊ฑฐ:
xattr -dr com.apple.quarantine /Applications/Acorn.appAcorn์ Apple Developer ID๋ก ์๋ช ยท๊ณต์ฆ๋์ง ์์ ad-hoc ๋น๋์ ๋๋ค. ์ ๋ช ๋ น์ Gatekeeper์ quarantine ํ๋๊ทธ๋ง ๋ผ๋ ๋จ๊ณ๋ก ์ฑ ๋ฌด๊ฒฐ์ฑ์๋ ์ํฅ์ด ์์ต๋๋ค.
์๊ตฌ์ฌํญ: pnpm 9.x, Rust stable, Xcode CLT (macOS) ๋๋ OS ๋ณ Tauri ์ฌ์ ์๊ตฌ์ฌํญ.
pnpm install
pnpm run build:sidecar # acorn-ipc + acornd ์ฌ์ด๋์นด ๋น๋ (์ต์ด 1ํ + IPC/daemon ๋ณ๊ฒฝ ์)
pnpm run tauri dev # ๊ฐ๋ฐ ๋ชจ๋
pnpm run tauri build # ํ๋ก๋์
๋น๋โน๏ธ
pnpm run tauri dev/tauri build๋src-tauri/binaries/acorn-ipc-<target-triple>,acornd-<target-triple>ํ์ผ์ด ์กด์ฌํด์ผ ์์ํฉ๋๋ค. ์ด ๊ฒฝ๋ก๋.gitignore์ ํฌํจ๋ผ ์์ด fresh checkout(ํนํgit worktree add๋ก ๋ง๋ worktree)์์๋ ๋น์ด ์๊ณ , ๋ฏธ๋ฆฌ ๋น๋ํ์ง ์์ผ๋ฉดresource path 'binaries/...' doesn't exist์๋ฌ๋ก ๋น๋๊ฐ ์คํจํฉ๋๋ค.pnpm run build:sidecar๊ฐ ํธ์คํธ ํ๊น์ ๋ง๋ ๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋น๋ํ๊ณ ์ฌ๋ฐ๋ฅธ ์์น์ stageํฉ๋๋ค.
๊ฐ๋ฐ ๋ชจ๋์ ๋ฐํ์ ๋ฐ์ดํฐ๋ ์ค์น๋ ์ฑ๊ณผ ๋ถ๋ฆฌ๋์ด ~/Library/Application Support/io.im-ian.acorn/profiles/dev/์ ์ ์ฅ๋ฉ๋๋ค. ํ๋ก๋์
๋น๋๋ profiles/prod/. ์์ ๊ฒฉ๋ฆฌ๊ฐ ํ์ํ๋ฉด ACORN_PROFILE=<name> ๋๋ ACORN_DATA_DIR=/tmp/acorn-test๋ก ์ฑยทIPC CLIยทdaemon์ด ๋ณผ ๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ฐ๊ฟ ์ ์์ต๋๋ค.
pnpm run test # Vitest
pnpm run test:e2e # Playwright๊ธฐ์ฌ ๊ฐ์ด๋๋ CLAUDE.md ์ฐธ๊ณ .
๐ฟ๏ธ by @im-ian โ issues / PRs welcome.