<div align="center">
<img src="https://raw.githubusercontent.com/pandev-metriks/pandev-cli/HEAD/assets/hero.png" alt="pandev — what your AI coding agents actually cost" width="830">
AI 코딩 에이전트가 실제로 비용을 얼마나 발생시키는지 분석합니다 — 작업(task), 브랜치(branch), 모델(model) 및 파일별로 세분화하여 보여줍니다.
사용자 장치에서 실행됩니다. 계정 연결이나 원격 측정(telemetry) 전송은 없습니다 — 사용자 로그는 절대 노트북을 벗어나지 않습니다.
npm
platforms
license
pandev-metrics.com/cli · npm · 개인 정보 보호 주장 검증 방법 · 변경 로그(Changelog)
</div
[!TIP]
Stable 버전이 출시되었습니다. npx pandev는 macOS (Apple Silicon 및 Intel)와 Linux x64에서 현재 릴리스 버전을 실행하며, 설치 단계나 추가 설정이 필요 없습니다. 파서는 실제 로그를 기반으로 검증됩니다. 더 최신 기능을 조금 더 빨리 사용하고 싶다면? npx pandev@beta가 베타 채널을 추적합니다.
<details>
<summary><b>Windows</b> — npm 패키지는 아직 게시되지 않았습니다. PowerShell에서 설치 프로그램을 사용하세요.</summary>
<br>
iwr https://raw.githubusercontent.com/pandev-metriks/pandev-cli/main/install-experimental.ps1 -UseBasicParsing | iex
설치되는 명령어는 pandev cost입니다.
</details>
<div align="center">
<img src="https://raw.githubusercontent.com/pandev-metriks/pandev-cli/HEAD/assets/compare.png" alt="pandev 없이: 총액 2,140달러가 제공업체 콘솔에 표시됩니다. pandev 사용 시: 동일한 2,140달러를 작업별(task) — PAY-1204 $842, AUTH-88 $488, INFRA-31 $301 — 그리고 각 작업 내 프롬프트(prompt)별로 세분화하여 보여줍니다." width="830">
</div
<img src="https://raw.githubusercontent.com/pandev-metriks/pandev-cli/HEAD/assets/section-task.png" alt="01 · 어떤 작업이 얼마의 비용을 발생시키는지" width="830">
문제점 (The problem)
에이전트는 토큰당 비용을 청구합니다. 사용자의 작업은 여러 개의 작업(tasks)으로 구성되어 있습니다. 이 둘을 연결해 주는 것이 없습니다.
이 분야의 모든 도구는 *세션(sessions)*을 보고합니다: “어제 $61를 사용했습니다.” 한 번 유용할 뿐입니다. 실제로 필요한 질문, 즉 어떤 작업이 비용이 많이 들었고, 그 이유는 무엇인지에 대해서는 결코 답하지 못합니다.
<div align="center">
<img src="https://raw.githubusercontent.com/pandev-metriks/pandev-cli/HEAD/assets/by-task.png" alt="pandev task: cost, call count, days and git branch for each ticket, with the unattributed remainder stated openly" width="720">
</div>
어떤 작업이 얼마의 비용을 발생시켰는가
위 표가 바로 그것이며, 이 도구의 핵심입니다.
마지막 줄에 주목하세요. 저장소 외부에서 발생했거나 이름에 티켓 키(ticket key)가 없는 브랜치에서 발생한 작업은 귀속될 수 없습니다. 따라서 이를 단순히 여러 작업에 분산시켜 표를 완성하는 대신, 자체적인 숫자로 보고합니다. pandev task는 이 잔여분을 프로젝트별로 세분화하여 보여주기 때문에, 추측할 필요 없이 그 구성 내용을 확인할 수 있습니다.
이것을 정확하게 파악하는 것은 생각보다 어렵습니다. Claude Code는 브랜치 이름 대신 로그에 HEAD를 작성합니다. 예외 없이 모든 이벤트가 그렇습니다. 이러한 로그에서 순진하게 만든 작업별 숫자는 틀렸으며, 심지어 매우 많이 틀립니다: 저희 자체 데이터에서는 단일 작업이 과대평가되어 70배나 나왔습니다.
pandev는 git reflog를 통해 각 타임스탬프의 실제 브랜치를 재구성합니다. 이 재구성이 바로 위의 숫자가 읽을 가치가 있게 만드는 요소입니다.
<img src="https://raw.githubusercontent.com/pandev-metriks/pandev-cli/HEAD/assets/section-prompt.png" alt="02 · Which prompt cost what" width="830">
다음 단계: 해당 작업 내의 어떤 프롬프트가 비용을 발생시켰는가
비용이 많이 든 작업을 선택하고 그 안을 들여다보세요.
<div align="center">
<img src="https://raw.githubusercontent.com/pandev-metriks/pandev-cli/HEAD/assets/task-detail.png" alt="pandev task WEB-812: active time, prompt count, models used, and every prompt with its own cost and call count" width="720">
</div>
특정 프롬프트가 전체 작업의 38%를 차지했습니다. 이것이 바로 실행 가능한 단위입니다. 날짜도 아니고, 세션도 아니며, 당신이 요청한 구체적인 내용과 그것에 답변하는 데 드는 비용을 의미합니다.
또한 총계에서는 알 수 없는 정보들, 즉 벽시계 시간 대비 실제(active) 작업 시간이 얼마나 걸렸는지, 어떤 모델이 실제로 작업을 수행했는지, 어느 에디터에서 실행되었는지, 그리고 각 파일이 몇 번의 라운드를 거쳤는지를 확인할 수 있습니다.
프롬프트 텍스트는 로컬 로그에서 직접 읽어와 출력합니다. 이는 절대 저장되거나 전송되지 않으니 개인정보 보호(Privacy)를 확인해 주세요.
<img src="https://raw.githubusercontent.com/pandev-metriks/pandev-cli/HEAD/assets/section-volume.png" alt="03 · 부하가 어디로 가는지" width="830">
그리고 그 아래: 부하가 어디로 가는지
<div align="center">
<img src="https://raw.githubusercontent.com/pandev-metriks/pandev-cli/HEAD/assets/summary.png" alt="pandev 요약: 구독 가격 대비 상환 배수, 그리고 토큰 볼륨이 실제로 어디로 가는지 — 캐시 읽기(cache reads), 캐시 쓰기(cache writes), 신규 입력(fresh input), 출력(output)" width="720">
</div>
캐시 읽기, 캐시 쓰기, 신규 입력, 출력이 네 가지 다른 비용입니다. 보기만 해도 충격적인 청구서는 보통 캐시 읽기 때문이며, 이를 해결하는 방법은 작업량을 줄이는 것이 아니라 프롬프트를 변경하는 것입니다. 단일 총계만으로는 이 모든 것을 파악할 수 없습니다.
API 결제 방식이 아닌 구독(subscription)을 사용 중이라면, 동일한 화면에서 API 요금 기준으로 사용량이 얼마였을지 알려줍니다. 이는 플랜이 스스로 비용을 지불하는지 여부를 알 수 있는 유일하게 정직한 방법입니다.
<img src="https://raw.githubusercontent.com/pandev-metriks/pandev-cli/HEAD/assets/section-dashboard.png" alt="04 · 북마크에 저장된 당신의 숫자들" width="830">
대시보드: 북마크에 저장된 당신의 숫자들
pandev web은 위 모든 내용을 **http://127.0.0.1:4976**에서 라이브 대시보드로 제공하며 (루프백 전용 — 외부에서는 보이지 않으며, 포트가 사용 중이면 4985로 이동합니다), 이를 브라우저에 열어줍니다. 숫자는 방문할 때마다 로그에서 새로고침됩니다.
<div align="center">
<img src="https://raw.githubusercontent.com/pandev-metriks/pandev-cli/HEAD/assets/dashboard.png" alt="pandev 대시보드: API 요금으로 지출액, 구독 상환 비용, 캐시 적중률(cache hit rate), 작업 할당(task attribution), 모델별 일일 지출액, 그리고 세 가지 할당 렌즈" width="720">
</div>
터미널에서 사용했던 세 가지 렌즈(task, branch, project)와 동일하게 모든 프롬프트에 비용이 책정됩니다.
<div align="center">
<img src="https://raw.githubusercontent.com/pandev-metriks/pandev-cli/HEAD/assets/dashboard-tasks.png" alt="pandev 대시보드: task별 비용과 branch 칩, 그리고 하나의 task에 대한 상세 정보 — 활성 시간(active time), 벽 시계 시간(wall clock), 프롬프트(prompts), 모델 호출(model calls), 도구 호출(tool calls), 파일(files)" width="720">
</div>
<div align="center">
<img src="https://raw.githubusercontent.com/pandev-metriks/pandev-cli/HEAD/assets/dashboard-prompts.png" alt="pandev 대시보드: task 내부의 모든 프롬프트와 그 자체 비용, task 대비 비중, 호출 횟수(call count), 도구 개수(tool count)" width="720">
</div>
알아두면 좋은 두 가지 사항이 있습니다:
- 로그인 시에도 확인할 수 있습니다.
pandev autostart on은 사용자 레벨 로그인 항목(macOS의 launchd, Linux의 systemd user unit)을 등록하여 사용자가 로그인할 때 대시보드 서버를 시작하고 열어줍니다. 첫 번째 상호작용 실행에서 자동으로 이 기능을 제공하며 알려주며, pandev autostart off로 한 번의 명령으로 모든 흔적을 제거할 수 있습니다. 해당 페이지를 북마크(⌘D / Ctrl+D)해 두면 몇 번의 키 입력만으로 사용 비용을 확인할 수 있습니다.
- 완전히 오프라인으로 사용할 수도 있습니다.
~/pandev-cost.html이라는 단일 독립 파일이며, 네트워크 요청을 전혀 하지 않습니다. 여기에 프롬프트 텍스트가 포함되어 있으므로, 출처가 된 로그처럼 취급하세요.
<img src="https://raw.githubusercontent.com/pandev-metriks/pandev-cli/HEAD/assets/section-commands.png" alt="05 · 모든 명령어" width="830">
명령어 (Commands)
| |
|---|
npx pandev | 지난 14일간의 요약 정보 |
| ... | |
추가로 --json을 어떤 명령어에도 붙여 기계가 읽을 수 있는 출력을 얻거나, --days N으로 기간을 변경하고, --no-open으로 브라우저에 접근하지 않고 대시보드를 서비스할 수 있습니다. | |
<img src="https://raw.githubusercontent.com/pandev-metriks/pandev-cli/HEAD/assets/section-privacy.png" alt="06 · 이 기계를 벗어나지 않습니다" width="830">
개인 정보 보호 (Privacy)
이 도구는 사용자의 에이전트 로그를 읽습니다. 이 로그에는 프롬프트, 코드 조각, 그리고 때로는 비밀 정보가 포함되어 있습니다. 저희의 말이라 할지라도, 그 내용물이 어떻게 되는지에 대해서는 누구의 말도 믿어서는 안 됩니다.
따라서 명확히 말씀드립니다:
- 바이너리에서 외부 네트워크 호출 없음. 원격 측정(telemetry), 분석(analytics), 계정 정보가 없습니다. 로그인할 것도 없고, 데이터를 전송하는 기능도 없습니다.
- 대시보드 서버는 루프백 전용입니다.
pandev web은 127.0.0.1:4976에서 리스닝하며 사용자의 브라우저에만 응답합니다. 네트워크를 통해 접근할 수 없으며, 외부로 데이터를 보내지 않습니다.
- 익명 버전 확인은 한 번만 이루어집니다 — 바이너리가 아닌 브라우저에서. 서비스되는 대시보드 페이지는 최신 릴리스 정보를 알려주기 위해
registry.npmjs.org에 최신 버전 번호를 요청합니다. 이때 데이터가 함께 전송되지는 않으며, 오프라인 파일 복사본은 심지어 이 과정도 거치지 않습니다.
- 로그인 항목은 선택적이며 투명합니다. 첫 번째 대화형 실행 시 대시보드-로그인 서비스가 활성화되며 그 사실을 일반 텍스트로 알려주고,
pandev autostart off를 사용하면 이를 완전히 제거할 수 있습니다. 파이프(Pipes), --json, 그리고 CI 환경에서는 이 항목이 트리거되지 않습니다.
- 대시보드 파일(
~/pandev-cost.html, 0600, 소유자 전용)과 — 자동 시작이 켜져 있는 경우 — 로그인 항목 자체를 제외하고는 아무것도 기록되지 않습니다.
npx pandev privacy를 실행하면 무엇을 읽고 어떤 정보가 가져가지는지에 대한 전체 목록이 출력됩니다.
그리고 저희를 신뢰하지 않고 직접 확인할 수 있는 방법은 다음과 같습니다 — 네트워크 활동은 프로세스 외부에서 관찰할 수 있으므로, 이것이 오픈 소스가 아니더라도 이 주장은 검증 가능합니다: docs/VERIFY.md.
요구 사항 (Requirements)
npx를 사용하려면 Node 20 이상이 필요합니다. 선택적이지만 권장되는 것은 PATH에 git을 설치하는 것입니다 — 이것 없이는 작업별 기여도(per-task attribution) 기능이 비활성화되고 총합만 얻게 됩니다. 대시보드는 로컬호스트의 포트 4976이 비어 있기를 원합니다 (비어 있지 않으면 자동으로 4985까지 증가합니다).
로그를 읽는 위치:
- Claude Code —
~/.claude/projects
- Codex CLI —
~/.codex/sessions
- opencode —
~/.local/share/opencode/opencode.db, 로컬 sqlite3를 통해 읽기 전용으로 접근 가능
- ZCode —
~/.zcode/cli/db/db.sqlite, 로컬 sqlite3를 통해 읽기 전용으로 접근 가능
그 외의 내용은 스캔되지 않습니다.
팀 단위 작업 시?
이 도구는 의도적으로 단일 사용자(single-player)용입니다. 사용자의 장치에 있는 내용을 읽고 사용자의 작업에 대한 질문에 답합니다.
만약 질문이 "팀 전체에서 어떻게 비교되는가", "어떤 프로젝트가 가장 많은 자원을 소모하는가", 또는 "AI가 실제로 티켓당 얼마의 비용을 발생시키는가"와 같은 내용으로 바뀐다면, 그것은 PanDev Metrics이며, 다른 제품입니다.
라이브 데모 예약하기 — 또는 npx pandev team을 실행하십시오.
라이선스 (License)
독점적(Proprietary)입니다. LICENSE를 참조하십시오. 직장 내 장치를 포함하여 사용자가 소유하거나 통제하는 장치에 설치하고 실행하는 것은 무료입니다. 재배포, 수정 및 파생 작품은 허용되지 않습니다.
비용 수치는 공개된 제공업체 요금표를 기반으로 계산된 추정치입니다. 이는 청구서가 아닙니다. 사용자의 제공업체 자체 청구 내역과 대조하여 조정하십시오.
<div align="center">
<sub>제작: <a href="https://pandev-metrics.com">PanDev</a> · <a href="https://pandev-metrics.com/cli">pandev-metrics.com/cli</a> · <a href="https://www.npmjs.com/package/pandev">npm: pandev</a> · <a href="https://pandev-metrics.com/book">팀 데모</a> · 버그를 발견했습니까? <a href="../../issues/new/choose">이슈 열기</a></sub>
</div>