Claude Code·Codex·Gemini(agy)·Cursor·OpenCode를 워크트리마다 나란히 돌립니다. 앱을 kill -9 해도, 업데이트해도, 데몬이 재시작돼도 에이전트는 계속 일하고, 다시 열면 놓친 출력이 바이트 단위로 이어집니다.
Claude Code, Codex, Gemini (agy), Cursor and OpenCode side by side, one worktree each. kill -9 the app, update it, restart the daemon — agents keep working, and every byte you missed replays when you come back.
인터랙티브 미리보기 — 워크트리·파일을 눌러 보고 ⌘K로 Jump 팔레트를 여세요.Interactive preview — click worktrees and files, press ⌘K for the Jump Palette.
앱 메모리 예산 (터미널 10개, phys_footprint)
App memory budget (10 terminals, phys_footprint)
세션 데몬 예산 (터미널 10개)
Session daemon budget (10 terminals)
핫 그리드, 그 이상은 zstd 콜드 스크롤백
Hot grid; everything older is zstd cold scrollback
데몬 세대는 항상 하나 — 업그레이드 후 고아 데몬 없음
One daemon generation — no orphan daemons after upgrades
수치는 출시 차단 기준인 설계 목표입니다(앱+데몬 180MB 목표, 차단선 200MB).Figures are release-gating design budgets (180 MB app+daemon target, 200 MB hard gate).
에이전트 종류와 무관한 PTY 수준 지속. 셸·dev 서버·어떤 TUI든 같은 보장을 받습니다.
PTY-level persistence that is agent-agnostic. Shells, dev servers and any TUI get the same guarantee.
PTY는 krill-holder만 소유합니다. 앱·데몬·CLI의 어떤 실패도 PTY를 닫지 않습니다.
Only krill-holder owns PTYs. No app, daemon or CLI failure is allowed to close one.
앱이 꺼져 있던 동안의 출력을 키프레임 + 원본 바이트로 생략 없이 이어 붙입니다. 넘치면 “N바이트 생략”을 정직하게 표시합니다.
Output produced while the app was closed replays from keyframes + raw bytes. Overflow is shown honestly as an “N bytes skipped” gap.
사이드바에서 워크트리를 만들고 각자 에이전트를 붙입니다. 입력이 필요한 세션은 “Needs You” 맨 위로 올라옵니다.
Spin up git worktrees from the sidebar, one agent each. Sessions waiting on you float to the top of “Needs You”.
작업 중·질문 대기·차단·완료·종료·알 수 없음. krill hook이 에이전트 이벤트를 받아 알림·Dock 배지로 바꿉니다.
Working, waiting, blocked, done, exited, unknown. krill hook turns agent events into notifications and Dock badges.
에이전트 결과를 변경 파일 목록과 읽기 전용 diff로 바로 확인합니다.
Review agent output through a changed-files list and read-only diffs.
Claude Code 입력창에서 “안녕하세요⏎”가 유실·중복·재정렬 없이 들어갑니다.
Hangul composition into agent prompts without drops, duplicates or reordering.
화면을 그리는 앱, 터미널 상태를 해석하는 데몬, PTY를 쥐고 있는 부모 프로세스를 분리했습니다. 위에서부터 죽어도 아래는 버팁니다.
The app that draws, the daemon that interprets terminal state, and the parent that holds the PTYs are separate processes. Anything above can die; what's below holds.
| 장애Failure | 에이전트 프로세스Agent processes | 화면·출력Screen & output |
|---|---|---|
| 앱 크래시·종료·업데이트App crash / quit / update | ✓ 산다alive | 무손실(링·세그먼트 범위 안), 넘치면 Gap 표시Lossless within ring/segment retention; overflow shown as a gap |
| krilld 크래시krilld crash | ✓ 산다(holder가 fd 보유)alive (holder keeps fds) | 세그먼트에 쓰기 전 바이트는 잃을 수 있음 → 재기동 후 Gap 표시Bytes read but not yet persisted may be lost → shown as a gap after restart |
| krilld 업그레이드krilld upgrade | ✓ 산다alive | 리더 정지·세그먼트 봉인 후 교체라 무손실, 세대 하나Lossless: reader paused & segments sealed before handoff; one generation |
| holder만 크래시holder-only crash | ✓ 산다(krilld도 fd 보유)alive (krilld holds fds too) | 무손실, 종료 코드만 잃음Lossless; only exit codes are lost |
| holder·krilld 동시 소실, 재부팅holder + krilld together, reboot | ✗ 죽는다terminated | 마지막 세그먼트까지 읽기 전용 복원 → claude --resume·codex resumeRead-only restore up to the last segment → claude --resume / codex resume |
코디네이터가 런을 만들고, 의존성이 있는 작업을 나누고, 워커 에이전트를 각자의 워크트리에서 띄웁니다. 사람의 판단이 필요한 지점은 결정 게이트로 멈춥니다.
A coordinator creates a run, splits work into dependent tasks, and starts worker agents in their own worktrees. Points that need a human stop at decision gates.
점 색: 완료 · 작업 중 · 질문 대기 · 게이트 · 대기Dots: done · working · asking · gate · pending
# 1. isolate work in a fresh git worktree $ krill worktree new feat-api --base main # 2. create a run and a dependent task graph $ krill orchestration run-create --title "ship replay" $ krill orchestration task-create --run R --title impl-api $ krill orchestration task-create --run R --title review --deps T1 # 3. start a worker agent on a task $ krill orchestration worker-start --run R --task T1 \ --worker api --agent codex \ --cwd ~/Minikrill/worktrees/feat-api --prompt "implement T1" # 4. block on a human decision $ krill orchestration gate-create --from coordinator --run R \ --question "merge feat-api?" --options yes,no $ krill orchestration gate-resolve G1 --decision yes
에이전트가 만든 HTML·Markdown 보고서를 share.krill.page에 올리면 샌드박스된 공개 링크가 생깁니다. 90일 보관, 10MB까지, 소유 토큰으로 수정·삭제.
Publish HTML or Markdown reports your agents produce to share.krill.page and get a sandboxed public link. 90-day retention, up to 10 MB, edit/delete with your owner token.
krill artifacts share live파일 하나를 공유하고, 같은 링크로 갱신(update)·회수(unshare)합니다. 소유 토큰은 로컬에 보관됩니다.
Share a file, then update or unshare the same link. The owner token stays on your machine.
$ krill artifacts share ./report.html ✓ https://share.krill.page/a/k7Qm2xR9
Orca 호환 와이어 계약 — 기존 Orca식 클라이언트가 그대로 동작합니다.
Orca-compatible wire contract — existing Orca-style clients work unchanged.
$ jq -n --rawfile c report.html \
'{content:$c, contentType:"text/html", fileName:"report.html"}' \
| curl -s https://share.krill.page/v1/artifacts \
-H 'content-type: application/json' --data @-
단일 바이너리 krill. 일반 터미널에서 krill attach로 같은 세션에 들어갈 수 있습니다. /docs에서도 봅니다.
One binary, krill. krill attach drops any regular terminal into the same session. Also at /docs.
$ curl -fsSL https://krill.page/install.sh | bash
$ krill doctor $ krill hook install claude
$ id=$(krill new --worktree feat-x --agent claude) $ krill wait "$id" --for idle $ krill read "$id" --lines 40
$ krill attach "$id"
krill ls [--json]세션 목록과 상태List sessions and their statekrill new [--cwd <path>] [--worktree <name>] [--agent <profile> | -- <program>…]새 세션 생성. 에이전트 프로필 또는 임의 프로그램Create a session running an agent profile or any programkrill send <id> [--enter] [--text <text>] [--stdin]세션에 입력 보내기Send input to a sessionkrill read <id> [--lines N]현재 화면·최근 출력 읽기Read the screen and recent outputkrill wait <id> --for idle|waiting|blocked|done|exited|pattern|quiet [--timeout <s>]상태·패턴·조용함이 될 때까지 대기Block until a state, regex pattern or quiet periodkrill attach <id>일반 터미널에서 세션에 접속(Ctrl-] 분리)Attach a regular terminal (Ctrl-] detaches)krill kill <id>세션 종료(HUP → TERM → KILL)Terminate a session (HUP → TERM → KILL)krill --host <user@host> lsSSH 유닉스 소켓 포워딩으로 원격 krilld 조작Drive a remote krilld over SSH Unix-socket forwardingkrill handoff --from <id> [--to-agent <agent>] [--prompt <text>]세션 맥락을 다른 에이전트에게 넘기기Hand a session's context to another agentkrill worktree new <name> [--repo <path>] [--base <ref>] [--setup run|skip]git 워크트리 생성(+ 레포 setup 스크립트)Create a git worktree (optionally run repo setup)krill worktree rm <path> [--force]워크트리 삭제Remove a worktreekrill changes [--repo <path>]변경 파일 목록List changed fileskrill set --comment <text> | --workspace-status <…> | --pr <n>워크트리 메모·상태 배지·PR/이슈 연결Worktree comment, status badge, PR/issue linkkrill reference list|add|remove <url>세션·워크트리에 참고 URL 묶기Attach reference URLs to a session or worktreekrill ports세션이 연 포트 보기Ports opened by sessionskrill orchestration run-create --title <t>오케스트레이션 런 생성Create an orchestration runkrill orchestration task-create --run <r> --title <t> [--deps t1,t2]의존성 있는 작업(DAG 노드) 추가Add a task (DAG node) with dependencieskrill orchestration worker-start --run <r> [--task <t>] --worker <name> [--agent <a>] [--cwd <dir>] --prompt <text>작업에 워커 에이전트 배정·기동Dispatch and boot a worker agent on a taskkrill orchestration send | check [--wait] | ask | reply코디네이터↔워커 메시지, 블로킹 질문·답Coordinator ↔ worker messages, blocking ask/replykrill orchestration gate-create --from <n> --question <q> [--options a,b]사람 결정 게이트 생성Open a human decision gatekrill orchestration gate-resolve <id> --decision <choice>게이트 결정Resolve a gatekrill orchestration worker-list | worker-read | worker-stop워커 상태·출력 확인, 정지Inspect, read and stop workerskrill hook install|uninstall claude|codex|agy|cursor|opencode에이전트 상태 hook 설치 — 알림·배지·Needs YouInstall status hooks — notifications, badges, Needs Youkrill agent list감지된 에이전트 프로필Detected agent profileskrill account list|switch|add|rm|auto-switch에이전트 계정 전환·한도 소진 시 자동 전환Switch agent accounts, auto-switch on usage limitskrill skills list|get|install <name>에이전트 스킬 설치Install agent skillskrill schedule add <id> --cron '…' --prompt <text> -- <exe>cron(UTC) 예약 에이전트 실행Scheduled (UTC cron) agent runskrill statusline [install|uninstall]Claude Code 상태 줄 연동Claude Code status line integrationkrill artifacts share <file> [--title <t>]HTML·Markdown을 share.krill.page에 공개Publish HTML/Markdown to share.krill.pagekrill artifacts update|unshare <file>같은 링크 갱신·회수Update or withdraw the same linkkrill artifacts list | delete <slug>내 공유물 목록·삭제List and delete your shareskrill doctor [--bundle | --json]holder·krilld·소켓·hook 진단, 지원용 번들Diagnose holder, krilld, socket and hooks; support bundlekrill update [--check] [--json]새 릴리스 확인·설치(세션 유지)Check for and install updates (sessions stay alive)krill history clear콜드 스크롤백 기록 삭제Clear cold scrollback historykrill telemetry status|enable|disable텔레메트리 설정(기본 꺼짐)Telemetry setting (off by default)Apple Silicon macOS용. 설치 스크립트가 SHA-256과 codesign을 검증합니다.
For Apple Silicon macOS. The installer verifies SHA-256 and codesign before touching /Applications.