herder: 궁극의 에이전트 멀티플렉서일까?

BBetter Stack
컴퓨터/소프트웨어AI/미래기술

Transcript

00:00:00herder는 여러분이 이미 사용 중인 터미널 안에서 실행되는 에이전트 멀티플렉서입니다.
00:00:05여러 코딩 에이전트를 서로 다른 창이나 탭에 나란히 띄워놓고 어떤 에이전트가 작동 중인지,
00:00:10어떤 게 막혀있거나 완료되었는지 시스템 알림과 함께 확인할 수 있죠. 단일 러스트 바이너리로
00:00:15전자(Electron)나 별도의 앱이 필요 없습니다. SSH에서도 작동하는 영리한 방식을 갖췄죠.
00:00:20cmux 같은 도구가 인기를 얻는 상황에서 왜 굳이 herder를 써야 할까요? 구독 누르고 알아보죠.
00:00:28herder는 ogle can celix라는 개발자가 만들었는데, 아마 2000년대 초반 팬이라서 'herder'에서 e를
00:00:34뺀 게 아닐까 추측해 봅니다. 아무튼 herder는 이름처럼 여러 에이전트를 양치기처럼
00:00:39몰아서 관리할 수 있는 도구입니다. 이게 왜 중요하냐면, 대부분의 개발자들이
00:00:45AI로 개발을 할 때 각 에이전트가 무엇을 하고 있는지 파악하기가 어렵기 때문입니다.
00:00:49herder는 탭과 분할 창을 지원하고 연결이 끊겨도 세션을 유지하는 터미널 멀티플렉서인
00:00:54tmux에서 많은 영감을 받았습니다. 하지만 tmux는 AI 에이전트가 존재하기 훨씬 전인
00:01:00수십 년 전에 만들어졌죠. 그래서 tmux 창 안에서 에이전트를 실행해도 tmux는 그 존재나 상태를 모릅니다.
00:01:06이런 이유로 warp나 cmux 같은 도구들이 생겨났죠. 이들은 기존 터미널을 벗어나 자신들의 터미널로
00:01:12옮겨가게 하므로, 사용자는 새로운 워크플로를 배워야만 합니다.
00:01:18그래서 ogle can celix는 tmux의 지속성과 에이전트 인지 기능을 모두 갖춘 herder를 만들었습니다.
00:01:24herder는 ratatouille로 만든 하나의 러스트 바이너리라서 전체가 터미널 텍스트 렌더링 방식입니다.
00:01:29따라서 SSH를 포함해 터미널이 실행되는 곳이라면 어디서든 작동합니다. 소켓 API도 있어서
00:01:35에이전트들이 직접 herder를 제어할 수도 있죠. 정말 인상적입니다.
00:01:40간단히 데모를 보여드리죠. brew나 curl, 또는 nix flake로 herder를 설치한 뒤
00:01:46herder 명령어를 실행하면 이런 화면이 뜹니다. 터미널, 워크스페이스, 에이전트들이 보이죠.
00:01:50줌을 좀 당겨놔서 명령어 전체가 다 보이진 않겠지만 최대한 자세히 보여드리겠습니다.
00:01:56보시다시피 워크스페이스가 하나도 없네요. 기본 프리픽스(접두어)는 tmux와 비슷한 ctrl+b입니다.
00:02:00이건 나중에 바꾸는 법을 알려드릴게요. 프리픽스가 이미 활성화되어 있는 상태라
00:02:05아래쪽 내비게이션 바에서 확인할 수 있습니다. 이제 shift + n을 누르면 새로운 워크스페이스가 생성됩니다.
00:02:10물론 키보드만으로도 제어할 수 있습니다.
00:02:14프리픽스에 이어 물음표를 누르면 모든 키보드 단축키를 볼 수 있습니다. 물론 마우스를 써도 되죠.
00:02:19새 탭을 만들어 'two'라고 부를 수도 있고, 마우스 우클릭으로 탭을 닫거나
00:02:23워크스페이스 이름을 'test'로 바꾸고, 새 워크스페이스를 만들거나 메뉴 설정을 열 수도 있습니다.
00:02:28가로/세로 분할을 하거나 특정 창 이름을 변경하고 창 사이를 이동하는 것까지 모두 마우스로 가능합니다.
00:02:34하지만 herder의 진정한 강점은 에이전트와의 상호작용입니다.
00:02:38현재는 bash를 쓰고 있지만 전 fish를 좋아해서 둘 다 변경하겠습니다.
00:02:43이제 위쪽엔 claude code를, 아래쪽엔 codex를 엽니다.
00:02:46보시다시피 herder가 에이전트들을 자동으로 인식해서 상태를 보여줍니다.
00:02:51Claude는 막혀있고(blocked), Codex는 유휴 상태(idle)네요. 이 디렉토리들에 접근 권한을 줍시다.
00:02:55두 에이전트 모두에게 “내가 어떤 모델을 사용 중이지?” 같은 질문을 던지면,
00:03:00herder가 즉시 Claude의 상태를 'working'으로 업데이트해 줍니다. codex cli도 마찬가지죠.
00:03:05워크스페이스가 잘못된 걸 알았으니 지우고 새로 이름을 'test'로 바꿀게요.
00:03:09herder에서는 에이전트가 직접 워크스페이스, 탭, 분할 창을 만들 수도 있습니다. 보여드리죠.
00:03:15프리픽스 + q를 눌러 종료합니다. 그러면 herder cli가 제공하는 모든 옵션이 보이죠.
00:03:20다시 herder로 돌아가 보겠습니다. 장점 중 하나는 이전 세션과 워크스페이스, 에이전트 상태가 그대로 유지된다는 점입니다.
00:03:24이제 새 워크스페이스를 만들고 디렉토리로 이동한 뒤 claude code를 엽니다.
00:03:29그리고 herder cli를 사용해서 claude code를 두 창에 띄워보겠습니다.
00:03:34하나는 “프로젝트에서 가장 큰 파일을 요약해 줘”라는 프롬프트로, 다른 하나는
00:03:38“코드베이스에서 하드코딩된 API 키나 비밀 정보를 찾아줘”라는 프롬프트로 실행합니다.
00:03:44새 창이 떴습니다. 줌을 좀 줄여서 전체적으로 보겠습니다. 이제 각자 프롬프트를 실행 중입니다.
00:03:49스크롤을 올려보니 첫 번째 작업은 끝났네요. 각 창에 적절한 제목(claude secrets, discord 등)도 붙었습니다.
00:03:54비밀 키는 발견되지 않았군요. 이제 두 창의 출력을 요약하고 Claude에게 창을 닫으라고 시켜보겠습니다.
00:03:58첫 번째 창의 정보를 가져와서 창을 닫고, 두 번째 창도 똑같이 처리했습니다.
00:04:03그리고 아래쪽에 보기 좋게 요약을 정리해 줍니다. herder는 터미널에 설치하는 바이너리일 뿐이라
00:04:09맥과 똑같은 방식으로 리눅스 서버에도 설치할 수 있습니다.
00:04:14아까 작업하던 세션이 그대로 복구된 게 보이시죠? open code가 한쪽에 있고 vim으로 코드를 보는 중입니다.
00:04:18하지만 문제는 제 맥에서 설정한 환경 설정이 서버에는 적용되지 않는다는 점입니다.
00:04:23사실 저는 프리픽스를 ctrl+b에서 ctrl+space로 바꾸고 테마를 'terminal'로 변경한 것뿐이지만,
00:04:28복잡한 단축키 설정이 담긴 환경 파일이 있다면 꽤나 성가실 겁니다.
00:04:32이를 해결하는 방법은 herder를 'remote' 플래그와 함께 사용해 서버에 SSH로 접속하는 것입니다.
00:04:36herder는 서버와 얇은(thin) 클라이언트가 유닉스 소켓으로 통신하는 구조입니다.
00:04:41클라이언트는 키 입력을 서버로 보내고, 서버는 탭과 창, 세션 지속성을 관리하죠.
00:04:45SSH를 이용하는 remote 모드에서는 서버는 원격 기기에서 돌고 클라이언트는 내 컴퓨터에서 돕니다.
00:04:50유닉스 소켓을 통해 입력을 주고받으며, 내 컴퓨터의 환경 설정을 원격지에서도 그대로 사용할 수 있게 됩니다.
00:04:55실제로 해보죠. 엔터를 누르면 SSH 서버에 접속됩니다. vim으로 보는 파일이 그대로 있네요.
00:05:01그런데 ctrl+b는 반응이 없죠. 왜냐하면 제 맥의 설정대로 ctrl+space가 프리픽스이기 때문입니다.
00:05:06메뉴를 좀 더 볼까요? 키 바인딩을 확인할 수 있고, 테마도 바꿀 수 있습니다.
00:05:11nord부터 gruvbox, catppuccin 등 다양한 테마가 있습니다.
00:05:18사운드 알림이나 토스트 메뉴도 켜고 끌 수 있고요.
00:05:24아직 소개하지 못한 기능이 너무 많습니다. worktree 통합이나 공식 에이전트 연동 기능들,
00:05:30종료 직전의 정확한 세션을 복구하는 기능 등 말이죠.
00:05:35기존 터미널에서 바로 작동한다는 점이 가장 큰 장점입니다.
00:05:40저는 cmux도 좋아하지만, 제가 완벽하게 커스텀한 터미널에서 그냥 herder를 실행하기만 하면
00:05:45모든 에이전트를 관리할 수 있다는 점이 정말 매력적입니다.
00:05:49cmux의 웹 브라우저 기능을 안 쓰게 된다는 단점은 있지만, 전 어차피 잘 안 썼으니까요.
00:05:54윈도우 사용자분들께는 안타까운 소식입니다. 유닉스 소켓과 PTY 의존성 때문에
00:05:59현재 윈도우는 완벽한 지원이 안 됩니다. 윈도우를 꼭 써야 한다면 그냥 리눅스를 듀얼 부팅하세요.
00:06:04WSL이 있긴 하지만, 완전 같진 않으니까요.
00:06:10터미널이나 시스템을 통해 변경할 수 있습니다. 이제 늘 그렇듯
00:06:15Herder에는 제가 아직 다루지 못한 기능들이 너무나 많습니다. 워크트리 통합이나
00:06:19공식 Harness 통합 같은 것들이죠. 데모에서 보셨겠지만, Harness가
00:06:24Herder 공식 스킬에 접근하게 해주고, Herder를 닫기 전에
00:06:29사용하던 세션을 정확히 재개할 수 있게 해줍니다. 솔직히 이게 기존 터미널에서
00:06:35작동한다는 점이 가장 큰 장점입니다. Tmux를 사랑하는 만큼, 저는 WezTerm을
00:06:39훨씬 더 많이 사용하고, 제 취향대로 완벽하게 설정해 두었거든요. 에이전트를 관리하고 싶으면
00:06:45WezTerm에서 터미널 탭을 하나 더 열고 Herder를 실행하기만 하면 되니까요. 네, Tmux의
00:06:50웹 브라우저 기능이 아쉽긴 하지만, 솔직히 저는 거의 쓰지 않았습니다. 지금 시청하고 계신
00:06:54Windows 사용자분들께는 정말 안타까운 소식이 있습니다. 유닉스 소켓 문제와
00:06:59Herder가 터미널 PTY를 사용한다는 점 때문에 현재 Windows 지원은 완벽하지
00:07:04않습니다. 하지만 Windows를 쓰신다면 이제 결단을 내려서 리눅스를 듀얼 부팅하시는 게 좋을 겁니다. WSL이 있긴 하지만, 완전 똑같지는 않잖아요.

Key Takeaway

Herder는 기존 터미널 워크플로를 유지하면서 여러 AI 코딩 에이전트의 상태를 실시간으로 시각화하고 제어할 수 있는 터미널 멀티플렉서입니다.

Highlights

  • Herder는 여러 코딩 에이전트를 하나의 터미널 창 내에서 관리할 수 있는 러스트 기반의 에이전트 멀티플렉서입니다.

  • Tmux와 달리 Herder는 실행 중인 AI 에이전트의 상태(Working, Blocked, Idle)를 실시간으로 인식하고 시각화합니다.

  • 단일 러스트 바이너리로 구성되어 전자(Electron) 앱 없이 SSH 환경을 포함한 모든 터미널에서 작동합니다.

  • Remote 모드를 지원하여 로컬 터미널의 환경 설정과 키 바인딩을 원격 서버 환경에서도 그대로 사용할 수 있습니다.

  • 에이전트가 소켓 API를 통해 직접 워크스페이스 생성, 탭 분할, 창 제어 등 Herder의 기능을 프로그래밍 방식으로 조작할 수 있습니다.

Timeline

Herder의 개념과 개발 배경

  • 여러 AI 에이전트를 터미널 탭과 분할 창으로 관리하는 도구입니다.
  • 기존 터미널 멀티플렉서인 Tmux의 지속성과 에이전트 상태 인지 기능을 결합했습니다.
  • 별도의 앱 설치가 필요 없는 단일 러스트 바이너리 방식입니다.

대부분의 개발자는 AI 에이전트가 수행 중인 작업을 파악하는 데 어려움을 겪습니다. Tmux는 수십 년 전에 개발되어 AI 에이전트의 존재를 인지하지 못하며, Warp나 Cmux와 같은 대안들은 새로운 터미널 환경을 익혀야 하는 번거로움이 있습니다. 이를 해결하기 위해 Herder는 터미널 텍스트 렌더링 기반으로 제작되어 SSH 환경을 포함한 어디서든 작동하며, 에이전트가 직접 Herder를 제어할 수 있는 소켓 API를 제공합니다.

터미널 내 에이전트 관리 데모

  • Ctrl+B 프리픽스를 통해 워크스페이스, 탭, 분할 창을 키보드와 마우스로 제어할 수 있습니다.
  • Claude Code와 Codex 같은 에이전트를 자동 인식하여 현재 상태를 실시간으로 표시합니다.
  • 에이전트가 프롬프트 수행 중 필요한 워크스페이스나 창을 동적으로 생성할 수 있습니다.

설치 후 Herder 명령어 실행 시 워크스페이스 관리 인터페이스가 나타납니다. 에이전트가 특정 작업을 수행할 때 'Working', 'Blocked', 'Idle'과 같은 상태가 자동으로 업데이트됩니다. 또한 Herder CLI를 활용하면 에이전트가 코드 분석이나 비밀 정보 탐색과 같은 작업을 병렬로 수행하며 결과물을 정리하고 필요에 따라 창을 닫는 과정을 자동화할 수 있습니다.

Remote 모드와 고급 설정

  • Remote 플래그를 사용하면 로컬의 환경 설정(키 바인딩, 테마)을 원격 서버에서 유지합니다.
  • 얇은(Thin) 클라이언트와 서버 구조를 통해 유닉스 소켓으로 통신합니다.
  • 유닉스 소켓과 PTY 의존성으로 인해 윈도우 환경은 완벽하게 지원하지 않습니다.

SSH 접속 시 로컬의 키 바인딩 설정이 서버에 적용되지 않는 문제를 Remote 모드로 해결합니다. 내 컴퓨터에서 클라이언트가 실행되고 원격 서버에서 세션을 관리함으로써, 서버 환경에서도 평소 사용하던 테마(nord, gruvbox, catppuccin 등)와 단축키를 그대로 사용할 수 있습니다. 현재 윈도우에서는 PTY 제약으로 인해 설치가 원활하지 않아 리눅스 사용 환경을 권장합니다.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video