Headroom 사용법 2026 – LLM 토큰 비용 줄이는 로컬 프록시는 어디에 붙일까

Headroom은 2026년 6월 2일 기준 GitHub README에서 AI 에이전트가 읽는 도구 출력, 로그, RAG 조각, 파일, 대화 기록을 모델 호출 전에 압축하는 로컬 우선 컨텍스트 압축 계층으로 설명된다. 설치 방식은 Python 패키지, Node 패키지, 프록시, 에이전트 래퍼, MCP 서버까지 열려 있다.

AI 에이전트 비용이 튄다고 하면 사람은 보통 모델부터 본다. Opus를 썼나, GPT 고급 모델을 켰나, 긴 답변을 너무 많이 받았나부터 의심한다. 그런데 실제로는 출력보다 입력이 조용히 비용을 먹는 경우가 많다. 에이전트가 로그를 읽고, 검색 결과를 읽고, JSON 도구 출력을 읽고, 같은 파일을 또 읽으면 모델은 계속 같은 냉장고를 뒤진다. 문제는 그 냉장고 안에 유통기한 지난 반찬통이 많다는 것이다.

Headroom이 노리는 지점은 바로 여기다. “모델을 바꾸자”가 아니라 “모델이 읽기 전에 컨텍스트를 정리하자”다. Claude Code, Codex, Cursor 같은 코딩 에이전트가 매일 로그와 도구 출력을 먹는 환경이라면 이 접근은 꽤 현실적이다. 단, 이것도 만능 버튼은 아니다. 압축 계층을 붙이면 비용은 줄 수 있지만, 모델이 정확히 무엇을 봤는지 추적해야 하는 운영 부담도 생긴다.

이 글은 Headroom을 바로 찬양하는 글이 아니다. 공식 README와 AI타임스 기사, 로컬 인박스 요약을 바탕으로 “어떻게 쓰는지”, “어디에 먼저 붙이는지”, “어떤 실험으로 효과를 확인할지”를 정리한다. 추가로 이 글을 쓰는 과정에서 /tmp 가상환경에 Headroom을 설치하고 proxy health와 repo shape만 확인했다. 실제 LLM 응답 성공이나 production 운영 후기는 아니므로, 그 선은 분명히 나눈다. 허세는 토큰보다 더 빨리 탄다.

한 문장으로 보면

Headroom은 LLM 앞단에 붙는 로컬 컨텍스트 압축 계층이다. AI 에이전트가 도구 출력, 로그, RAG 문서 조각, 파일, 대화 기록을 그대로 모델에 보내기 전에 Headroom이 중복과 잡음을 줄이고, 필요한 경우 원본을 다시 찾을 수 있게 남긴다.

공식 README는 Headroom의 모드를 크게 네 가지로 보여준다. 첫째, Python 또는 TypeScript 앱 안에서 compress(messages)를 호출하는 라이브러리 방식이다. 둘째, headroom proxy --port 8787처럼 프록시를 띄워 OpenAI-compatible client 앞단에 넣는 방식이다. 셋째, headroom wrap claude, headroom wrap codex, headroom wrap cursor처럼 코딩 에이전트를 감싸는 방식이다. 넷째, MCP 클라이언트에서 headroom_compress, headroom_retrieve, headroom_stats 같은 도구를 쓰는 방식이다.

그래서 사용법을 설치 명령 하나로 줄이면 오히려 손해다. 중요한 건 “내 워크플로에서 어디가 입력 토큰을 가장 많이 먹는가”를 먼저 찾는 것이다. 긴 테스트 로그인가, MCP JSON 출력인가, RAG 문서 조각인가, 아니면 매번 반복되는 코드 탐색인가. Headroom은 그 병목 앞에 붙이는 도구다.

먼저 볼 사람

Claude Code, Codex, Cursor 같은 AI 코딩 에이전트를 매일 쓰고 있다면 먼저 볼 만하다. 특히 에이전트가 같은 저장소를 반복해서 읽거나, 긴 로그를 매번 삼키거나, MCP 도구 출력이 JSON 폭포처럼 쏟아지는 환경이면 Headroom이 노리는 문제가 이미 내 작업장에 있을 수 있다.

RAG 앱이나 내부 업무 자동화 앱을 만드는 사람도 볼 만하다. 검색증강생성은 문서를 많이 넣을수록 든든해 보이지만, 실제 운영에서는 chunk가 길어지고 중복이 생기며 비용과 지연이 같이 늘어난다. 이때 압축 계층을 명시적으로 넣을 수 있으면 실험 가치가 생긴다.

반대로 ChatGPT나 Claude 웹에서 짧은 질문 몇 개만 하는 사용자는 굳이 급하지 않다. Headroom은 “대화가 길어서 답답하다”보다 “에이전트와 앱이 반복 입력을 많이 먹는다”에 가까운 도구다. 도구는 문제보다 늦게 와야 한다. 문제보다 먼저 온 도구는 대체로 책상 위 케이블처럼 엉킨다.

내 Obsidian 볼트 기준으로도 실험 가치는 있었다. headroom loc로 본 repo shape는 제외 옵션을 걸어도 약 17,772개 파일, 413만 줄 규모였다. Markdown만 13,000개 이상이고, TypeScript, JSON, Python, Go 파일도 섞여 있었다. 이런 폴더에서 AI 에이전트가 검색 결과와 로그를 계속 읽으면 입력 컨텍스트가 커질 수밖에 없다. 그러니 Headroom이 맞는지 보려면 “볼트 전체를 AI에 던지기”가 아니라, 긴 검색 결과와 긴 JSON 출력 하나부터 보는 게 맞다.

왜 입력 토큰이 먼저 새는가

AI 코딩 에이전트는 사람처럼 한 번 보고 기억하는 방식으로 일하지 않는다. 세션이 길어지고 도구 호출이 늘어나면 이전 대화, 검색 결과, 로그, 파일 내용이 계속 컨텍스트에 남는다. 특히 테스트 로그와 JSON 출력은 사람이 보기엔 “대충 같은 내용”이어도 모델 입장에서는 전부 읽어야 하는 텍스트다.

예를 들어 pytest 실패 로그가 길게 나오고, 그다음 rg 검색 결과가 나오고, 다시 git diff가 나오고, 마지막에 MCP 도구가 거대한 JSON을 반환한다고 하자. 사람은 중요한 줄만 본다. 모델은 시스템이 넘겨준 내용을 대부분 입력으로 받는다. 여기서 비용은 답변 길이보다 “읽힌 양”에서 먼저 커진다.

Headroom README의 벤치마크 표는 이런 agent workload를 대상으로 한다. 코드 검색 100개 결과, SRE incident debugging, GitHub issue triage, codebase exploration 같은 작업에서 토큰 절감률을 제시한다. 이 숫자는 발행 전에 최신 README에서 다시 확인해야 하지만, 방향 자체는 분명하다. 길고 반복되는 입력을 줄이는 쪽이다.

내가 운영한다면 첫 실험도 바로 이 구간에서 시작한다. “AI가 답변을 길게 해서 비싸다”보다 “AI가 읽는 원본이 너무 길다”를 먼저 의심한다. 비용 최적화의 첫 삽은 모델 교체가 아니라 입력 다이어트다. 이 말이 좀 재미없지만, 원래 돈 아끼는 일은 대체로 낭만보다 장부에 가깝다.

Headroom은 내부에서 무엇을 하나

공식 README 기준 Headroom의 핵심 흐름은 CacheAligner -> ContentRouter -> CCR로 볼 수 있다. CacheAligner는 입력 prefix를 안정화해 provider의 KV cache가 더 잘 맞도록 돕는 역할로 설명된다. 같은 내용인데 매번 위치와 모양이 흔들리면 캐시가 덜 맞을 수 있으니, 앞단 정렬이 중요해진다.

ContentRouter는 입력의 종류를 보고 어떤 압축기를 쓸지 고른다. JSON은 SmartCrusher, 코드는 AST-aware CodeCompressor, 일반 텍스트는 Kompress-base 같은 흐름으로 나뉜다. 즉 모든 텍스트를 무식하게 요약하는 방식이 아니라, 내용 타입에 따라 다른 압축 전략을 쓰겠다는 방향이다.

여기서 특히 중요한 건 CCR, 즉 reversible compression이다. 단순 삭제가 아니라 원본을 로컬에 보관하고, 모델이 필요할 때 headroom_retrieve 같은 도구로 다시 찾을 수 있게 하는 구조다. 비용을 줄이려고 중요한 로그 줄을 날려버리면 디버깅이 더 비싸진다. Headroom은 이 문제를 “압축하되 원본 접근 경로를 남기자”로 풀려는 도구다.

그래도 원본이 로컬에 남는다는 말은 확인할 점도 생긴다는 뜻이다. 원본 저장 위치, 보존 기간, 민감정보 포함 여부, 팀 저장소에서의 사용 규칙을 봐야 한다. “로컬 우선”은 좋은 출발점이지만, 회사 데이터에서는 로컬도 보안 경계 안에 들어온다. 내 노트북이라고 자동으로 성역이 되는 건 아니다.

사용법 1: 코딩 에이전트에 wrap으로 붙이기

가장 직관적인 사용법은 에이전트를 감싸는 것이다. 공식 README는 headroom wrap claude, headroom wrap codex, headroom wrap cursor, headroom wrap aider, headroom wrap copilot 같은 방향을 제시한다. Claude Code나 Codex를 자주 쓰는 사람에게는 이 모드가 제일 먼저 눈에 들어온다.

기본 설치와 실행 흐름은 README 기준으로 이렇게 잡을 수 있다.

pip install "headroom-ai[all]"

headroom wrap claude
headroom wrap codex

headroom stats

다만 이걸 바로 실전 저장소에 붙이는 건 추천하지 않는다. 내가 확인한 환경에서는 claude CLI는 정상이라 headroom wrap claude 자체는 실행됐지만, proxy를 통한 실제 Claude 호출은 Credit balance is too low로 막혔다. 반면 codex CLI는 로컬 바이너리 경로가 깨져 ENOENT가 났다. 즉 Headroom 문제가 아니라, 감싸려는 CLI와 인증/과금 경로부터 정상이어야 한다.

첫 테스트는 샘플 저장소나 공개 repo, 또는 민감정보 없는 로그 파일로 시작하는 게 낫다. Headroom이 어느 입력을 얼마나 줄였는지 headroom stats로 보고, 같은 작업을 Headroom 없이 실행했을 때와 비교해야 한다.

운영 관점에서는 세 가지를 기록하면 된다. 첫째, 도구 호출 수가 줄었는가. 둘째, 입력 토큰이 줄었는가. 셋째, 최종 답변이나 diff 품질이 떨어지지 않았는가. 이 세 가지 없이 “느낌상 빨라졌다”로 끝내면 나중에 디버깅할 때 감정문학이 된다.

사용법 2: 프록시로 앱이나 API 앞에 붙이기

두 번째 방식은 프록시다. README는 headroom proxy --port 8787을 예시로 든다. 이 방식은 앱 코드 전체를 고치기 어렵거나, OpenAI-compatible client 앞단에 중간 계층을 두고 싶은 경우에 맞다.

pip install "headroom-ai[proxy]"

headroom proxy --port 8787

프록시 방식의 장점은 적용 범위가 넓다는 점이다. 앱이 모델 provider로 요청을 보내기 전에 Headroom이 입력을 압축하고 통계를 남길 수 있다. API를 직접 호출하는 사이드 프로젝트, LangChain/Agno/Strands 같은 프레임워크, ASGI 앱 미들웨어까지 연결 가능성이 열린다.

하지만 프록시는 디버깅 지점도 하나 더 만든다. 요청이 앱에서 바로 provider로 가지 않고 Headroom을 거치므로, 장애가 생기면 앱 문제인지, 프록시 설정 문제인지, provider 문제인지 나눠 봐야 한다. 로컬 smoke에서도 첫 proxy 기동 때 Hugging Face 쪽 tokenizer/model 파일을 확인하고 내려받는 과정이 있었다. 따라서 회사 환경이나 느린 네트워크에서는 “설치 후 바로 1초 만에 켜진다”로 가정하면 안 된다.

특히 회사 업무에서는 base URL, 인증, 로깅, 민감정보 저장 위치를 먼저 문서화해야 한다. telemetry도 기본값을 확인해야 한다. 테스트에서는 HEADROOM_TELEMETRY=off--no-telemetry를 붙이는 편이 깔끔하다.

내 기준으로 프록시는 “개인 실험 2단계”다. 첫 단계는 wrap으로 특정 에이전트에 붙여 효과를 보고, 두 번째 단계에서 프록시로 넓힌다. 처음부터 모든 API 호출을 프록시에 태우면 절감 효과는 빨리 보일 수 있지만, 문제가 생겼을 때 되돌리는 길도 같이 설계해야 한다.

사용법 3: MCP 도구로 붙이기

세 번째 방식은 MCP다. 공식 README는 MCP-native 사용자를 위해 headroom mcp install을 제시하고, headroom_compress, headroom_retrieve, headroom_stats 도구를 언급한다. MCP를 이미 쓰는 Claude Code, Cursor, Codex류 워크플로라면 이 모드가 꽤 자연스럽다.

pip install "headroom-ai[mcp]"

headroom mcp install

MCP 방식의 장점은 에이전트가 압축과 원본 조회를 도구처럼 쓸 수 있다는 점이다. 긴 JSON 출력이나 로그를 바로 모델에 밀어 넣는 대신, 먼저 압축하고 필요하면 retrieve를 호출하는 구조를 만들 수 있다. 특히 MCP 도구 출력이 자주 길어지는 팀에는 관심 가질 만하다.

주의할 점은 MCP가 곧 권한 통로라는 것이다. 압축 도구라서 가볍게 보이지만, 결국 에이전트가 로컬 컨텍스트 저장소와 상호작용하는 통로다. 어떤 workspace에서 설치되는지, 어떤 파일을 읽는지, stats와 retrieve가 어떤 범위까지 접근하는지 확인해야 한다.

처음에는 전체 MCP 클라이언트에 붙이기보다, 긴 출력이 반복되는 도구 하나를 대상으로 실험하는 편이 좋다. 예를 들면 테스트 로그, GitHub issue triage, RAG 검색 결과, MCP JSON 출력 같은 구간이다. 압축할 구간을 정하지 않고 도구부터 붙이면, 나중에 “어디서 이득 봤지?”라는 아주 인간적인 혼란이 온다.

사용법 4: Python/TypeScript 앱 안에서 직접 쓰기

네 번째 방식은 라이브러리다. 직접 앱을 만들거나 내부 자동화 코드를 가지고 있다면 compress(messages) 형태로 호출할 수 있다. TypeScript 쪽도 headroom-ai 패키지가 제공된다.

pip install "headroom-ai[all]"
npm install headroom-ai

이 방식은 제어권이 가장 크다. 어떤 메시지를 압축할지, 어떤 로그는 제외할지, 어떤 단계에서 통계를 남길지 앱 코드에서 정할 수 있다. 반대로 구현 책임도 커진다. 프록시나 wrap은 “앞단에 붙인다”에 가깝지만, 라이브러리 방식은 앱 내부 설계에 Headroom을 넣는 일이다.

팀에서 자체 RAG 앱이나 고객지원 에이전트를 만들고 있다면 라이브러리 방식이 의미 있다. RAG chunk가 너무 길거나, tool result가 반복되거나, 고객 대화 history가 비대해지는 경우에 압축 레이어를 명시적으로 넣을 수 있다. 다만 이때는 정확성 평가가 필수다. 비용을 줄였는데 답변 근거가 흔들리면 절감이 아니라 사고 할인권이다.

첫 실험은 이렇게 작게 시작하자

첫 실험의 목표는 “Headroom을 설치했다”가 아니다. “우리 워크플로에서 줄어드는 입력이 있는가”를 확인하는 것이다. 그래서 실험은 작고 반복 가능해야 한다.

1단계는 샘플 작업을 고르는 것이다. 긴 테스트 로그 하나, 긴 MCP JSON 출력 하나, RAG 검색 결과 하나처럼 입력이 분명히 긴 작업을 고른다. 실제 고객 데이터나 회사 비밀은 넣지 않는다. 처음부터 보안 검토를 부르는 데이터로 실험하면 기술 검증보다 결재가 먼저 찾아온다.

2단계는 baseline을 남기는 것이다. Headroom 없이 같은 작업을 실행하고, 걸린 시간, 모델 입력 추정량, 답변 품질, 사람이 다시 확인한 줄 수를 기록한다. 비용 최적화는 전후 비교가 없으면 이야기만 남는다.

3단계는 Headroom을 붙인다. 개인 코딩 에이전트면 headroom wrap claudeheadroom wrap codex가 첫 후보가 될 수 있다. API 앱이면 headroom proxy --port 8787이 후보가 된다. MCP 중심이면 headroom mcp install 후 긴 출력 도구 하나만 대상으로 본다.

4단계는 headroom stats로 savings를 본다. 숫자가 좋다고 바로 production에 넣지 말고, 답변에서 빠진 정보가 없는지 확인한다. 특히 디버깅 로그는 “중요하지 않아 보이는 줄”이 나중에 중요한 줄이 되는 일이 있다. 로그는 원래 배신을 잘한다. 조용하다가 사건 당일에만 존재감을 뽐낸다.

5단계는 raw bypass를 남긴다. Headroom을 거치지 않는 원본 실행 경로가 있어야 한다. 압축 결과가 이상하거나, 답변이 근거를 놓치거나, 로그 재현이 필요할 때 바로 원본을 볼 수 있어야 한다. 비용 절감 도구가 디버깅을 막으면 그건 절감이 아니라 셀프 족쇄다.

내가 다음에 이어서 테스트한다면 실제 볼트 내용이 아니라 합성 로그와 합성 JSON으로 먼저 본다. 예를 들어 반복되는 stack trace, 긴 rg 결과, MCP 도구가 반환하는 큰 JSON을 만들어 가짜 upstream으로 보내고, Headroom stats에 토큰 절감이 찍히는지 보는 식이다. 이렇게 하면 API 비용과 민감정보 노출 없이 압축 엔진만 확인할 수 있다.

실험 항목 Headroom 없이 Headroom 붙인 뒤 볼 지표
긴 테스트 로그 분석 원본 로그 전체 입력 로그 압축 후 입력 토큰, 답변 정확도, 빠진 error line
MCP JSON 출력 분석 JSON 전체 입력 JSON 압축 또는 retrieve 도구 호출 수, 필드 누락 여부
RAG 문서 조각 요약 chunk 전체 입력 chunk 압축 후 입력 근거 보존, 인용 가능성
코드 검색 결과 검색 결과 전체 입력 결과 압축 후 입력 관련 파일 찾는 속도, diff 품질

내 폴더에 붙인다면 첫 순서

내 Obsidian 볼트 같은 큰 폴더라면 처음부터 headroom mcp install이나 --learn, --code-graph를 켜지 않는 편이 낫다. 이 옵션들은 설정 변경, 메모리 기록, 대형 인덱싱으로 이어질 수 있다. 첫날부터 전입신고와 인테리어 공사를 같이 시키면 집주인이 놀란다.

첫 순서는 read-only 확인이다.

python3 -m venv /tmp/headroom-smoke
/tmp/headroom-smoke/bin/python -m pip install "headroom-ai[proxy,mcp]"
/tmp/headroom-smoke/bin/headroom --version
/tmp/headroom-smoke/bin/headroom loc . --exclude-dir .git,node_modules,.venv,__pycache__,files,04.Archive

그다음은 proxy health 확인이다.

HEADROOM_TELEMETRY=off /tmp/headroom-smoke/bin/headroom proxy \
  --host 127.0.0.1 \
  --port 8787 \
  --stateless \
  --no-telemetry \
  --no-subscription-tracking

curl <http://127.0.0.1:8787/livez>
curl <http://127.0.0.1:8787/stats>

여기까지가 1단계다. 이 단계에서는 MCP 설정도 건드리지 않고, 실제 AI 요청도 보내지 않는다. 말 그대로 엔진룸 열고 불 들어오는지만 본다.

2단계에서야 감싸기 테스트를 한다. 이때도 처음에는 --no-mcp, --no-context-tool, --no-serena처럼 자동 등록을 줄이고 시작하는 편이 좋다.

HEADROOM_TELEMETRY=off /tmp/headroom-smoke/bin/headroom wrap claude \
  --no-mcp \
  --no-context-tool \
  --no-serena \
  -- --version

실제 프롬프트 테스트는 API credit, 구독 라우팅, CLI 상태를 확인한 뒤에 해야 한다. 특히 Claude Code subscription과 API credit 경로가 다르게 잡힐 수 있으니, 작은 예산 상한과 짧은 프롬프트로만 시작한다.

언제 쓰면 좋고 언제 넘겨야 하나

Headroom이 잘 맞는 경우는 꽤 명확하다. AI 코딩 에이전트를 매일 쓰고, 로그와 도구 출력이 길고, 같은 repo나 같은 RAG 데이터를 반복해서 읽고, Claude/Codex/Cursor를 번갈아 쓰며 shared memory가 필요할 때다. 이런 환경에서는 컨텍스트 압축 계층이 모델 교체보다 싸고 빠른 개선일 수 있다.

반대로 넘겨도 되는 경우도 있다. 작은 프로젝트에서 짧은 대화만 하고, provider native compaction만으로 충분하고, 로컬 프로세스를 실행할 수 없는 sandbox 환경이라면 굳이 붙일 이유가 약하다. 도구 하나를 추가하면 설정, 로그, 장애 지점도 하나 늘어난다.

특히 회사 업무에서는 “토큰 절감률”보다 “정확성 검증”을 먼저 봐야 한다. Headroom README는 benchmark에서 accuracy preserved를 제시하지만, 우리 업무의 정확성은 별개다. 결제 로직, 보안 이벤트, 고객 데이터, 장애 로그처럼 민감한 작업은 반드시 원본 확인과 사람 리뷰가 붙어야 한다.

내 판단으로 Headroom은 “에이전트 비용을 줄이는 도구”라기보다 “에이전트가 읽는 입력을 관리하는 운영 계층”에 가깝다. 그래서 TECHTAEK식으로 보면 설치법보다 운영표가 중요하다. 어디서 압축하고, 어디서 원본을 보존하고, 어디서 사람이 멈추는지 정해야 오래 쓴다.

기사 숫자는 어떻게 봐야 하나

AI타임스는 더 레지스터 보도를 인용해 Headroom이 누적 70만달러, 약 10억원의 비용 절감 효과와 2000억개 토큰 절감을 제공했다고 전했다. 같은 기사에는 입력 토큰 중 최대 90%가 중복 또는 불필요한 데이터일 수 있다는 설명도 나온다.

다만 2026년 6월 2일 확인한 GitHub README에는 커뮤니티 절감 수치가 60B+ tokens saved로 표시되어 있다. 또 Headroom의 community savings/dashboard 계열 페이지는 별도 집계 화면이라 시점과 페이지에 따라 다른 누적값이 보일 수 있다. 그래서 기사 수치, README 배지, 대시보드 숫자는 서로 같은 표처럼 섞지 말고 각각의 출처가 붙은 변동값으로 봐야 한다.

그래서 본문에서는 특정 누적 절감액을 확정적인 성과처럼 밀기보다, 공식 README의 사용 모드와 벤치마크 표를 중심으로 설명하는 편이 안전하다. “70만달러 절감했다더라”보다 “입력 컨텍스트 압축을 어디에 붙여 검증할까”가 독자에게 더 쓸모 있다.

바로 써먹는 판단표

상황 추천 모드 이유
Claude Code/Codex를 개인 작업에 자주 씀 headroom wrap 적용이 빠르고 stats 확인이 쉬움
자체 앱에서 OpenAI-compatible 호출을 씀 headroom proxy 코드 변경을 줄이고 앞단에서 통제 가능
MCP 도구 출력이 길게 반복됨 headroom mcp install compress/retrieve/stats를 도구로 사용 가능
RAG 앱이나 내부 에이전트 앱을 직접 만듦 Python/TypeScript library 압축 지점을 코드에서 세밀하게 설계 가능
회사 보안 정책상 로컬 프로세스 제한이 큼 보류 도입보다 보안·운영 경계 확인이 먼저
작은 프로젝트에서 짧은 질문만 함 보류 도구 복잡성이 절감 효과보다 클 수 있음
로컬 CLI가 깨져 있음 먼저 수리 Headroom wrap 전에 claude --version, codex --help부터 통과해야 함

도입할 때 자주 하는 실수

첫 번째 실수는 절감률만 보고 바로 실전 repo에 붙이는 것이다. README의 benchmark는 참고할 수 있지만, 내 저장소와 내 로그에서 같은 효과가 난다는 보장은 없다. 첫 실험은 민감정보 없는 샘플에서 해야 한다.

두 번째 실수는 raw bypass를 안 남기는 것이다. 압축 계층을 붙인 뒤 답변이 이상해졌을 때 원본 경로가 없으면 디버깅이 더 어려워진다. 비용을 줄이려다 원인 추적 비용을 키우는 전형적인 패턴이다.

세 번째 실수는 MCP를 단순 플러그인처럼 보는 것이다. MCP는 에이전트가 도구를 호출하는 통로다. headroom_retrieve가 어떤 원본에 접근할 수 있는지, stats가 어디에 쌓이는지, workspace 경계가 어떻게 잡히는지 확인해야 한다.

네 번째 실수는 “로컬 우선”을 “보안 검토 불필요”로 해석하는 것이다. 로컬에 저장되는 원본에도 회사 코드, 고객 로그, 토큰, 개인정보가 섞일 수 있다. 로컬 저장 위치와 보존 정책은 작은 글씨가 아니라 첫 페이지에 둬야 한다.

다섯 번째 실수는 native compaction, 프롬프트 정리, RAG chunk 설계 같은 기본 정리를 건너뛰는 것이다. Headroom은 좋은 압축 계층일 수 있지만, 쓰레기 입력을 예쁘게 압축한다고 좋은 시스템이 되는 건 아니다. 압축은 정리의 대체재가 아니라 정리 이후의 보조 장치다.

FAQ

Headroom은 Claude Code 전용인가?

아니다. 공식 README는 Claude Code, Codex, Cursor, Aider, Copilot CLI 같은 agent wrap을 언급하고, OpenAI-compatible client는 프록시로 연결할 수 있다고 설명한다. Python/TypeScript 라이브러리와 MCP 서버 방식도 있다.

바로 회사 repo에 붙여도 되나?

처음부터 그러는 건 비추천이다. 샘플 repo나 민감정보 없는 로그로 먼저 baseline을 만들고, 압축 후 답변 품질과 원본 retrieve가 제대로 되는지 확인해야 한다. 회사 repo에서는 원본 저장 위치와 보안 정책이 먼저다.

토큰이 얼마나 줄어드나?

README는 workload별 절감률을 제시하지만, 실제 절감률은 입력 종류에 따라 달라진다. 로그와 JSON처럼 반복 구조가 많은 입력은 유리할 수 있고, 이미 짧고 압축된 입력은 이득이 작을 수 있다. 그래서 headroom stats로 직접 비교해야 한다.

정확도가 떨어지면 어떡하나?

그 가능성을 전제로 raw bypass와 원본 retrieve 경로를 남겨야 한다. Headroom의 방향은 원본을 로컬에 보존하고 필요할 때 다시 찾게 하는 것이지만, 팀 업무에서는 최종 diff, 테스트, 사람 리뷰를 생략하면 안 된다.

Headroom과 기존 LLM 프록시는 뭐가 다른가?

일반적인 프록시가 요청 라우팅이나 비용 관제에 집중하는 경우가 많다면, Headroom은 도구 출력, 로그, RAG chunk, 파일, 대화 기록 같은 입력 컨텍스트 자체를 줄이는 쪽에 초점이 있다. 특히 reversible compression과 MCP retrieve가 차별점으로 보인다.

함께 보면 좋은 글

참고 자료