Hive
프로젝트 전반에 걸쳐 여러 AI 코딩 에이전트 세션(Claude, Codex, Gemini, Copilot, Aider, Pi, 일반 셸)을 관리하기 위한 네이티브 데스크톱 애플리케이션입니다.
상태
출시됨. 아키텍처는 안정적이며 일상적으로 사용되고 있습니다. 최신 버전: v2.3.0.
작동 기능:
- 멀티 세션 데몬 (
hived) — GUI 재시작에도 세션 유지
- xterm.js를 사용한 Wails 기반 데스크톱 GUI — 전체 키보드 제어, 글꼴 크기 조절, 다크 테마 지원
- 프로젝트 (이름, 색상, 작업 디렉토리) — 사이드바 트리
- 에이전트 런처 (Claude, Codex, Gemini, Copilot, Aider, Pi, 셸) — 사용하지 않는 에이전트는 숨기고 설정(Settings) → Agents에서 즐겨찾기를 상단에 고정할 수 있습니다.
- ACP 세션: 런처에서 터미널(Terminal) 대신 ACP를 선택하세요 (탭 키로 선택 가능). Claude, Codex 또는 Pi가 에이전트 클라이언트 프로토콜(Agent Client Protocol)을 통해 실행되며 (
npx 및 사용자의 Node를 이용), 일반 터미널 대신 대화 기록(transcript) 형태로 표시됩니다. 메시지, 계획 단계, 도구 호출, 허용/거부할 수 있는 권한 요청, 그리고 프롬프트 상자가 제공됩니다. 각 에이전트는 설정(Settings) → Agents에서 제한할 수 있는 권한 모드(Claude: 기본 수동, Codex: 기본 읽기 전용)로 실행됩니다. Pi는 해당 위치에서 비감독 도구 사용을 허용해야 합니다. Gemini와 Copilot은 실험적(experimental)으로 표시되며 Hive가 이들의 모드를 제한할 수 있을 때까지 비활성화 상태를 유지합니다. 터미널에서 가져오기(Take Over in Terminal) (파일 메뉴, 명령 팔레트)는 동일한 대화를 에이전트 자체의 CLI에서 다시 열고, **ACP로 반환하기(Hand Back to ACP)**는 모든 턴마다 이를 대화 기록으로 되돌립니다.
- 그리드 뷰: 프로젝트별(⌘G) 또는 전체 세션별(⇧⌘G), 공간 화살표 탐색 지원
- 멀티 창(Multi-window) (⇧⌘N) — 독립적인 창들이 동일한 데몬을 공유합니다.
- BEL → 포커스되지 않은 세션에 대한 데스크톱 알림 및 시각적 펄스 제공
- 사이드바와 타일 헤더의 세션별 상태 — 작동 중(working), 유휴(idle), 대기 중(waiting for you), 종료됨(exited) — 터미널이 렌더링하는 내용을 기반으로 하므로 모든 에이전트와 일반 셸에 적용됩니다.
Claude 세션은 Claude Code hooks를 통해 더 정확한 답변을 얻습니다: Hive가 생성하는 모든 세션은 자식 프로세스의 환경에 HIVE_SESSION_ID와 HIVE_SOCKET을 설정하며, hived hook (hooks는 claude --settings를 통해 호출됨)이 프롬프트, 턴 종료 시점, 그리고 권한 요청 프롬프트를 해당 소켓을 통해 데몬으로 보고합니다. 동일한 hooks는 Claude의 작업 목록(task list)도 전달하며, 이는 에이전트가 계획을 진행하는 동안 세션 상태 점 아래에 작은 파이 차트로 표시됩니다. 최근 Claude 모델은 세션에서 옵트인할 때만 이러한 작업 도구를 제공하므로, Hive는 시작하는 Claude 세션에 대해 CLAUDE_CODE_ENABLE_TODO_TOOLS=1을 설정합니다 — 기본적으로 켜져 있으며, Settings → Agents 아래에서 비활성화할 수 있고, 사용자가 직접 설정한 값은 절대 재정의하지 않습니다. Pi 세션도 Hive가 데몬과 함께 제공하는 작은 확장 기능을 통해 동일한 정밀도를 얻습니다. 이 기능은 설치할 필요가 없으며, Hive 외부에서 pi를 실행해도 작동하지 않습니다. Pi 자체는 작업 목록이 없으므로, 이 확장 기능은 동일한 계획 파이를 공급하는 hive_todo 도구를 추가합니다 — 기본적으로 켜져 있으며, Settings → Agents 아래에서 비활성화할 수 있습니다.
- 계획 검토(Plan review): Settings → Plugins에서 계획 검토 플러그인을 활성화하세요. Hive와 함께 제공되므로 설치할 것이 없으며, 기본적으로는 꺼져 있습니다. Claude가 계획 모드를 벗어나거나 Pi가 Hive에 제공하는
hive_submit_plan 도구를 호출하면, 에이전트는 기다리고 Hive는 포맷된 마크다운으로 계획을 보여줍니다. 주석을 달 passages를 선택한 다음, 계획을 승인하거나 변경을 요청할 수 있습니다. 사용자의 주석은 해당 passage가 인용되어 에이전트에게 다시 전달되고, 에이전트는 이를 수정합니다. Esc 키를 누르면 에이전트는 계속 기다리고 검토 창이 다시 나타납니다. 대기 중인 세션에는 사이드바에 Review 배지가 표시됩니다.
- Hive 창을 열지 않은 경우, 에이전트는 자체 터미널 승인을 사용합니다.
- plannotator와 같은 다른 계획 검토기가 설치된 경우, 플러그인의 설정에서 Hive를 선택하지 않는 한 Claude의 계획을 계속 검토합니다. Hive를 선택하면 Hive가 시작하는 Claude 세션에 대해 해당 플러그인이 비활성화됩니다.
- Laya 상태 감지(선택 사항이며 기본적으로 비활성화됨). 에이전트 후크가 없는 세션(Aider, Codex, 쉘, 사용자 지정 에이전트 등)은 현재 수행 중인 작업에 대해 추측만 할 수 있습니다. 설정(Settings) → 에이전트(Agents)에서 사용자가 로컬로 실행하는 Laya 서버의 에이전트 상태 감지 기능을 활성화할 수 있습니다. Laya의
/v1/systemone API를 사용하는 모든 것(예: pip install "laya[serve]" && laya-serve와 같은 업스트림 명령어)을 통해 Hive는 화면이 어떤 상태인지(작동 중, 유휴, 사용자 대기, 권한 대기, 실패 등) 질문합니다. 후크가 연결된 세션은 해당 후크를 유지하며, Laya는 에이전트가 새로운 보고서를 30초 동안 보내지 않을 때만 개입합니다. 상태 툴팁에는 "Laya에 의해 화면에서 분류됨(classified from the screen by Laya)"이라고 표시됩니다.
- 화면 텍스트는 설정한 URL로만 전송되며, 설정을 통해 이 기기가 아닐 경우 경고가 발생합니다. 서버 API 키를 Hive의 환경 변수로
HIVE_LAYA_API_KEY로 설정하십시오. 이 키는 디스크에 절대 기록되지 않습니다.
- 정확도는 모델에 따라 달라지므로, 사용자의 점수를 확인하려면
internal/laya/testdata/corpus/README.md를 참조하십시오.
- 에이전트 활동(Agent activity) — Claude 또는 Pi 세션이 스크롤백을 읽지 않고 무엇을 하고 있는지 보여줍니다. ⌘J를 누르면 터미널 옆에 인스펙터가 열리며, 계획의 단계와 각 도구 호출(
Bash · npm test 등 전체 인수는 아님)이 실행된 내용, 그리고 아래 전체 타임라인이 표시됩니다. 그리드(grid) 보기에서 ⌘J는 모든 타일의 터미널을 해당 활동(계획의 작업과 남겨진 공간에 배치되는 도구 피드)으로 교체하며, ⇧⌘J를 사용하면 어떤 보기에서도 이 기능에 접근할 수 있습니다. 에이전트가 진행 중인 과정에서 보고를 중단하는 세션은 회색으로 변하고 얼마나 오랫동안 조용했는지 표시합니다. (Windows 및 Linux에서는 Ctrl+Shift+J / Ctrl+Alt+Shift+J입니다.)
- 아이디어 인박스(Idea inbox) — 현재 작업 중인 세션을 방해하지 않고 프로젝트와 관련하여 기록을 캡처하는 노트 공간입니다. Hive가 생성하는 모든 세션은 자체 쉘에서 다음 명령어를 통해 하나를 등록할 수 있습니다:
hived idea add "the grid loses focus after ⌘G twice"
hived idea add -k bug "sidebar drag handle is 1px off"
hived idea list
hived idea list --all은 모든 프로젝트에 걸쳐 작동합니다. 이 명령어는 노트가 세션 자체의 프로젝트에 범위 지정(scoped)되는 세션 내부에서는 실행할 수 없으므로, 일반 셸에서 실행해야 합니다.
프로젝트는 세션으로부터 해결(resolved)되므로, 세션이 재할당된 후에도 노트는 작업이 진행되는 곳에 남게 됩니다. 아이디어는 그것을 기록한 세션보다 오래 지속됩니다. 프로젝트를 삭제하면 그 안에 있는 모든 아이디어가 삭제되며, Hive는 아직 열려 있는 아이디어가 있을 경우 이 삭제를 거부합니다.
받은 편지함(inbox) (⇧⌘I 또는 프로젝트 카드에 있는 배지)에서 노트는 수정될 수 있습니다. 즉, 텍스트, 종류(kind), 그리고 기록된 프로젝트를 수정할 수 있거나 작업으로 전환할 수 있습니다: **세션 시작(Start session)**을 누르면 해당 프로젝트가 고정되고 노트로부터 생성된 초기 프롬프트와 함께 에이전트 런처가 열립니다. 이 프롬프트는 노트의 종류에 따라 모양이 갖춰진 지침("먼저 재현해보고, 근본 원인을 찾아라…" 같은 버그의 경우)이며, 노트를 그 자체로 주제(subject)로 삼아 에이전트가 단순히 관찰된 내용뿐만 아니라 무엇을 해야 하는지 알게 합니다. 이 프롬프트는 에이전트를 선택하기 전에 런처에서 편집할 수 있습니다. 여기서 다듬더라도 저장된 노트가 변경되지는 않습니다. Claude와 Pi의 경우, 노트를 초기 인수로 받으며 그 아이디어는 새 세션에 연결됩니다.
다른 모든 에이전트의 경우 프롬프트는 직접 입력되는 것이 아니라 제공됩니다: 그리드 위에 있는 바가 노트와 함께 붙여넣기(Paste) 및 무시(Dismiss) 옵션을 보여줍니다. 따라서 에이전트가 입력을 받을 준비가 되었다고 판단될 때 이를 배치할 수 있습니다. Hive는 에이전트의 프롬프트 상자를 시작 시의 "이 디렉토리를 신뢰하십니까?" 게이트와 구별할 수 없으며, 사용자가 할 수 있습니다. 붙여넣기는 전송하지 않고 입력란에 넣으면서 아이디어를 연결하고, 무시는 노트를 받은 편지함에 남겨둡니다.
일반 셸과 사용자 지정 에이전트는 프롬프트를 전혀 받지 못합니다: 런처가 시작하기 전에 이를 알려줍니다. 연결된 아이디어가 포함된 세션은 사이드바 행에 작은 아이디어 기호(glyph)를 표시합니다.
- 세션 메시징(Session messaging): ⇧⌘M을 누르면 활성 세션에 메모가 전달됩니다. 이 메모는 터미널에 Enter를 쳐서 입력하거나 ACP 세션의 차례로 제출할 수 있습니다. 작동 중인 세션은 이를 거부하고, 시트는 나중에 (한 번 타이핑 후 몇 백 밀리초 뒤) 해당 세션이 유휴 상태가 될 때까지 메모를 대기열에 추가할지 제안합니다. '유휴(Settled)'란 비활성 상태를 의미하며, 일반 셸이나 자체 차례 보고 기능이 없는 에이전트(Claude, Pi 등)의 경우 두 초 동안 출력이 없으면 유휴로 간주됩니다. 따라서 사용자가 답변하지 않은 질문에 머물러 있는 세션은 이 메모를 답변으로 오인할 수 있습니다. ⌥⌘B (또는 세션 행의 종소리 버튼)을 누르면 세션 작동 중단 시 한 번만 알림이 울리도록 설정합니다. 이는 발동 후 초기화되며, 데몬 재시작 시 해제됩니다. 일반 셸에서는
hived msg <id-or-name> <text…> 명령어를 사용하여 동일한 작업을 수행할 수 있습니다 (정확한 ID 또는 정확한 이름만 사용 가능). 플러그인은 메시지를 보낼 수 없습니다. 세션이 다른 세션에게 메시지를 보내려면, 런처에서 **'다른 세션 직접 지정(May direct other sessions)'**을 체크하거나 명령 팔레트에서 토글해야 합니다. 그러면 해당 에이전트는 프로젝트 내의 다른 에이전트 세션에 도달하기 위해 hived msg <id-or-name> <text…>를 실행할 수 있습니다. 이 메모는 해당 세션에서 온 것으로 표시되어 도착하며, 항상 대기열에 추가되고, 일반 셸은 거부됩니다. 권한을 철회하면 다음 메시지부터 효력이 발생합니다. Claude Code 세션은 작동 중이든 유휴 상태이든 Claude 자체의 받은 편지함으로 메모를 받고, 해당 경로가 불가능할 경우 타이핑된 경로로 대체하며, Pi 세션도 동일하게 Hive의 Pi 확장 기능을 통해 (현재 차례 뒤에 대기열됨) 받습니다. 다른 모든 에이전트는 타이핑된 경로를 받습니다.
- 인앱 업데이트(macOS): 설정(Settings)에서 릴리스 또는 최신 커밋 채널을 선택한 다음, '업데이트(Update)' → '다시 로드(Reload)' (또는 데몬 변경 시 '재시작(Restart)')을 누릅니다.
- 새로운 기능: 사이드바 헤더의 선물 아이콘은 배포된 항목 목록(최신 릴리스 순)과 곧 출시될 항목 목록을 열어줍니다.
점(dot)이 표시됩니다.
현재 릴리스를 읽을 때까지
- 도움말 (Help): 선물 모양의 물음표 옆을 클릭하면 프로젝트, 세션, 워크트리 및 에이전트가 무엇인지 설명하는 패널이 열립니다. 이 패널에는 README, 문서(docs), 이슈 트래커 및 릴리스 링크와 키보드 단축키 오버레이로 진입할 수 있는 항목이 포함되어 있습니다. 또한 명령 팔레트에서도 접근 가능합니다.
- GUI 다시 로드 (Reload GUI) —
hived를 건드리지 않고 새로운 GUI 빌드를 가져오므로, 실행 중인 모든 셸과 에이전트가 유지됩니다.
- 메뉴 바 에이전트 (macOS) — 데몬 버전, 세션 목록 및 주의 집중(attention) 카운트를 표시하며, 다시 로드/재시작/업데이트 작업을 수행할 수 있습니다. 창을 모두 닫아도 실시간으로 작동합니다.
아직 출시되지 않은 기능: 데몬 재시작에 걸친 스크롤백 복구, 그리드 셀 내부 분할(splits), 워크플로우/에이전트 팀, 플랫폼 설치 프로그램, Linux에서의 인앱 업데이트.
빌드 (Build)
Go 1.27.1 이상, Node 24 이상, 그리고 Wails CLI가 필요합니다:
그런 다음 리포지토리 루트에서:
./build.sh
./build.sh --open
./build.sh --zip --version v2.3.0
Windows 또는 Linux의 경우, GUI와 데몬을 별도로 빌드해야 합니다:
( cd cmd/hivegui && wails build -platform windows/amd64 )
GOOS=windows GOARCH=amd64 go build -o cmd/hivegui/build/bin/hived.exe ./cmd/hived
...
hivegui와 hived는 같은 디렉토리에 있어야 하며, GUI가 시작 시 데몬을 자동으로 생성합니다.
메뉴 바 (macOS)
Hive는 메뉴 바에 아이콘을 배치합니다. 이는 어떤 창이 아닌 데몬에 대한 정보를 보고하므로, 모든 창을 닫아도 계속 작동하며 — 이것이 바로 GUI를 요청할 수 없는 유일한 경우이기도 합니다. 다음 내용을 표시합니다:
• 실행 중인 hived의 버전 및 빌드, 그리고 해당 데몬이 이 빌드를 구동하기에 너무 오래되었을 때 경고 메시지;
• 몇 개의 프로젝트 전반에 걸쳐 얼마나 많은 세션이 열려 있는지, 그리고 그중 당신을 기다리는 것이 얼마나 되는지;
• 모든 세션은 프로젝트 · 세션 형식으로 표시되며, 당신의 입력이나 권한 답변을 기다리느라 막힌(blocked) 세션에는 점(dot)이 찍힙니다. 이 중 하나를 클릭하면 바로 해당 위치로 이동하며, Hive가 실행되고 있지 않다면 자동으로 시작됩니다.
또한 GUI 다시 로드, 데몬 재시작… (확인 시 모든 실행 중인 셸과 에이전트 종료), 업데이트 확인…, Hive 열기 및 Hive 종료 옵션들이 있습니다.
이는 hived 또는 창이 열릴 때마다 자동으로 시작됩니다. 따라서 일반적인 사용 환경에서는 그저 존재합니다. 설정 ▸ 메뉴 막대 ▸ 로그인 시 시작을 설정하면 macOS에 추가로 등록되어 어느 쪽도 실행되기 전에 로그인 화면에서 나타납니다. 이를 억제하려면 HIVE_NO_MENUBAR=1을 설정하십시오. 독립적인 실행(HIVE_STATE_DIR이 설정된 경우, 예: scripts/dev-iso.sh)은 절대 시작하지 않습니다.
에이전트는 앱 번들 내의 hivegui.app/Contents/Library/LoginItems/hivebar.app에 포함되어 배포됩니다 (설치 시 번들을 무엇으로 이름을 바꾸었든 상관없습니다). 이것은 GUI와 같은 클라이언트이며, 와이어 프로토콜(wire protocol)을 통해 데몬과 통신하고 자체적으로 PTY를 열지 않습니다.
다시 로드 vs 재시작