herdr 기본 키맵과 내 설정, 다른 컴퓨터의 에이전트에게 일 맡기기 (치트시트)
핵심 요약
- 창을 닫아도 에이전트는 계속 일한다. pane 이 뒤에서 도는 herdr 서버 위에서 돌기 때문이다. 터미널 창을 닫았다가 다시
herdr를 치면 그 화면 그대로 돌아온다. - 키는 tmux 와 거의 같다. 기본 prefix 는
Ctrl+B이고, 나는Ctrl+A로 바꿔 쓴다. 기본값 표와 내 설정 파일을 아래에 그대로 옮겼다. - 한글 입력 중에 prefix 가 안 먹히면 설정 한 줄이면 된다.
[experimental]의switch_ascii_input_source_in_prefix = true. 기본은 꺼져 있다. - 다른 컴퓨터는
herdr machine add한 줄로 붙는다. ssh 로 붙여서 그 컴퓨터의 작업 공간이 내 사이드바에 같이 보인다.remove로 지워도 그쪽 세션은 그대로 돈다. - 에이전트가 쓰는 명령은 다섯 개다.
tab create,pane run,agent prompt,agent wait,agent read. 공식 skill 을 설치해 두면 에이전트가 이 명령을 알아서 쓴다. - 일을 맡길 때는 다섯 가지를 말한다. 어느 컴퓨터에서, 어떤 에이전트에게, 무슨 일을, 끝나면 무엇을 가져올지, 끝난 뒤 정리까지. 이걸 빼먹으면 에이전트가 헤맨다.
| 일반 터미널 탭 나누기 | herdr | |
|---|---|---|
| 터미널 창을 닫으면 | 안에서 돌던 에이전트도 같이 끝난다 | 서버에서 계속 돌고, 다시 붙으면 그대로 |
| 누가 일을 끝냈나 | 탭을 하나씩 열어 봐야 안다 | 사이드바에 일하는 중은 노란 점, 끝나면 빈 원 |
| 다른 컴퓨터의 에이전트 | ssh 창을 따로 연다 | machine add 뒤 같은 사이드바에 보인다 |
| 에이전트가 다른 에이전트에게 일 주기 | 직접 만들어야 한다 | herdr 명령으로 탭을 열고 프롬프트를 보낸다 |
컴퓨터가 한 대뿐이어도 pane 을 나눠 에이전트 여럿을 굴리는 데 충분히 쓸 만하다. 컴퓨터가 두 대 이상이면 렌더처럼 오래 걸리는 일을 다른 컴퓨터에 넘기고, 지금 쓰는 컴퓨터에서는 다른 일을 계속할 수 있다.
치트시트
1. 기본 키맵 (herdr 0.9.3 기본값)
모든 단축키는 prefix 키를 먼저 누르고 기능 키 하나를 누른다. 기본 prefix 는 Ctrl+B 다. 구조는 작업 공간(workspace) 안에 탭, 탭 안에 pane 이다. tmux 로 치면 session, window, pane 이다.
키 (Ctrl+B 다음) |
하는 일 |
|---|---|
c |
새 탭 |
n / p |
다음 탭 / 이전 탭 |
1 ~ 9 |
그 번호 탭으로 이동 |
v |
좌우로 나누기 |
- (빼기) |
위아래로 나누기 |
h j k l |
pane 이동 (왼쪽, 아래, 위, 오른쪽) |
z |
지금 pane 을 화면 가득 키우기, 다시 누르면 되돌리기 |
x |
pane 닫기 |
w |
작업 공간 목록 |
g |
모든 탭과 pane 을 검색해서 바로 이동 |
q |
떼어내기 (herdr 는 계속 돈다) |
에이전트가 길게 답했을 때 z 로 키워서 읽고 다시 줄이는 걸 제일 많이 쓴다.
2. 내 설정 (prefix 를 Ctrl+A 로)
설정 파일은 ~/.config/herdr/config.toml 이다. 나는 tmux 를 오래 써서 tmux 에서 쓰던 키에 맞췄다. 기본값과 다른 것만 먼저 추리면 이렇다.
| 하는 일 | 기본값 | 내 설정 |
|---|---|---|
| prefix | Ctrl+B |
Ctrl+A |
| 위아래로 나누기 | - |
s |
| 검색해서 이동 | g |
w |
| 작업 공간 목록 | w |
Shift+S |
| 떼어내기 | q |
d |
| 설정 다시 읽기 | r |
아래는 설정 파일의 [keys] 와 [experimental] 부분이다. 내 개인 플러그인을 부르는 키 몇 개만 뺐다. fd, fzf, bat, yazi 를 쓰는 키는 그 도구가 깔려 있어야 동작한다.
# herdr configuration — tmux muscle-memory mapping
# 대응: tmux session ≈ herdr workspace / tmux window ≈ herdr tab / pane ≈ pane
[keys]
prefix = "ctrl+a"
# --- 창(window) = tab ---
new_tab = "prefix+c" # tmux c
previous_tab = "prefix+p" # tmux p
next_tab = "prefix+n" # tmux n
switch_tab = "prefix+1..9" # tmux 1-9
rename_tab = ["prefix+comma", "prefix+shift+t"] # tmux ,
close_tab = ["prefix+ampersand", "prefix+shift+x"] # tmux &
# --- pane ---
split_vertical = "prefix+v" # tmux: bind v split-window -h (좌우)
split_horizontal = "prefix+s" # tmux: bind s split-window -v (상하)
focus_pane_left = "prefix+h"
focus_pane_down = "prefix+j"
focus_pane_up = "prefix+k"
focus_pane_right = "prefix+l"
cycle_pane_next = ["alt+o", "prefix+o"] # tmux: M-o / 기본 o
last_pane = ["prefix+semicolon", "prefix+tab"] # tmux: ; / Tab(원래 last-window)
zoom = ["alt+z", "prefix+z"] # tmux: M-z / 기본 z
close_pane = "prefix+x" # tmux x
copy_mode = "prefix+[" # tmux [ (herdr copy mode도 vi 키)
# --- 세션/설정 ---
detach = "prefix+d" # tmux d (herdr 기본은 prefix+q)
reload_config = "prefix+r" # tmux: bind r source-file
resize_mode = "prefix+shift+r" # tmux: bind R (h/j/k/l 리사이즈)
workspace_picker = "prefix+shift+s" # tmux S(choose-tree) — w는 goto에 양보
goto = "prefix+w" # 세션 네비게이터(fzf 점프) — tmux w(choose-window) 감각
settings = "prefix+ctrl+s" # herdr 전용 (prefix+s가 split로 갔으므로 이동)
open_notification_target = "prefix+shift+o" # herdr 전용 (prefix+o가 pane 순환으로 갔으므로 이동)
# tmux: bind C — fzf로 하위 디렉토리 골라 새 탭
[[keys.command]]
key = "prefix+shift+c"
type = "pane"
description = "new tab (fzf dir)"
command = "dir=$(fd --type d --max-depth 1 --absolute-path . | fzf --reverse --prompt 'new-tab> ') && [ -n \"$dir\" ] && herdr tab create --cwd \"$dir\" --focus"
# 파일트리 + 프리뷰 — 에이전트 돌아가는 옆에 임시 pane으로 열고 q로 닫음
[[keys.command]]
key = "prefix+shift+f"
type = "pane"
description = "file tree + preview (yazi)"
command = "yazi"
# 파일 내용 훑기 — fzf로 찾고 bat 프리뷰, enter로 전체 보기
[[keys.command]]
key = "prefix+g"
type = "pane"
description = "file peek (fzf + bat), ctrl-e로 편집"
command = "fzf --reverse --preview 'bat --color=always --style=numbers {}' --preview-window=right,70% --header 'enter: view / ctrl-e: edit' --bind 'enter:execute(bat --paging=always {})' --bind 'ctrl-e:execute(${EDITOR:-nvim} {})'"
# 현재 pane의 디렉토리를 VS Code로 열기
[[keys.command]]
key = "prefix+shift+e"
type = "pane"
description = "open cwd in VS Code"
command = "code ."
[experimental]
# 한글 IME 켜진 상태에서도 prefix(ctrl+a)가 먹도록 macOS 입력소스를 일시 전환
switch_ascii_input_source_in_prefix = true
# Ghostty 호스트 → yazi 이미지/PDF 프리뷰가 실제 이미지로 렌더됨
kitty_graphics = true
고친 뒤에는 herdr server reload-config 로 다시 읽힌다. 내 설정에서는 Ctrl+A 다음 r 이다.
3. 한글 입력 중에 prefix 가 안 먹힐 때
한글 입력 상태에서는 prefix 키가 안 먹히곤 한다. 아래 실험 옵션을 켜면 prefix 키를 누르는 순간 입력기를 영어로 잠깐 바꿔 준다. 기본은 꺼져 있다.
[experimental]
switch_ascii_input_source_in_prefix = true
4. 다른 컴퓨터 붙이기
ssh 로 들어갈 수 있는 컴퓨터면 된다. add 가 그 컴퓨터의 herdr 서버를 준비하고 연결을 저장한다. 아래 user@thinkpad 자리에 내 ssh 주소를 넣는다.
# 붙이기 (--label 은 사이드바에 보일 이름)
herdr machine add user@thinkpad --label thinkpad
# 연결 확인
herdr machine status
# 그 컴퓨터의 작업 공간 읽기. 다른 herdr 명령도 앞에 --machine 을 붙이면 그 컴퓨터에서 돈다
herdr --machine thinkpad workspace list
# 이름 바꾸기, 지우기 (ID 는 herdr machine list 로 본다)
herdr machine list
herdr machine rename --label <새 이름> <ID>
herdr machine remove <ID>
remove 는 내 쪽 연결 설정만 지운다. 그 컴퓨터에서 돌던 세션은 그대로 남는다.
5. 에이전트에게 herdr 가르치기 (공식 skill)
herdr 는 에이전트용 skill 을 공식으로 제공한다. 한 번 설치해 두면 Claude 같은 에이전트가 herdr 다루는 법을 안다. 자세한 내용은 공식 문서에 있다.
npx skills add herdrdev/herdr --skill herdr -g
6. 에이전트가 쓰는 핵심 명령 다섯
내가 직접 칠 일은 거의 없지만, 에이전트가 무엇을 하는지 읽으려면 알아 두면 좋다. 순서대로 탭을 만들고, Claude 를 띄우고, 프롬프트를 보내고, 끝나길 기다리고, 결과를 읽는다.
herdr tab create --label 요약 --cwd ~/works # 탭 만들기
herdr pane run <pane> "claude" # 그 pane 에서 Claude 띄우기
herdr agent prompt <pane> "render-log.md 를 세 줄로 요약해 줘" # 프롬프트 보내기
herdr agent wait <pane> --until done # 끝나길 기다리기
herdr agent read <pane> # 결과 읽기
다른 컴퓨터에서 시킬 때는 같은 명령 앞에 --machine thinkpad 만 붙는다.
7. 영상에서 쓴 프롬프트
에이전트에게 자연어로 넣은 프롬프트 원문이다.
같은 컴퓨터에서:
오른쪽에 pane 을 나눠서 Claude 를 하나 더 띄우고, render-log.md 를 세 줄로 요약하게 해 줘. 답을 받으면 그 pane 은 닫고 요약만 보여 줘.
다른 컴퓨터(ThinkPad)에서:
ThinkPad 의 ~/works 에 탭을 하나 열어서 Claude 를 auto 모드로 띄우고, 그 컴퓨터의 CPU 코어 수와 남은 디스크 용량을 알아 오게 해 줘. 답을 받으면 그 탭은 닫아 줘.
첫 번째는 에이전트가 스스로 pane 을 나누고 새 Claude 에게 일을 넘긴 뒤, 끝날 때까지 기다렸다가 요약만 들고 왔다. 두 번째는 같은 명령에 --machine thinkpad 만 붙여서 ThinkPad 에서 일을 시키고, 결과를 받아 온 뒤 탭을 닫았다.
8. 일을 맡길 때 넣는 다섯 가지
| 넣을 것 | 위 두 번째 프롬프트에서는 |
|---|---|
| 어느 컴퓨터에서 | ThinkPad 의 ~/works |
| 어떤 에이전트에게 | Claude, auto 모드 |
| 무슨 일을 | CPU 코어 수와 남은 디스크 용량 알아 오기 |
| 끝나면 무엇을 가져올지 | 그 두 숫자 |
| 끝난 뒤 정리 | 그 탭 닫기 |
영상 줄거리, 짧게
탭 나누기와 무엇이 다른가
herdr 는 tmux 같은 터미널 멀티플렉서다. 터미널 하나를 여러 pane 으로 나눠 쓴다는 점은 일반 터미널의 탭 나누기와 같다. 다른 점은 pane 이 뒤에서 도는 herdr 서버 위에서 돈다는 것이다. 그래서 터미널 창을 닫아도 에이전트는 계속 일하고, 다시 붙으면 하던 화면 그대로다.
그리고 처음부터 코딩 에이전트를 위해 만들어졌다. pane 에서 Claude 나 Codex 가 돌고 있으면 herdr 가 알아보고 사이드바에 에이전트 목록을 띄운다. 일하는 중이면 노란 점, 끝나면 빈 원이라 탭을 하나씩 열어 보지 않아도 누가 끝났는지 보인다.
Orca 와는 무엇이 다른가
비슷한 자리에 Orca 가 있다. Stably AI 가 만든 오픈소스 데스크톱 앱으로, worktree 와 diff 리뷰, 브라우저를 한 창에 모아 준다. Orca 에도 CLI 와 ssh 원격이 있어서 기능이 있고 없고로 가르기는 어렵다.
갈리는 건 일하는 자리다. Orca 는 앱 창 안으로 들어가서 쓰고, herdr 는 지금 쓰는 터미널(나는 Ghostty)에 그대로 머문다. 나는 하루 대부분을 터미널에서 보내서 이쪽이 맞았다.
한 줄로 모션 영상 다섯 편
나는 컴퓨터가 세 대다. 지금 쓰는 맥북, 다른 맥북 한 대, 리눅스 노트북 ThinkPad 다.
10월 6일 저녁, 지금 쓰는 맥북의 Claude 에게 「이렇게 작업 다 진행해 줘」 한 줄을 보냈다. 그러자 다른 맥북에 탭이 하나씩 열리고, 탭마다 에이전트가 떠서 모션 영상을 동시에 만들기 시작했다. 공룡 복원 해설, 물방울 비트 모션, 화장품 광고, 종이 만화, 먼저 돌던 상어 영상까지 다섯 편이다.
지금 쓰는 맥북의 Claude 가 다른 맥북에 탭을 열고, 할 일을 적은 파일을 건네고, 각자 끝날 때까지 기다렸다. 내가 피드백을 주면 그것도 그 탭의 에이전트에게 그대로 전해 줬다. 렌더처럼 오래 걸리는 일을 다른 맥북이 맡으니, 나는 지금 쓰는 맥북에서 다른 일을 계속할 수 있었다. 그 다섯 편에 쓴 프롬프트는 모션그래픽 편 글에 있다.
컴퓨터마다 환경이 다르다
비슷한 시도로, 9분짜리 영상 렌더를 세 대에 나눠 28분 42초를 6분 55초로 줄인 적이 있다. 이건 herdr 가 아니라 ssh 로 조각을 나눠 준 스크립트였다. 그런데 ThinkPad 는 리눅스라 자막 글꼴이 바뀌어 나왔고, 결국 ThinkPad 는 뺐다. 일을 나눠 맡길 때는 컴퓨터마다 환경이 다르다는 걸 먼저 챙겨야 한다.
하네스를 더 깊게
에이전트가 기대한 대로 움직이게 하는 장치를 요즘은 하네스라고 부른다. 위에서 말한 「일을 맡길 때 넣는 다섯 가지」도 그런 장치 중 하나다. 이걸 Claude Code 로 어떻게 짜는지를 책 「요즘 바이브 코딩 하네스 with 클로드 코드」(골든래빗)에 썼다. 새로 나온 기능보다 시간이 지나도 잘 안 바뀌는 부분을 중심으로 정리했다.
댓글
아직 댓글이 없습니다. 첫 댓글을 남겨보세요!