LLM Usage Tracker: Claude Code와 Codex 사용량 기록하기
최근 블로그를 개편하고 글 작성 도구도 만들면서 코딩 에이전트에 익숙해져가고 있다. 코딩 에이전트에 익숙해져 가면서 사람들이 이야기하던 것을 나도 몸으로 체감하고 있다.
시작은 블로그 개편이었지만 뭔가 만들기 시작하니까 추가적으로 만들고 싶은 아이디어가 생기고 있고 오랜만에 다시 사이드 프로젝트를 하는 느낌이 꽤 좋다.(몸이 힘들 뿐...)
다른 사람들이 토큰을 어느 정도 사용했다고 올리는 글을 보면서, 문득 “나는 토큰을 얼마나 사용하지?”라는 생각이 들었다. ccusage나 CodexBar로 어느 정도 통계를 볼 수 있고 공식 도구에서도 확인할 수 있지만, 도구마다 차이가 있어 일관된 방법으로 보고 싶었다. 작업하면서 현재 리밋이 얼마나 남았는지 보거나 오늘 얼마나 사용했는지 확인하는 데는 기존 도구로도 문제가 없다. 하지만 막상 기록하고 싶다고 생각하니, 더 오랜 기간 기록해 6개월 뒤에는 지금과 비교해 토큰 사용량이나 패턴이 얼마나 달라졌을지 궁금했다. (사용 여부와 상관없이 나는 기록에 집착하는 편이다.)
LLM Usage Tracker
이 프로젝트는 Codex GPT-5.5로 주로 만들었다.
claude, codex, gemini의 토큰 사용량을 한곳에서 추적할 수 있는 서비스를 만들고 싶습니다. 개인 사용 목적입니다.
claude, codex, gemini의 API로 토큰을 얼마나 사용하고 있는지 어디까지 조회할 수 있는지 조사해 주세요.
- 일별, 시간별 usage. 이게 있으면 주간 월간 통계도 쉽게 낼수 있습니다. 토큰을 어디서 사용했는지, 예를 들면 어떤 맥북인지, 어떤 프로젝트인지, 어떤 프로그램인지,
- Codex, Claude Code, Antigravity 같은 코딩 에이전트인지, 다른 프로그램으로 사용한 것인지도 식별할 수 있는지? 사용 모델 종류, 토큰 usage가 모델별로 볼 수 있으면 더 좋습니다.
- cladue와 codex는 fast모드라는 속도가 더 빠른 모드를 사용할 수 있습니다. 이걸 사용했을 때의 기준 등
- ccusage 토큰을 달러로 환산할 수 있는지와 그 기준이 무엇인지?
회사 업무에서는 좀 더 상세한 내용을 적거나 계획을 함께 잡으며 진행하는 편이지만, 이건 사이드 프로젝트라 대충 요구사항을 던졌다. 적당히 대화를 주고받으며, 이미 사용 중인 ccusage와 CodexBar가 오픈소스라 두 프로젝트를 참고해 설계를 잡아 갔다.
데이터는 모두 로컬에 있고, 이를 중앙에 모으는 것이 목표였다. 그래서 로컬에서는 가벼운 collector를 실행해 서버로 데이터를 전송하고 SQLite에 저장하도록 Node.js로 만들었다.

데이터를 수집하고 필터링할 수 있는 기본적인 기능이 만들어졌다. 무엇을 만들지 머릿속에 모두 정해 둔 상태에서 만드는 것보다, 디자인을 적용해 사용해 보며 기능을 추가하는 편이 나을 것 같아 디자인 시안을 만들게 했다. (따로 디자인 도구를 연결하지는 않았다.)
(Codex) 시안은 이렇게 나눴습니다.
A. Operations Console: 매일 보는 기본 운영 화면. 필터, 컬렉터 상태, KPI, usage row가 균형 있게 보입니다. B. Provider Analysis: provider/model 비교 중심. “어디서 많이 썼는가”를 보기 좋습니다. C. Dense Ledger: 테이블 중심의 고밀도 화면. 실제 사용량 추적 도구로 오래 쓸 때 가장 실용적인 방향입니다.



적당한 시안이 나왔지만 딱히 맘에 들지는 않았다. 디자인은 원래도 어려웠는데 AI에서도 나는 아직 어렵다. (디자인쪽 잘하는 것도 연습해야 되는데...)
그래서 v0로 갔다. Vercel을 좋아하면서도 v0는 Vercel 느낌이 강하다고 느낀다. 그래도 한 번 써 보고 싶어서 현재 개발 중인 디자인 없는 사이트의 스크린샷을 주고 디자인해 달라고 했다.


역시 Vercel 느낌으로 나왔는데 아무래도 제품쪽으로 많이 깎은 서비스라서 Codex가 만들어준 시안보다는 훨씬 맘에 들었다. 그래서 이 시안을 던지고 디자인을 적용해 달라고 했다.
토큰 사용에는 입력·출력·캐시 토큰이 있어 계산이 복잡하다. 다른 오픈소스를 참고해 로직을 파악했고, 정액제를 사용 중이지만 대부분의 프로그램이 비용을 계산해 보여주므로 나도 비용을 볼 수 있게 만들었다. 사실 조금만 써도 정액제 요금보다 큰 비용으로 계산되지만, 정액제 비용도 적지 않으므로 낸 만큼 잘 쓰고 있는지 파악하려면 비용 추적도 필요했다.

어느정도 작업이 된 후에는 실제 데이터를 누적으로 쌓을 필요가 있어서 Railway에 배포했다. 평소 써보고 싶긴 했지만 사용할 일이 없었다가 이번 기회에 한번 사용해 보게 되었다. free trial이 끝나고 난 뒤에는 결국 $5 플랜을 결제했다. 혼자 쓰는 용도지만 결국 어딘가에는 배포해야 하니 배포 플랫폼 구독도 늘어난다. 지금은 다양한 서비스를 구경하고 경험하는 재미가 있지만, 결국에는 홈 서버를 구축해 운영하게 되지 않을까 생각했다.
서버에 배포하면 누구나 접속할 수 있으므로 Google 로그인을 연결했다. 서버 자체는 퍼블릭이지만 특정 이메일로만 로그인되도록 해서 Google로 로그인 하도록 구성했다. 이런 구성도 어떤게 더 편하고 유용할지 다양하게 테스트해볼 예정이다.
사용해보면서 데이터가 이상하거나 불편한 것들을 하나씩 수정하면서 개선했는데 데이터 누적을 위해서 원격 서버를 구성했지만 한편으로는 개발이 불편한 부분도 생기기 시작했다. 개발은 로컬에서 하다 보니, 실제 데이터를 덤프 떠서 테스트할 수 있도록 스냅샷 다운로드 기능을 만들었다. 또 에이전트가 배포된 서비스를 직접 확인하고 수정할 수 있도록 로그인을 우회하는 디버깅용 액세스를 임시로 여는 기능도 만들었다. 지금은 좀 최적화했지만 내 생각보다 데이터가 너무 많이 쌓여서 볼륨을 사용하는 디비 용량을 추적하는 사이트를 만들고 혹시 데이터가 잘못되는 경우를 대비해서 S3에 백업하는 기능도 만들었다.

보고 싶은 데이터가 무엇인지 생각하다가, 예전 Google Analytics에서 유용하게 사용했던 요일별, 시간대별 시각화를 적용해 내가 어느 시간에 토큰을 많이 사용하는지 볼 수 있게 했다. 데이터가 더 많이 쌓이면 패턴도 뚜렸해질 것이라고 생각하는데 이 시각화는 계속 고민하고 있다.

추가로 상세 차트를 몇 개 더 만들었다. 제공자별 토큰이나 비용 차트는 종종 보지만, 그 외 차트는 유용성이 높지 않아 고민 중이다. 이런 차트를 만들 때는 딱 3개나 6개로 맞추고 싶지만 아이디어가 부족하다.

LLM 사용이 늘어나고 사용량을 추적하다 보니 가장 궁금해진 것은 Limit이었다. 매 시간마다 어느정도 리밋이 남고 주간 리밋은 얼마나 남았는지 알게 되곤 하지만 이부분은 시간이 지나면 기억할 수 없으므로 이를 기록하고 싶었다. 마침 리밋도 추적할 수 있다고 해서 데이터로 남기니까 세션별, 주간 리밋을 볼 수 있었고 언제 리셋되는지 파악할 수 있어서 맘에 들었다.

리밋은 플랜에 따라 달라지고, 시간이 지나면 플랜도 계속 바뀔 거라 플랜별로 다르게 표시하고 싶었다. 하지만 이는 추적이 불가능하다고 해서 해당 기간의 플랜이 데이터로 남도록 만들었다. Kakao에서 ChatGPT 프로 플랜을 싸게 팔아서 사용하던게 끝나서 무료로 지낸 며칠까지 잘 기록되었다.

이 구조는 로컬에 Collector를 설치해 두고, 여기서 Claude Code나 Codex가 남기는 세션 데이터를 수집해 원격 서버로 전송하는 방식이다. 그래서 대시보드에서 Collector의 연결여부를 추적할 수 있게 했다.

Usage Detail에는 raw 데이터를 볼 수 있게 했다. 지금은 추적하지 않지만 나중에는 추적해서 봐야할 수도 있고 디버깅 목적으로도 필요해서 raw 데이터도 일단 쌓아두고 있다. 처음에는 데이터 증가폭이 너무 컸지만 어느정도 최적화를 한 뒤에는 적당한 선에서 유지되고 있다.
데이터를 쉽게 볼 수 있어 좋기는 한데, Claude Code와 Codex도 계속 기능을 추가하고 데이터 형식도 변경하기 때문에 지속적인 업데이트가 필요하다는 걸 알게 되었다. 최근 Fable 5와 GPT-5.6이 출시되면서 모델과 비용 추적이 제대로 되지 않아서 수정을 했다. 앞으로도 이런 일은 반복되겠지만 LLM이 원인을 잘 찾아주고 마이그레이션도 잘 해주므로 혼자서 사용하는 목적에는 크게 부담없이 사용하고 있다.
Comments