Claude Code·Codex·Cursor 같은 코딩 에이전트에 규모가 있는 저장소를 맡기면 초기 비용의 상당 부분은 구현이 아니라 “어디를 읽을지” 탐색에 들어간다. ripwire는 Red Hat Emerging Technologies가 2026년 6월부터 만든 C++23 기반 단일 바이너리 CLI + MCP 서버로, 저장소를 파싱해 관련 심볼·호출 관계·변경 반경(blast radius)·테스트 후보를 순위화된 “지도”로 에이전트에 건넨다. 에이전트가 셸 명령을 실행할 수만 있으면 별도 서버·API 키 없이 로컬에서 돌아가고, 설치 한 줄로 감지된 에이전트(Claude Code·Codex·Hermes)에 “언제 ripwire를 쓸지” 알려주는 스킬까지 활성화된다. 9월 8일 스타 1,742개에서 9월 11일 1,900개로 4일간 158개(+9.1%) 늘었고(21:37 UTC 기준 실측), Red Hat 조직 저장소라는 출처와 2,400커밋에 가까운 집약적 유지보수가 붙어 있다. 핵심 주의점은 두 가지다. 토큰 절감 수치는 전부 제작자 자체 측정이고, README·문서가 워낙 장황해 해커뉴스에서 “AI가 쓴 문서 같다”는 지적이 나올 정도니 공식 수치는 문서가 아닌 실행으로 검증해야 한다. 이 글은 임시 홈에서 v0.6.0 체크섬 검증·설치·스킬 활성화·제거까지 직접 실행한 결과를 담았다(에이전트 도구 격리 검증 원칙은 Claude Code/Codex VM 격리 글 참고).

*출처: GitHub REST API 실측 (2026-09-11 21:37 UTC)*
핵심 요약
- 무엇: ripwire — tree-sitter로 저장소를 파싱해 Personalized PageRank로 심볼을 순위화하고, 결정론적인 압축 XML 지도를 표준출력으로 내보내는 CLI + MCP 서버. Apache-2.0.
- 누구에게: 큰 저장소에서 Claude Code/Codex를 매일 쓰는데 반복 탐색·파일 전체 읽기로 토큰과 시간이 낭비되는 개발자. Rust·C++·Python·Go·TypeScript·Java·Ruby·Kotlin·Dart 등 24개 문법 지원이 필요한 팀.
- 검증 결과: 임시 홈에서 v0.6.0 리눅스 ARM64 바이너리 SHA-256 검증 통과,
--version·--doctor·실제 저장소 파싱·--for태스크 렌즈·스킬 활성화(Claude Code/Codex/Hermes)·문서화된 제거 절차까지 실행 완료. 본문 명령과 출력은 전부 이 세션의 실측이다. - 보안: 네트워크 통신 없음(단, git URL을 루트로 주면
git clone --depth 1로 캐시에 받아옴). 설치 스크립트는 GitHub Releases 바이너리를 SHA-256 강제 검증 후 원자적 rename으로 설치하고, 훅은 명시적--hook없이는 절대 등록하지 않는다. 다만 curl|bash 방식 대신 이 글은 수동 다운로드+체크섬 절차를 권한다. - 주의: 모든 토큰 절감 배수는 제작자 자체 측정(2026-08-08 README 표). HN 토론에서는 문서 과잉·검증 불가 비판이 있었다. 멀티 파일 로컬라이제이션(LocBench multi-file 18.2%)은 여전히 약점으로 공식 문서에 명시돼 있다.
ripwire가 무엇이고, 왜 지금 뜨는가
ripwire는 스스로를 “AI context를 위한 ripgrep”이라고 부른다. ripgrep이 문자열 검색의 속도 문제를 풀었다면, ripwire는 코딩 에이전트의 탐색 비용 문제를 건드린다. 에이전트에게 저장소를 주면 보통 grep을 돌리고 파일을 통째로 읽는데, ripwire는 저장소를 한 번 파싱해 호출 그래프를 만들고 “지금 하려는 작업”에 맞는 심볼·본문·문서만 압축해 돌려준다.
공식 README의 자체 측정(2026-08-08, 전 항목 실제 실행 재현 명령 공개)에 따르면 저장소 오리엔테이션이 약 5.6K 토큰(naive 대비 3.6~4.5배 절감), 태스크 팩이 약 2.1K 토큰(7.7~37.7배), 문서 회상이 약 15K 토큰(29.2배)이다. 이 수치는 제작자 측정이지만, docs/EVALS.md에 측정 명령이 전부 공개돼 있어 독자가 재현할 수 있는 구조다.

*출처: ripwire README 자체 측정표 (2026-08-08, 재현 명령 공개)*
급부상 배경은 세 가지다. 첫째, Red Hat Emerging Technologies(redhat-et) 조직 저장소라는 뚜렷한 출처다. 둘째, 릴리스 속도가 빠르다. 9월 7일 v0.4.0, 9월 8일 v0.5.0, 9월 11일 v0.6.0이 나왔고 v0.6.0은 외부 기여자가 쓴 Kotlin·Dart 지원과 Hermes 설치 지원을 담고 있다. 셋째, 공개가 7월 31일인데 스타가 9월 8일 1,742개에서 9월 11일 1,900개로 4일간 158개(+9.1%) 늘었다. 해커뉴스에 9월 7일 올라온 “ripwire: ripgrep of AI context” 스레드가 19점·14개 댓글로 실제 토론을 끌어냈고, Trendshift가 “C++ Repository of the Day”로 선정했다.
기존 유명 도구와 비교: Graft·ripgrep·Serena 계열과 뭐가 다른가
| 구분 | ripwire | Graft (trailhq) | ripgrep | CODEBASE_MEMORY 계열 |
|---|---|---|---|---|
| 분류 | 직접 대체는 아니고 보완재 성격의 로컬 코드 맵 CLI+MCP | 코드 그래프 컨텍스트 레이어 (npm) | 범용 텍스트 검색 CLI | 임베딩 기반 장기 기억 MCP |
| 입력 | 저장소 경로 + 작업 설명(--for) | 저장소 경로 | 정규식/리터럴 | 저장소 + 대화 |
| 출력 | 순위화된 심볼 맵·본문 번들·호출 그래프 (압축 XML) | 컨텍스트 주입 | 파일·행 검색 결과 | 벡터 검색 결과 |
| 정확도 | 결정론적·재현 가능 (두 실행 byte-identical 게이트) | 그래프 기반 | 완전 일치 검색 | 근사 검색 |
| 수정 가능성 | 지도는 읽기용, 편집은 별도 안전 동사 3개 제공 | 읽기 중심 | 해당 없음 | 읽기 |
| 비용 | 0원 (로컬, API 키 불필요) | 0원 (로컬) | 0원 | 임베딩 API 비용 발생 가능 |
| 에이전트 연결 | CLI 우선, MCP는 선택 (claude mcp add ripwire) | MCP 연결 | 셸 호출 | MCP 연결 |
국내 독자 입장에서는 이 블로그가 9월 7일에 다룬 Graft와 겹치는 부분이 있지만 관계가 다르다. Graft는 npm으로 설치하는 컨텍스트 레이어로 ARM64 리눅스에서 네이티브 모듈이 아예 안 돌아가는 공개 이슈가 있었고, ripwire는 무의존성 C++23 단일 바이너리라 라즈베리파이 ARM64에서도 이 글의 검증처럼 바로 실행된다. ripgrep은 여전히 텍스트 검색 최강이고 ripwire도 --grep 동사를 내장하지만, “무엇을 읽어야 하는지”라는 질문에는 호출 그래프 기반 지도가 답한다. 즉 ripgrep을 버리는 도구가 아니라, 에이전트가 검색을 남발하기 전에 지도를 먼저 보게 하는 보완재다.
설치 전 알아둘 것: 요구 사항과 보안 경고
- 지원 플랫폼: macOS(arm64/x86-64), 리눅스(arm64/x86-64, RHEL 8+). 이 글 검증은 라즈베리파이 ARM64 리눅스에서 수행했다.
- CPU 제한 (v0.6.0부터 중요): x86-64 사전 빌드 바이너리는 x86-64-v3(AVX2·BMI2·FMA 등, 대략 2013년 Haswell 이후)를 요구한다. 설치 스크립트가 다운로드 전 CPU 플래그를 검사하고 미달이면 거부한다. 구형 CPU는 소스 빌드(
./install.sh)로 자기 CPU에 맞춰 빌드한다. - 공식 한 줄 설치:
RIPWIRE_REPO=redhat-et/ripwire bash -c "$(curl -fsSL .../install.sh)"— 설치 스크립트를 직접 읽어봤다. GitHub API로 릴리스를 조회하고, SHA-256 체크섬이 없으면 설치를 거부하며, tar 경로 트래버설을 검사하고, 실행 검증 후 원자적 rename으로~/.local/bin/ripwire에 설치한다. sudo를 쓰지 않고 셸 프로필을 수정하지 않는다. 훅(데이터 기록이 있는 advisory hooks)은 명시적--hook플래그 없이는 절대 등록하지 않는다. - 네트워크·데이터 경계: 바이너리 자체는 로컬 파일만 읽고 통신이 없다. 단 (1) 루트를 git URL로 주면
git clone --depth 1로 캐시에 클론하고, (2) 인덱스 캐시를$XDG_CACHE_HOME/ripwire또는/tmp/ripwire-<uid>에 쓴다. 텔레메트리는 없다. - .git/config 주의 (공식 SECURITY.md): ripwire는 분석 대상 체크아웃에서 읽기 전용 git 명령을 실행하는데 git은 그 저장소의
.git/config를 따른다. 남이 만든 체크아웃을 분석할 때는core.fsmonitor훅 여부를 확인하라. ripwire는 fsmonitor 훅 형태만 시작 시 무력화하고 로그로 알린다(--doctor의git-config-trust행).
Claude Code·Codex·Hermes 연결 방법 (직접 검증함)
설치하면 바이너리와 함께 18개의 task-shaped 스킬이 ~/.local/share/ripwire/skills에 스테이징되고, 설치 스크립트가 감지한 에이전트 홈에 심볼릭 링크로 활성화한다. 어느 에이전트 홈에 생기는지가 핵심이다.
| 에이전트 | 활성화 명령 | 설치되는 경로 | 형태 |
|---|---|---|---|
| Claude Code | bash ~/.local/share/ripwire/skills/install.sh | ~/.claude/skills/ripwire-* | 심볼릭 링크 18개 |
| Codex | ... install.sh --codex | ~/.agents/skills/ripwire-* | 심볼릭 링크 18개 |
| Hermes | ... install.sh --hermes | $HERMES_HOME/skills/ripwire-* (기본 ~/.hermes/skills) | 심볼릭 링크 18개 |
주의: Hermes 모드는 HERMES_HOME 환경변수를 따라가므로, 격리 검증 시 HOME만 바꾸면 HERMES_HOME이 실제 홈을 계속 가리켜 실제 ~/.hermes/skills에 링크가 생길 수 있다. 이 글 검증 중 실제로 이 현상을 확인했고 곧바로 문서화된 제거 명령으로 정리했다. 격리 테스트를 할 때는 HOME과 HERMES_HOME을 함께 덮어쓰라.
CLI 우선이 권장 경로다. 에이전트가 셸을 쓸 수 있으면 그냥 호출하면 되고, MCP 서버는 두 번째 선택이다. MCP 등록은 설정을 건드리지 않고 레시피만 출력하는 ripwire wrap으로 확인한다.
ripwire wrap claude # Claude Code용 출력: claude mcp add ripwire -- ripwire --mcp
ripwire wrap codex # Codex용 출력
ripwire wrap hermes # Hermes용 출력 (훅은 미포팅 안내 있음)
Claude Code MCP 등록: claude mcp add ripwire -- ripwire --mcp. 공식 문서는 MCP를 항상 켜두면 31개 동사의 스키마가 매 세션 컨텍스트를 차지한다는 비용도 명시한다. 셸을 쓸 수 있는 에이전트라면 CLI 호출이 더 싸다.
이 글에서 직접 검증한 것 (2026-09-11~12, 라즈베리파이 ARM64)
- 체크섬: v0.6.0 linux-arm64 tarball을 GitHub Releases에서 직접 내려받아 공개
.sha256과 대조 — 일치(35f83b...760d4). - 실행:
ripwire --version→ripwire 0.6.0 (Release, GNU 14.2.1, ...). - 실제 저장소 파싱: ripwire 저장소를 얕게 클론해
ripwire . --top-k=12실행 — 1,982개 파일·17,901개 심볼·20,752개 엣지를 파싱해 순위화된 XML 지도 출력, 종료 코드 0. - 태스크 렌즈:
ripwire . --for="cache invalidation" --token-budget=1500실행 — 예산 초과 사실(over_ceiling="1")과 라우팅 근거까지 출력에 공개하며 9개 시그니처 번들 반환. - 스킬 활성화: 임시 홈에서 Claude Code 모드와 Codex 모드 설치 — 각 18개
ripwire-*심볼릭 링크 생성 확인. Hermes 모드는HERMES_HOME이 실제 홈을 가리켜 실제 경로에 일시적으로 생겼고, 문서화된 제거 절차로 즉시 정리(잔여 0개 확인)했다. 이 과정에서 “격리 검증 시 HERMES_HOME을 함께 덮어써야 한다”는 실사용 주의점을 확보했다. - 자체 보안 스캔: ripwire에 내장된
--scan-skills로 설치된 스킬 디렉터리 검사 — 11개 파일 스캔, 발견 0건. - 제거: 스킬 링크 제거(문서화된
find ... -name 'ripwire-*' -type l -delete패턴) 후 잔여 0개 확인. 바이너리와 캐시는 임시 디렉터리라 함께 정리된다.
검증하지 못한 것: MCP 서버를 실제 에이전트 세션에 등록해 장기 실행한 것(이 글은 무해한 검증만 수행), x86-64-v3 CPU 미달 환경에서의 거부 동작, macOS 빌드, 대형 저장소(llvm 규모)에서의 공식 성능 수치 재현. 토큰 절감 배수는 제작자 자체 측정임을 명시한다.
추천하는 경우 / 추천하지 않는 경우
추천한다:
- Claude Code·Codex·Cursor를 큰 저장소에서 매일 쓰면서 “에이전트가 프로젝트를 매번 처음 보는” 낭비를 체감하는 개발자
- 지원 언어(Rust·C++·Python·Go·TS·Java·Ruby·Kotlin·Dart 등 24종)가 본인 스택과 겹치는 팀
- 임베딩 API 비용 없이 로컬에서 결정론적인 코드 탐색을 원하는 경우
- 오프라인·폐쇄망 환경에서 에이전트를 운영하는 경우 (의존성 없는 단일 바이너리)
추천하지 않는다:
- 문서 과잉에 민감하거나 제작자 자체 벤치마크를 그대로 믿지 못하는 상황에서 근거 없이 도입하려는 경우 — 공식 수치는 재현 명령이 공개돼 있지만 독자 검증이 필요하다
- 멀티 파일에 걸친 정확한 로컬라이제이션이 최우선 과제인 경우 — LocBench multi-file 18.2%는 공식 인지 한계다
- 2013년 이전 x86 CPU 환경 — 사전 빌드가 x86-64-v3를 요구하므로 소스 빌드 필요
- 이미 Graft나 다른 컨텍스트 레이어로 만족하는 경우 — 다르게 풀지만 같은 문제의 상당 부분을 커버한다
안전한 설치 절차 (복사·붙여넣기용)
공식 curl|bash 대신 단계별로 수동 검증하는 절차다. 실제 운영 환경이 아닌 테스트 환경에서 먼저 실행하라.
# 1. 임시 디렉터리에서 최신 릴리스 확인 (이 글 기준 v0.6.0)
gh release view --repo redhat-et/ripwire # gh CLI가 없으면 GitHub Releases 페이지에서 확인
# 2. 플랫폼에 맞는 바이너리 + 체크섬 다운로드 (ARM64 리눅스 예시)
curl -fLO https://github.com/redhat-et/ripwire/releases/download/v0.6.0/ripwire-0.6.0-linux-arm64.tar.gz
curl -fLO https://github.com/redhat-et/ripwire/releases/download/v0.6.0/ripwire-0.6.0-linux-arm64.tar.gz.sha256
sha256sum -c ripwire-0.6.0-linux-arm64.tar.gz.sha256 # OK가 나와야 한다
# 3. 압축 해제 후 실행 확인 (설치 없이 그 자리에서)
tar -xzf ripwire-0.6.0-linux-arm64.tar.gz
./ripwire-0.6.0-linux-arm64/ripwire --version
# 4. 문제없으면 공식 인스톨러로 설치 (버전 고정)
RIPWIRE_REPO=redhat-et/ripwire RIPWIRE_VERSION=v0.6.0 RIPWIRE_INSTALL_YES=1 \
bash -c "$(curl -fsSL https://raw.githubusercontent.com/redhat-et/ripwire/main/scripts/install.sh)"
# 바이너리는 ~/.local/bin/ripwire, 스킬은 ~/.local/share/ripwire/ 에 설치된다
# 5. 설치 상태 점검
ripwire . --doctor
버전 고정(RIPWIRE_VERSION), 체크섬 대조, 임시 디렉터리 사전 실행, --doctor 점검까지가 최소 안전 절차다. 운영 프로젝트 설정 변경·비밀 입력은 이 절차에 없다.
제거 방법 (공식 INSTALL.md 절차):
# 바이너리와 스테이징된 스킬
rm -f ~/.local/bin/ripwire
rm -rf ~/.local/share/ripwire
# 각 에이전트의 스킬 링크 (ripwire-* 심볼릭 링크만 지운다)
for d in "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/skills" "${AGENTS_HOME:-$HOME/.agents}/skills" \
"$HOME/.agents/skills" "${CODEX_HOME:-$HOME/.codex}/skills" "${HERMES_HOME:-$HOME/.hermes}/skills"; do
[ -d "$d" ] && find "$d" -maxdepth 1 -name 'ripwire-*' -type l -delete
done
# MCP를 등록했다면: claude mcp remove ripwire (Codex는 ~/.codex/config.toml에서 [mcp_servers.ripwire] 삭제)
# 캐시: rm -rf "${XDG_CACHE_HOME:-/tmp}/ripwire" "/tmp/ripwire-$(id -u)"
에이전트에 붙여넣는 설치 요청 프롬프트
이 글의 URL을 Claude Code나 Codex 대화에 붙여넣을 때 쓸 수 있는 안전 지시문이다.
https://blog.kwt.co.kr/ripwire-claude-code-codex-code-map-install-security/ 글을 읽고 ripwire v0.6.0을 설치해줘.
요구사항:
1. 반드시 RIPWIRE_VERSION=v0.6.0으로 버전을 고정하고, 공식 install.sh를 쓰되 설치 전에
스크립트 내용를 먼저 출력해서 보여줘.
2. 설치 후 sha256 체크섬이 통과했는지, ripwire --version 출력이 무엇인지 보고해줘.
3. Claude Code 스킬 활성화까지만 하고, --hook( advisory hooks)은 등록하지 마.
MCP 등록(claude mcp add)도 내가 확인하기 전까지는 하지 마.
4. ripwire . --doctor 결과를 보여주고, ~/.local/bin과 ~/.local/share/ripwire 외에
바뀐 경로가 있으면 전부 나열해줘.
5. 내 비밀값(.env, API 키, 자격증명)은 절대 읽거나 복사하지 마.
운영 중인 프로젝트 설정은 건드리지 마.
6. 제거가 필요하면 INSTALL.md의 공식 절차(링크 참조)대로만 하고,
ripwire-* 심볼릭 링크 외의 다른 스킬이나 설정을 지우지 마.
FAQ
ripwire는 한국어로 소개된 자료가 있나?
국내에는 개념 소개 글이 두세 편 있다. 디지털부르주아 블로그(9월 8일)와 aisparkup 위키(9월 11일)가 대표적이다. 다만 체크섬 검증·에이전트별 설치 경로·제거 절차·보안 정책까지 다룬 글은 이 글이 국내 최초로 확인된다. 별도로 일본어 note.com에 v0.5.0 리뷰가 있다.
Graft 대신 ripwire를 골라야 하나?
같은 문제(반복 탐색 낭비)를 다른 방식으로 푼다. ARM64 리눅스 실행(라즈베리파이 검증 통과), 조직 출처(Red Hat), 무의존성 바이너리가 ripwire의 차별점이다. npm 생태계 친화성이나 기존 Node 스택 통합이 중요하면 Graft도 여전히 유효한 선택지다. 둘 다 설치하고 CLI만 써보고 하나를 정리하는 방법도 있다.
MCP 서버까지 등록해야 하나?
아니다. 공식 문서도 CLI 우선을 권한다. 셸을 실행할 수 있는 에이전트는 그냥 ripwire .를 호출하면 되고, MCP는 31개 동사 스키마가 매 세션 컨텍스트를 차지하는 비용이 있다. 웜 인덱스가 필요한 대규모 작업이 아니면 CLI로 충분하다.
상용 프로젝트에 써도 되나?
Apache-2.0 라이선스로 상용 이용에 제약이 없다. 단 pre-1.0이므로 호환성 보장이 없다는 공식 정책(SECURITY.md의 “No Version Promises”)을 알아두고, 남이 만든 체크아웃을 분석할 때는 .git/config 확인이라는 공식 권고를 따르라.
공식 참고자료
- ripwire 저장소: https://github.com/redhat-et/ripwire
- 설치 문서: https://github.com/redhat-et/ripwire/blob/main/INSTALL.md
- 보안 정책: https://github.com/redhat-et/ripwire/blob/main/SECURITY.md
- 측정 근거: https://github.com/redhat-et/ripwire/blob/main/docs/EVALS.md
- 해커뉴스 스레드: https://news.ycombinator.com/item?id=49593050
- Red Hat Emerging Technologies: https://github.com/redhat-et