Roost: 클로드 코드용 단일 Go 바이너리 사이드바 - 클릭 가능한 프롬프트 히스토리, 파일 트리 및 알림

한 개발자가 tmux를 통해 SSH로 Claude Code를 사용할 때 세 가지 문제를 해결하기 위해 Roost를 만들었습니다: 클릭 가능한 프롬프트 기록, cat으로 파일을 열지 않아도 되는 파일 트리, Claude가 대기 중일 때의 푸시 알림입니다. Roost는 SSH 터널링을 위해 설계된 127.0.0.1:8080에서 웹 인터페이스를 제공하는 단일 Go 바이너리입니다.
주요 기능
- tmux로 구동되는 xterm.js 터미널: WebSocket 연결 끊김, 절전 모드, 서버 재시작에도 견딥니다. 모든 세션은
tmux new-session -A -s {id}로 시작됩니다. - 파일 트리: 파일 미리보기, 드래그 앤 드롭 업로드, tmux의
pane_current_path를 읽어 현재 디렉토리를 자동으로 따라갑니다 — 셸 통합이 필요하지 않습니다. - 활동 패널:
~/.claude/projects/*.jsonl을 읽어 모든 프롬프트를 표시합니다. 프롬프트를 클릭하면 터미널이 해당 턴으로 스크롤됩니다. - 상단 바 칩: 활성 모델과 최신 컨텍스트 토큰을 표시합니다.
- 푸시 알림: Claude Code의
Stop훅을 사용하여 Claude가 유휴 상태가 되면 탭이 백그라운드에 있어도 노트북에 알림을 보냅니다.
설계 결정
- 지속성 계층으로서의 tmux: tmux가 세션 지속성을 처리하므로 셸은 연결 끊김과 재시작에도 견딥니다. Roost는 WebSocket 브리지와 추가 전용 디스크 로그만 소유합니다.
- 인스턴스당 단일 사용자: 계정이나 RBAC가 없습니다. 호스트를 공유하는 두 사람은 각자 다른 포트에서
roost serve를 실행합니다. UNIX UID가 격리를 처리하고, 리버스 프록시가 다중 사용자 인증을 처리합니다. - 바닐라 JS, 빌드 단계 없음: 프론트엔드는
//go:embed all:web를 통해 임베드된 일반<script>파일입니다. 번들러가 없어 디버깅과 배포가 더 쉽습니다.
주목할 만한 버그 수정
tmux의 display-message -p '#{x}\x1f#{y}'는 UTF-8 로케일 없이 실행될 때 (예: systemd 유닛에서) 0x1f를 리터럴 밑줄로 반환합니다. 한 줄 수정: tmux -u. 필드 구분자로 tmux를 파이프할 경우 로케일을 고정하세요.
호환성
SSH 터널을 통한 Linux 서버 + Windows Chrome에서 테스트 완료. macOS 서버는 작동하지만 미흡한 부분이 있습니다. Codex 세션은 에이전트를 교체하면 작동합니다. 저장소: github.com/liamsysmind/roost. v0.1.0 tarball: github.com/liamsysmind/roost/releases/tag/v0.1.0.
📖 전체 소스 읽기: r/ClaudeAI
👀 See Also

오픈 소스 지식 베이스 서버 및 지속적 AI 메모리를 위한 멀티 에이전트 오케스트레이터
한 개발자가 개인 VPS에 맞춤형 MCP 서버를 구축하여 Claude, Codex, Gemini가 세션 간에 지속적인 메모리를 유지할 수 있도록 했습니다. 여기에는 Obsidian 볼트를 수집하는 지식 베이스 서버와 장애 조치를 위한 다중 에이전트 오케스트레이터 'Daniel'이 포함됩니다.

클로메이트: 팀을 위한 오픈클로
새로운 프로젝트가 다중 사용자 OpenClaw 배포를 통해 공유 지식, 비용 가시성 및 관리자 제어 기능을 제공합니다.

FFF - Fast File Finder는 ripgrep보다 100배 빠른 속도 우위를 주장합니다
FFF(Fast File Finder)는 웹 기반 파일 검색 도구로, 정규 표현식 기반 검색 방식의 차세대 대안으로 자리매김하며 ripgrep보다 100배 빠르다고 주장합니다. 이 도구는 자바스크립트가 필요하며, 최근 해커 뉴스에서 36점과 17개의 댓글과 함께 논의되었습니다.

clarp: 6월 15일 종량제 이전 클로드의 오픈소스 드롭인 대체제
Claude -p가 6월 15일부로 종량제로 전환됩니다. clarp는 로컬 워크플로우를 대체하는 오픈소스 CLI입니다. 바이너리 이름만 claude에서 clarp로 변경하면 됩니다.