토큰은 새로운 에너지다 — 22살 한국 개발자가 만든 tokscale 이야기
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
너 AI 코딩 에이전트에 얼마 쓰고 있어?
이 질문에 정확한 숫자로 답할 수 있는 사람이 몇이나 될까. Claude Code, Cursor, Codex CLI, Gemini CLI, Copilot, opencode — 매일 두세 개는 돌리는 나도 “어… 아마 2만 토큈가?” 수준이었다. 근데 그냥 궁금한 정도였지, 실제로 측정하려고 든 적은 없었다.
그런데 4.4k 스타를 받은 오픈소스 프로젝트가 있다. tokscale. AI 코딩 에이전트 30개 이상의 토큰 사용량을 추적하는 CLI다. Rust로 작성했고, Ratatui 기반 TUI가 예술이다. 그리고 이걸 만든 사람은 서울에 사는 22살 한국 개발자, Junho Yeo.
이 글에서는 tokscale이 왜 필요했는지, 어떻게 만들어졌는지, 그리고 이 프로젝트가 AI 코딩 생태계에 던지는 메시지를 풀어본다.
돌아보면 다 답이 있었다
Junho Yeo의 이력은 “이 사람이 이걸 왜 만들었을까”에 대한 완벽한 배경지식이다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.
- 22살, 서울 거주
- Threads 출시 12시간 만에 리버스 엔지니어링해서 Threads API (1.6k 스타) 만들었다가 Meta에서 Cease & Desist 받음
- 토스에서 프론트엔드 개발자로 일함
- Aleph라는 블록체인 스타트업 Co-Founder/CTO로 $1.2M+ 투자 유치
- JUNCTION ASIA 2025 1등 (Pagemate — 고령층 디지털 격차 해소 AI 에이전트)
- George Hotz가 연 Twitter 검색 챌린지에서 Hotz가 “my favorite one”이라고 극찬한 제출물
- 지금은 tokscale과 Contrabass (OpenAI Symphony의 Go 구현체)를 만들고 있음
패턴이 보인다. “빌리고 싶으면 바로 만든다.” Threads API도, 토큰 트래커도, AI 에이전트 오케스트레이터도. “이거 있으면 좋겠다” → “없네? 만들자.” 이 단순함이 4.4k 스타를 만들었다.
토큰은 새로운 에너지다
tokscale의 핵심 통찰은 제목에 다 담겨있다. Tokscale = Token + Kardashev scale.
Kardashev scale은 천체물리학자 니콜라이 카르다쇼프가 제안한 문명의 척도다. 문명이 얼마나 많은 에너지를 사용하는지에 따라 Type I, Type II, Type III으로 나눈다. Type I은 행성 전체의 에너지를, Type II는 항성 전체를, Type III는 은하 전체의 에너지를 사용하는 문명이다.
Junho의 비유: AI 시대에서 토큰은 새로운 에너지다. 우리는 토큰을 태워서 추론하고, 생산성을 올리고, 창의적인 결과물을 만든다. 그런데 “내가 지금 Type I인지 Type II인지” 측정할 도구가 없었다.
tokscale이 그 측정기를 만든 것이다.
30개 에이전트를 하나로
tokscale이 지원하는 플랫폼을 보면 AI 코딩 에이전트 생태계의 전장 지도가 보인다.
- CLI 에이전트: OpenCode, Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Kimi CLI, Qwen CLI, Pi, Amp, Codebuff, Droid, OpenClaw, Gajae-Code, Pi, Mux, Kilo, Crush, Goose, Grok Build, ZCode, Junie, Command Code, MiMo Code
- IDE 에이전트: Cursor, Roo Code, Kilo, Kiro, Cline, Zed Agent
- 데스크톱/엔터프라이즈: Devin CLI, Devin Desktop, Trae, Warp/Oz, Antigravity
이 각각이 제각각의 데이터 형식, 저장 위치, 파싱 방식을 가진다. OpenCode는 SQLite, Claude Code는 JSON 프로젝트 파일, Codex는 JSONL, Cursor는 API 캐시 CSV, Copilot은 OTel JSONL… 통합의 악몽이다.
tokscale의 Rust 네이티브 코어는 이 모든 형식을 병렬로 스캔하고 파싱한다. SIMD JSON 파싱으로 약 10배 빠른 처리 속도를 낸다고 한다. bunx tokscale@latest 한 줄이면 끝.
디자인 결정의 연속
tokscale의 README와 DESIGN.md를 읽으면서 눈에 띈 결정들을 정리했다.
| 결정 | 선택 | 이유 |
|---|---|---|
| 코어 언어 | Rust (네이티브 바이너리) | 10배 빠른 처리, SIMD JSON 파싱, 크로스플랫폼 |
| CLI 배포 | npx/bunx (npm alias 패키지) | 제로 설치, Rust 바이너리가 npm으로 자동 다운로드 |
| TUI 프레임워크 | Ratatui (Rust) | 제로 플리커 렌더링, 키보드/마우스 네비게이션, Charm 생태계 |
| 가격 데이터 | LiteLLM + OpenRouter fallback + Cursor 하드코딩 | 최신 모델 가격 자동 반영, 퍼지 매칭으로 미등록 모델 커버 |
| 사회적 기능 | GitHub OAuth 로그인, 리더보드, 퍼블릭 프로필, 3D 기여도 그래프 | “게이미피케이션”이 아니라 실제로 경쟁하고 공유하도록 |
| 데이터 소스 | 로컬 파일만 읽음 (클라우드/서버 불필요) | 프라이버시, 오프라인 동작, 빠른 최초 사용 |
Slice 1: 리버스 엔지니어링으로 시작된 커리어
Junho의 첫 번째 바이럴 프로젝트는 Threads API였다. Meta가 Threads를 출시한 지 12시간 만에 리버스 엔지니어링해서 API 클라이언트를 만들었다. 1,500개가 넘는 스타를 받았지만, Meta의 Cease & Desist를 받고 프로젝트를 내렸다.
이 이야기가 중요한 이유는 Junho의 접근법을 보여주기 때문이다. “공식 API가 없네? 만들면 되지.” 이 마인드셋이 그대로 tokscale로 이어졌다. “통합 토큰 트래커가 없네? 만들면 되지.”
Slice 2: 문제의 크기를 인식하는 것부터
AI 코딩 에이전트 시장은 2024-2025년에 폭발적으로 성장했다. Claude Code가 CLI 에이전트의 기준을 만들었고, OpenCode가 오픈소스 대안이 되었고, Codex CLI, Cursor, Gemini CLI 등이 각자의 생태계를 형성했다.
근데 이 모든 도구를 쓰는 개발자가 생겼다. 나도 그렇다. OpenCode로 메인 세션, 필요하면 Claude Code로 복잡한 리팩토링, Cursor로 프론트엔드 작업. 그럼 내 총 토큰 사용량은? 어느 도구에 가장 많이 쓰고 있나? 아무도 몰랐다.
Junho가 이 문제를 처음 인식한 건 자신의 AI 코딩 사용량을 추적하려다가였다. 각 에이전트가 자체 저장소에 데이터를 쌓는데, 형식이 다 다르고, 위치가 다 다르고, 심지어 같은 에이전트도 버전마다 바뀐다. 이걸 하나로 모으는 건 쉬운 일이 아니었다.
Slice 3: Rust로 갈아엎기
초기 tokscale은 Node.js로 시작했을 것이다. 근데 금방 한계에 부딪혔다. 수백만 개의 토큰 로그를 파싱하고 집계하는 일은 JS의 영역이 아니었다.
그래서 Rust 네이티브 코어로 완전히 갈아엎었다. 모든 파싱과 집계를 Rust에서 처리하고, JS 레이어는 CLI 인터페이스만 담당한다. bun run build:core 한 방이면 끝. 결과는 약 8.5배에서 10배 빠른 처리 속도.
배포는 npm alias 패키지로 했다. 사용자는 bunx tokscale@latest 한 줄이면 되고, 내부적으로 네이티브 바이너리를 플랫폼에 맞춰 자동 다운로드한다. 제로 설치, 제로 설정.
Slice 4: TUI가 왜 중요한가
CLI 도구에서 TUI는 사치처럼 보인다. 근데 tokscale의 Ratatui TUI를 보면 생각이 바뀐다.
- 6개 뷰: Overview, Models, Daily, Hourly, Stats, Agents
- GitHub 스타일 기여도 그래프 (설정 가능한 12개 컬러 테마)
- 키보드/마우스 완벽 지원: ←/→로 탭 이동, ↑/↓로 리스트 탐색, Enter로 상세보기
- 실시간 필터링: 클라이언트별, 날짜별, 그룹별 집계
- 자동 리프레시: Shift+R로 토글, +/-로 간격 조절
이 TUI가 중요한 이유는 데이터를 보는 경험 자체가 가치를 만든다는 점이다. “어 이거 예쁘네” → “한번 더 써볼까” → “매일 확인하는 습관”으로 이어진다. 좋은 도구는 사용자를 만든다.
Slice 5: 리더보드와 3D 그래프
tokscale의 “소셜” 기능이 재미있다. tokscale submit 한 줄로 리더보드에 사용량을 제출할 수 있고, 퍼블릭 프로필이 생성된다. 3D 기여도 그래프는 마치 GitHub 잔디밭의 3D 버전 같다.
여기서 Junho의 또 다른 통찰이 드러난다. “경쟁은 가장 강력한 동기부여다.” 토큰 사용량을 추적하는 걸 넘어서, 사람들이 자발적으로 공유하고 비교하게 만든 것. 리더보드가 있으면 “아, 나 오늘 10만 토큰이나 썼네. 저 상위권은 도대체 뭐하는 사람들이지?” 같은 대화가 생긴다.
Drewgent와의 연결점
이 글을 쓰는 지금 내 상황을 돌아보면, tokscale이 왜 의미있는지 더 선명해진다.
Drewgent는 opencode를 메인 에이전트로 사용한다. flash/pro/max 모델 라우팅으로 비용을 최적화하고, 주당 약 $10 정도 쓴다. 근데 이건 opencode DB에서 직접 쿼리해서 얻은 숫자다. tokscale이 있었다면 한 줄이면 됐을 텐데.
더 중요한 건 다중 에이전트 환경에서의 통합 추적이다. Drewgent는 opencode 외에도 GJC Coordinator, 각종 subagent 등을 쓴다. 이 모든 채널의 토큰 사용량을 하나로 모아보면 “어? flash 모델인데 왜 이렇게 많이 나가지?” 같은 패턴을 발견할 수 있다. tokscale이 정확히 그 지점을 노리고 있다.
그냥 만들어라
이 글을 준비하면서 가장 인상 깊었던 건 Junho의 GitHub bio다.
“Sometimes a designer and dreamer, I just like to build—or hack things.”
“I love starting something right away when I have an idea.”
이 단순함이 Threads API를 만들게 했고, Contrabass를 만들게 했고, tokscale을 만들게 했다. 복잡한 시장 분석, 경쟁사 조사, PMF 찾기 같은 게 전혀 없다. 그냥 “이거 있었으면 좋겠다” 싶으면 만든다. 그리고 세상은 거기에 반응한다.
4.4k 스타, 1.6k 팔로워, 30개+ 에이전트 지원. 이 모든 게 “그냥 만들어보자”에서 시작됐다.
토큰은 새로운 에너지다. 그리고 그 에너지를 측정하는 첫 번째 도구를 22살 한국 개발자가 만들었다. 이게 우리가 살고 있는 시대다.
tokscale: bunx tokscale@latest
GitHub: github.com/junhoyeo/tokscale
Junho Yeo: junho.io
참고: 이 글에서 다루지 않은 Contrabass(OpenAI Symphony Go 구현체)도 Junho의 프로젝트다. AI 에이전트 오케스트레이션에 관심 있다면 같이 보길 추천한다.