Skip to content

Worktreee 🌳 (μ—…λ¬΄λ‚˜λ¬΄μš°) - Claude Codeλ₯Ό νƒœμŠ€ν¬λ³„ μ „λ‹΄ 개발자둜 λ§Œλ“œλŠ” μ›Œν¬νŠΈλ¦¬ 기반 ν”„λ‘œμ νŠΈ 관리 μ—μ΄μ „νŠΈ

Notifications You must be signed in to change notification settings

letsur-dev/worktreee

Repository files navigation

Worktreee 🌳 (μ—…λ¬΄λ‚˜λ¬΄μš°)

Claude Codeλ₯Ό νƒœμŠ€ν¬λ³„ μ „λ‹΄ 개발자둜 λ§Œλ“œλŠ” μ›Œν¬νŠΈλ¦¬ 기반 ν”„λ‘œμ νŠΈ 관리 μ—μ΄μ „νŠΈ.

Why

μ—¬λŸ¬ 레포λ₯Ό μ˜€κ°€λ©° Claude Code둜 μž‘μ—…ν•˜λ©΄, νƒœμŠ€ν¬λ§ˆλ‹€ 같은 셋업을 λ°˜λ³΅ν•˜κ²Œ λ©λ‹ˆλ‹€:

Jira ν‹°μΌ“ 확인 β†’ 브랜치 생성 β†’ μ›Œν¬νŠΈλ¦¬ λ§Œλ“€κΈ° β†’ fetch β†’
Claude μ—΄κΈ° β†’ "이 λ ˆν¬λŠ”..." μ„€λͺ… β†’ "Jira λ‚΄μš©μ€..." λΆ™μ—¬λ„£κΈ° β†’ μž‘μ—… μ‹œμž‘

5λΆ„μ§œλ¦¬ μ…‹μ—… x ν•˜λ£¨ 10번 = 50λΆ„. PR 리뷰가 였면 또 κ·Έ ν™˜κ²½μœΌλ‘œ λŒμ•„κ°€μ•Ό ν•©λ‹ˆλ‹€.

WorktreeeλŠ” 이 전체λ₯Ό ν•œ λ§ˆλ””λ‘œ μ€„μž…λ‹ˆλ‹€:

"PROJ-107 μ΄ˆλŒ€ κΈ°λŠ₯ νƒœμŠ€ν¬ λ§Œλ“€μ–΄μ€˜"
  β†’ Git worktree μžλ™ 생성
  β†’ Jira ν‹°μΌ“ + Notion λ¬Έμ„œ μžλ™ 쑰회
  β†’ Claude μ„Έμ…˜ μ‹œμž‘ (μ»¨ν…μŠ€νŠΈ μ£Όμž… μ™„λ£Œ)
  β†’ `claude --continue`둜 λ°”λ‘œ μž‘μ—… μ‹œμž‘

Key Idea: μ»¨ν…μŠ€νŠΈ μŠ€μœ„μΉ­ λΉ„μš© β†’ 0

Worktreee의 핡심은 "λŒμ•„μ˜€κΈ°"κ°€ κ³΅μ§œλΌλŠ” μ μž…λ‹ˆλ‹€.

일반적인 방식 Worktreee
νƒœμŠ€ν¬ μ‹œμž‘ μˆ˜λ™ μ…‹μ—… 5λΆ„ ν•œ λ§ˆλ”” β†’ μ¦‰μ‹œ
νƒœμŠ€ν¬ μ „ν™˜ stash β†’ checkout β†’ μ»¨ν…μŠ€νŠΈ μž¬μ£Όμž… cd β†’ claude --continue
PR 리뷰 λŒ€μ‘ ν™˜κ²½ 볡원 β†’ Claude에 λ‹€μ‹œ μ„€λͺ… cd worktree/ && claude --continue
Claude ν™œμš© 맀번 μ²˜μŒλΆ€ν„° 레포 μ„€λͺ… Jira+Notion μžλ™ μ£Όμž…, μ„Έμ…˜ μœ μ§€
λ™μ‹œ μž‘μ—… 브랜치 좩돌, stash μ§€μ˜₯ μ›Œν¬νŠΈλ¦¬λ³„ μ™„μ „ 격리

Git worktree둜 각 νƒœμŠ€ν¬κ°€ λ…λ¦½λœ 디렉토리이기 λ•Œλ¬Έμ—, 브랜치 μ „ν™˜λ„, stash도, μ»¨ν…μŠ€νŠΈ μž¬μ£Όμž…λ„ ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. κ·Έλƒ₯ cdν•˜κ³  claude --continue.

Workflow

1. Worktreeeμ—κ²Œ: "PROJ-107 μ΄ˆλŒ€ κΈ°λŠ₯ νƒœμŠ€ν¬ λ§Œλ“€μ–΄μ€˜"
   β†’ μ›Œν¬νŠΈλ¦¬ 생성, Claude μ„Έμ…˜ μ‹œμž‘ (Jira/Notion μ»¨ν…μŠ€νŠΈ μ£Όμž…)

2. 터미널: claude --continue
   β†’ λ°”λ‘œ μž‘μ—… μ‹œμž‘ β€” Claudeκ°€ 이미 ν‹°μΌ“ λ‚΄μš©μ„ μ•Œκ³  있음

3. PR 제좜 β†’ λ‹€λ₯Έ νƒœμŠ€ν¬ μž‘μ—… 쀑 β†’ 리뷰 도착

4. 터미널: cd my-project-worktrees/PROJ-107-xxx && claude --continue
   β†’ Claudeκ°€ 이전 μž‘μ—… λ§₯락을 κΈ°μ–΅ν•œ μƒνƒœλ‘œ 리뷰 λŒ€μ‘
   β†’ stash μ—†μŒ, 브랜치 μ „ν™˜ μ—†μŒ, μž¬μ„€λͺ… μ—†μŒ

Features

Git Worktree Automation

νƒœμŠ€ν¬λ§ˆλ‹€ λ…λ¦½λœ μ›Œν¬νŠΈλ¦¬λ₯Ό μžλ™ μƒμ„±ν•©λ‹ˆλ‹€. git fetch β†’ 브랜치 생성 β†’ μ›Œν¬νŠΈλ¦¬ 섀정을 ν•œ λ²ˆμ— μ²˜λ¦¬ν•˜κ³ , νƒœμŠ€ν¬ μ‚­μ œ μ‹œ μ›Œν¬νŠΈλ¦¬λ„ ν•¨κ»˜ μ •λ¦¬λ©λ‹ˆλ‹€.

Claude Code Session Management

μ›Œν¬νŠΈλ¦¬ 생성 ν›„ Claude CLI μ„Έμ…˜μ„ μžλ™ μ‹œμž‘ν•©λ‹ˆλ‹€. Jira ν‹°μΌ“ λ‚΄μš©κ³Ό Notion λ¬Έμ„œλ₯Ό μ»¨ν…μŠ€νŠΈλ‘œ μ£Όμž…ν•˜λ―€λ‘œ, Claudeκ°€ μ²˜μŒλΆ€ν„° "무엇을 ν•΄μ•Ό ν•˜λŠ”μ§€" μ•Œκ³  μžˆλŠ” μƒνƒœλ‘œ μ‹œμž‘ν•©λ‹ˆλ‹€. ~/.claude 마운트둜 ν˜ΈμŠ€νŠΈμ™€ μ„Έμ…˜μ„ κ³΅μœ ν•˜μ—¬ claude --continue둜 μ΄μ–΄μ„œ μž‘μ—…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Web Dashboard

ν”„λ‘œμ νŠΈ/νƒœμŠ€ν¬ λͺ©λ‘, GitHub PR μƒνƒœ λ°°μ§€, νƒœμŠ€ν¬ 생성 λͺ¨λ‹¬ (AI 브랜치 이름 μΆ”μ²œ), λ“œλž˜κ·Έ μ•€ λ“œλ‘­ μˆœμ„œ λ³€κ²½, Jira 이슈 κ·Έλž˜ν”„ μ‹œκ°ν™” (D3.js) 등을 μ œκ³΅ν•©λ‹ˆλ‹€.

Jira & Notion Integration

νƒœμŠ€ν¬ 생성 μ‹œ Jira ν‚€λ₯Ό μžλ™ κ°μ§€ν•˜μ—¬ ν‹°μΌ“ λ‚΄μš©μ„ Claude μ„Έμ…˜μ— μ£Όμž…ν•©λ‹ˆλ‹€. Notion 링크도 μžλ™ 쑰회. 이슈 트리λ₯Ό μΈν„°λž™ν‹°λΈŒ κ·Έλž˜ν”„λ‘œ μ‹œκ°ν™”ν•˜κ³ , 첨뢀 이미지λ₯Ό Vision API둜 뢄석할 수 μžˆμŠ΅λ‹ˆλ‹€.

Multi-machine Support

SSHλ₯Ό 톡해 μ—¬λŸ¬ λ¨Έμ‹ μ˜ ν”„λ‘œμ νŠΈλ₯Ό 톡합 κ΄€λ¦¬ν•©λ‹ˆλ‹€. μ„œλ²„μ—μ„œ Docker둜 μ‹€ν–‰ν•˜λ©΄μ„œ, 원격 λ¨Έμ‹ μ˜ ν”„λ‘œμ νŠΈλ„ μ›Œν¬νŠΈλ¦¬ 생성과 git 동기화가 κ°€λŠ₯ν•©λ‹ˆλ‹€.

OpenAI-compatible API (OpenWebUI 연동)

/v1/chat/completions μ—”λ“œν¬μΈνŠΈλ₯Ό μ œκ³΅ν•˜μ—¬ OpenWebUI λ“±μ—μ„œ λͺ¨λΈμ²˜λŸΌ μ—°κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μžμ—°μ–΄λ‘œ λŒ€ν™”ν•˜λ©΄ Agentκ°€ 20+ tool calling으둜 ν”„λ‘œμ νŠΈ/νƒœμŠ€ν¬λ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€.

OpenWebUI μ—°κ²° 방법:

  1. OpenWebUI κ΄€λ¦¬μž β†’ Connections β†’ OpenAI API μΆ”κ°€
  2. URL: http://<worktreee-host>:4000/v1
  3. λͺ¨λΈ λͺ©λ‘μ—μ„œ worktreee 선택 ν›„ λŒ€ν™” μ‹œμž‘

Prerequisites

WorktreeeλŠ” Docker μ»¨ν…Œμ΄λ„ˆ μ•ˆμ—μ„œ 호슀트의 Git, SSH, Claude CLIλ₯Ό ν™œμš©ν•˜λŠ” κ΅¬μ‘°μž…λ‹ˆλ‹€. λ”°λΌμ„œ ν˜ΈμŠ€νŠΈμ— λ‹€μŒμ΄ ν•„μš”ν•©λ‹ˆλ‹€:

μš”κ΅¬μ‚¬ν•­ μ„€λͺ… 확인 방법
Docker & Docker Compose μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ docker compose version
Git μ›Œν¬νŠΈλ¦¬ 생성 git --version
GitHub CLI (gh) PR 쑰회, repo 인증 gh auth status
Claude Code CLI Claude μ„Έμ…˜ μ‹œμž‘ claude --version
SSH ν‚€ (선택) 원격 λ¨Έμ‹  μ ‘κ·Ό ssh -T your-remote
Jira API 토큰 (선택) Jira 연동 Atlassian μ„€μ •μ—μ„œ λ°œκΈ‰

Docker μ»¨ν…Œμ΄λ„ˆκ°€ ~/.claude, ~/.config/gh, ~/.ssh 등을 λ§ˆμš΄νŠΈν•˜μ—¬ 호슀트의 인증 정보λ₯Ό κ³΅μœ ν•©λ‹ˆλ‹€.

Quick Start

# Clone
git clone https://github.com/your-org/worktreee.git
cd worktreee

# Configure
cp .env.example .env
# Edit .env β€” OPENAI_API_KEYλŠ” ν•„μˆ˜, λ‚˜λ¨Έμ§€λŠ” 선택

# Run
docker compose up -d

Open http://localhost:4000

Environment Variables

Variable Description Default
OPENAI_BASE_URL LLM API endpoint (OpenAI-compatible) https://gateway.letsur.ai/v1
OPENAI_API_KEY API key (required)
OPENAI_MODEL Model to use claude-sonnet-4-20250514
LOCAL_MACHINE Alias for the machine running the server local
REMOTE_HOSTS Remote SSH hosts (alias:user@host, comma-separated) (optional)
JIRA_URL Jira instance URL (optional)
JIRA_EMAIL Jira account email (optional)
JIRA_API_TOKEN Jira API token (optional)

Architecture

Browser / OpenWebUI
       β”‚
       β–Ό http://localhost:4000
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚            Docker Compose                β”‚
β”‚                                          β”‚
β”‚  web (Next.js)  ──►  api (FastAPI)        β”‚
β”‚    :4000                :8000            β”‚
β”‚                                          β”‚
β”‚  api μ£Όμš” κΈ°λŠ₯:                           β”‚
β”‚    - /v1/chat/completions (Agent API)    β”‚
β”‚    - Tool Calling (20+ PM tools)         β”‚
β”‚    - Git worktree 생성/μ‚­μ œ              β”‚
β”‚    - Claude CLI μ„Έμ…˜ 관리                β”‚
β”‚    - Jira/Notion API 연동               β”‚
β”‚    - State μ €μž₯ (YAML)                   β”‚
β”‚                                          β”‚
β”‚  Volume Mounts:                          β”‚
β”‚    ~/Documents  ← ν”„λ‘œμ νŠΈ 파일 μ ‘κ·Ό      β”‚
β”‚    ~/.ssh       ← SSH ν‚€ (원격 λ¨Έμ‹ )     β”‚
β”‚    ~/.claude    ← Claude μ„Έμ…˜ 곡유       β”‚
β”‚    ~/.config/gh ← GitHub CLI 인증        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Multi-machine Setup

WorktreeeλŠ” SSH둜 원격 λ¨Έμ‹ μ˜ ν”„λ‘œμ νŠΈλ„ 관리할 수 μžˆμŠ΅λ‹ˆλ‹€:

# .env
REMOTE_HOSTS=mac:user@192.168.1.10,server2:user@192.168.1.50

ν”„λ‘œμ νŠΈ μΆ”κ°€ μ‹œ λ¨Έμ‹  별칭을 μ§€μ •ν•˜λ©΄, ν•΄λ‹Ή λ¨Έμ‹ μ—μ„œ μ›Œν¬νŠΈλ¦¬ 생성/git 동기화가 μ‹€ν–‰λ©λ‹ˆλ‹€.

Tech Stack

Component Technology
Monorepo Turborepo + pnpm
Backend Python 3.11+, FastAPI, uv
Frontend Next.js 15, React 19, Tailwind CSS 4
LLM OpenAI-compatible API
State YAML file
Container Docker
GitHub GitHub CLI (gh)

Development

# Install dependencies
pnpm install

# Run all (Turborepo)
pnpm dev

# Web only
pnpm dev:web

# API only
cd apps/api && uv run uvicorn main:app --reload --port 8000

License

MIT

About

Worktreee 🌳 (μ—…λ¬΄λ‚˜λ¬΄μš°) - Claude Codeλ₯Ό νƒœμŠ€ν¬λ³„ μ „λ‹΄ 개발자둜 λ§Œλ“œλŠ” μ›Œν¬νŠΈλ¦¬ 기반 ν”„λ‘œμ νŠΈ 관리 μ—μ΄μ „νŠΈ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •