CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·방탄소년당 ·아이포니앙 ·MaClien ·주식한당 ·일본산당 ·개발한당 ·자전거당 ·이륜차당 ·바다건너당 ·안드로메당 ·클다방 ·AI당 ·소시당 ·노젓는당 ·찰칵찍당 ·가상화폐당 ·VR당 ·물고기당 ·여행을떠난당 ·소셜게임한당 ·걸그룹당 ·달린당 ·패스오브엑자일당 ·골프당 ·콘솔한당 ·나스당 ·캠핑간당 ·개판이당 ·전기자전거당 ·e북본당 ·키보드당 ·육아당 ·3D메이킹 ·X세대당 ·ADHD당 ·AI그림당 ·날아간당 ·사과시계당 ·배드민턴당 ·야구당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·냐옹이당 ·문명하셨당 ·클래시앙 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·디아블로당 ·동숲한당 ·날아올랑 ·갖고다닌당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·IoT당 ·KARA당 ·꼬들한당 ·덕질한당 ·어학당 ·가죽당 ·레고당 ·리눅서당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·방송한당 ·PC튜닝한당 ·그림그린당 ·소풍간당 ·심는당 ·라즈베리파이당 ·품앱이당 ·리듬탄당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·나혼자산당 ·스타한당 ·스팀한당 ·파도탄당 ·퐁당퐁당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·터치패드당 ·트윗당 ·창업한당 ·시계찬당 ·WebOs당 ·위스키당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

팁과강좌

PC/모바일 TOKI - LLM의 사용량 분석을 위한 에코 시스템 4

1
2026-04-17 17:59:54 수정일 : 2026-04-17 18:12:34 1.♡.165.240
korjwl1

logo.png

안녕하십니까?! 이번에 소개해볼 프로젝트는 토끼라는 프로젝트입니다!

Token Inspector에서 따와서 지은 이름으로, 한국 개발자가 만들었다는 느낌도 살리고 싶어서 토끼로 이름을 짓게 되었네요.

그래서 Toki란 무엇이냐? 복잡한 설정 없이 원큐에 설치되며, AI 토큰 사용량을 초저비용으로 실시간 추적하는 로컬 분석 엔진입니다.

개발하게 된 계기는, 회사에서도 ccusage를 통해 재미 삼아 내부직원들끼리 토큰을 얼마나 녹이고 있는지 경쟁도 하는데, ccusage로 인한 컴퓨팅 렉도 심하고 내부 소스 코드를 뜯어보니 절대 전문 개발자가 개발한 것으로는 안 보이더군요...


그래서 개발하게 된 프로그램은 3가지 모듈로, 각각 다른 문제점들을 해결하고 편의성을 제공하고자 하고 있습니다.


1. Toki - https://github.com/korjwl1/toki [멀티 OS]

기존 문제 사항

- CCusage는 아이디어는 재밌고 좋았지만, 매번 모든 세션 파일들을 읽기 때문에 File I/O가 엄청나게 발생하는데, 심지어 그마저도 싱글 스레드로 메모리/cpu 최적화 없이 무지막지하게 동작하기에 hook 등으로 자동연동까지 걸어두면 어느 순간부터 PC가 상당히 렉먹기 시작합니다.

- 멀티스레딩으로 이걸 해결해보고자 하던 프로젝트들은 보이긴 하지만, 인지도도 부족하고, 매번 증분 데이터가 아니라 파일 전체를 읽는데다가, 그냥 CCusage를 단순히 멀티스레딩화 했을 뿐이라 메모리 사용량이 미쳐 날뜁니다.

- OTEL을 사용하면 사용량 집계가 증분으로 가능하긴 한데, 이건 결국 중앙 집계 서버가 있어야하고 설치 과정도 좀 귀찮고, 집계 시작 시점 이전의 데이터는 결국 집계가 불가능하기 때문에 CCusage 같은 프로그램이 사용자층이 있었다고 보고 있었습니다.


해결 방법

- Toki는 크게 보면 2가지 사이클로 동작합니다. Cold-start라고 프로그램 부팅 시 세션 파일을 돌아보면서 데이터를 쌓는 과정, 그 다음에는 idle 상태로 FSevents 등 각 OS의 파일 변화 탐지 이벤트를 받아 증분 데이터만 추출해내는 과정. 내부적으로는 fjall이라는 DB를 다목적 경량 DB로 사용하고 있습니다. (TSDB + NoSQL 역할)

- Cold-start의 경우, Rust의 Rayon을 통해서 효율적으로 멀티 스레딩을 관리하게 설계해두었고, mmap을 통해 File I/O를 최소화하면서 파일 내부는 토큰 사용량이 찍히지도 않는 줄은 아예 스킵, 토큰 사용량이 찍히는 부분도 개인정보보호 및 속도 향상을 위해서 serde_json에서 정확히 토큰 사용량 field를 제외한 모든 문자열을 처리조차 하지 않게 하는 등 가할 수 있는 모든 최적화는 적용해두었습니다.

- Idle 상태 및 2번째 이후의 Cold-start는 모두 fjall의 포인터를 통하여 읽어야할 위치만 읽도록 설계되었습니다. Git에서 사용하는 Rolling HashSum을 응용해서, 마지막으로 읽었던 줄의 정보를 hash값 하나로 저장하고, 비교를 hash로 하여 O(1)이 되도록 한 다음, 이를 파일 끝에서부터 역순으로 탐색하여 만약 compact 등의 과정으로 파일 앞단이 날라가 줄 위치가 바뀌어도 항상 안정적으로 동작하도록 해두었으며, 이로 인해 누락되는 사용량이 존재할 수 없습니다.

- 데이터 집계랑 데이터 조회, 추적 등을 전부 분리시켜 병목현상을 제거하기 위해 도커와 같은 daemon 형식을 취하고 있으며, 이로 인해 쓰기 작업에 동시에 2개 이상이 붙을 일이 없게 만들어 잠시라도 멈추지 않고, 조회 과정이 데이터 집계에 영향을 주지 않습니다.

- 데이터 조회의 경우, 크게 trace, query 방식으로 나뉘는데요, trace는 실시간으로 토큰 사용량 찍히는 것을 바로 전달받을 수 있게하는 기능으로 기존의 otel을 대체하는 기능이라고 보면 됩니다. 이 때, sink를 cout, uds, http 중 하나로 지정해서 사용할 수 있게 하여 다양한 프로그램과의 연동성을 챙겨뒀습니다. 또한, trace 기능은 무조건 1:n crossbeam 구조로 아무리 많은 클라이언트가 붙어도 각자가 데이터 누락 없이 데이터를 받아갈 수 있는데 데몬의 cpu및 메모리 사용량이 증가하는 일이 없도록 억제해두었습니다.

- query 및 report 기능은 기존 ccusage를 대체하는 기능으로, query는 prometheus의 PromQL 기반으로 살짝 수정을 가해둔 문법을 따르며, report는 이를 내부적으로 프리셋을 만들어주고 제공하여 문법을 몰라도 쓰기 쉽도록 개발해두었습니다.


결과

toki demo

bench_cold_start.png


bench_report.png

- 위에서 보이는 것처럼, 기존 ccusage랑 비교 시, cold-start 자체도 M1 맥북 에어 기준 14배 가량 빨라지는데 메모리는 사용량이 거의 없다시피 줄어있으며, idle 상태 진입 시 1714배 이상 빠른 속도를 보여주며, 메모리랑 cpu는 아예 0%에 5MB 정도밖에 안 먹을정도로 가볍습니다.

- ccusage를 Zig + 멀티스레딩 기반으로 개선한 zzusage랑 비교해도 cold-start도 속도가 거의 비슷한데, Toki는 db read/write까지 있는데도 불구하고 속도가 비슷하게 나온다는 점에서 엄청난 최적화라 볼 수 있고, 그럼에도 불구하고 zzusage랑 다르게 메모리 사용량은 거의 없다시피합니다.

- DB도 엄청나게 작은데, 2GB 정도의 세션 데이터가 있을 때 DB사이즈는 60mb 정도로, 개인 PC에서 크게 문제삼지 않을 용량이라 생각합니다.

- 현재는 Codex / Claude 두개를 지원하고 있으며, 나중에 추가해나갈 예정입니다.


2. Toki Monitor - https://github.com/korjwl1/toki-monitor [Mac 전용]

menubar.png


스크린샷 2026-04-17 오후 5.40.38.png

settings-menubar.png


프로그램 목적

- 실시간으로 RunCat처럼 AI를 쓰면서 재미를 얻을 수 있는 프로그램을 개발하고 싶었습니다.

- 하는 김에 개인 사용자들은 Otel+Grafana 설치로 통계 데이터 분석하는 것도 번거롭고 귀찮기 때문에, 이러한 기능을 더 가벼운 사용성으로 제공하고 싶었습니다.

- 또한, Toki 자체는 CLI로 대다수 사용자들이 쓰기 편한 환경은 아니라고 생각합니다. 이를 비개발자분들도 쉽게 쓸 수 있는 GUI가 필요하다 봤습니다.

- 하는 김에, 남은 사용량 윈도우도 같이 보고 하면 편하지 않을까? 근데 이걸 기존에 제공하는 프로그램들도 있는데 어떻게 차별화를 할 것인가를 엄청 고심 많이 했습니다.


챠밍 포인트 

- AI를 쓰면 Runcat처럼 토끼가 뜁니다

- 근데 그냥 뛰기만 하는게 아니라, RunCat이랑 다르게 쓰지 않고 쓰고 있지 않은 케이스에는 잠도 잡니다

- 기능 활성화 시, AI를 일정 사용량 이상으로 사용하고 있으면 피격 모션이 발생합니다. 또는 독 중독 옵션도 있어서, 애가 중독이 됩니다.

- 상단의 체력바는 Claude/Codex의 사용량 윈도우 중 본인이 희망하는 것과 연동시킬 수 있습니다. 토큰 윈도우가 줄어들수록 얘도 피통이 줄어서 HP가 노랑색에서 빨간색으로 변해갑니다.

- 토끼가 분신술도 쓸 수 있습니다! 클로드랑 코덱스 사용량 부분을 합쳐서 하나로 쓸 수도, 색을 다르게 하면서 별도로 2개를 띄울 수도 있습니다.

- 귀엽디 귀여운 토끼가 싫으시면.. 수치로 혹은 그래프로 변경해서 사용할 수도 있습니다.

- 대시보드는 아직 베타라서, 사용자화는 얼마나 잘 동작한다고 제가 감히 장담할 순 없지만.. 부드러운 애니메이션 등으로 정말 공들여 만들었고, Grafana의 문법과 비슷하게 계속 개선하고 있습니다.

- 디자인은 전부 Mac의 최신 Liquid Glass룩을 철저하게 따르고 있습니다.


3. Toki Sync - https://github.com/korjwl1/toki-sync

해당 프로젝트는 아직 베타 배포 중이라, 고오급 사용자 용으로 Readme도 부실하고, 사진도 많이 안 찍어놨네요.

Toki를 만들면서 들었던 생각은, 멀티 device를 쓰는 사람들의 요청에도 만족하고, 개인적으로 Token 분석하려는 사람, 사설 옵치 경쟁전 같은 LLM 토큰 사용량 경쟁 서버를 운영하면서 친구들끼리 가볍게 재미보고 싶은 사용자, 또는 아예 커뮤니티나 회사 등까지 폭넓게 커버할 수 있는 서버가 있으면 좋겠다는 생각이었습니다.

- 자체 프로토콜로, gRPC보다도 가볍고, 빠르고, 보안은 챙기면서 동작하는 TCP 프로토콜을 사용하고 있습니다.

- 최소한의 사용자를 위해 가볍게 사용할 수 있도록, fjall + Rust 서버로 AWS의 무료 EC2로도 문제없이 운영할 수 있도록 설계했습니다.

- 다수의 사용자를 대상으로는 DB 사이즈가 커질 것을 우려하여, External Clickhouse를 붙여서도 사용가능합니다.

- 자체적으로 사용자 인증 시스템, 권한 계층 분리 등 유저 관리 시스템을 내장하고 있습니다.

- Toki 및 Toki Monitor를 통해서 Sync를 맺고 해제할 수 있는데, Toki Monitor의 경우엔 현재 철저하게 개인 사용자 대상이라 본인의 데이터만 서버로부터 조회해서 볼 수 있도록 만들어놨으며 로컬 Toki랑 같은 Query 기반으로 동작합니다.

- 서버를 구축하고 싶은 사람들은, Toki Sync 위에다가 자체 대시보드를 얹고 RestAPI로 통신이 가능하며, 이 때는 서버 운영자 맘에 따라 다른 사용자 정보도 볼 수 있어, 웹 대시보드에서 옵치 경쟁전마냥 총 점수를 기반으로 줄 세우기를 해본다거나, 혹은 회사라고 하면 직원들의 토큰 사용 패턴을 수집하고 통계를 내서 회사 운영에도 사용할 수 있습니다.

- 아직 베타 버전이라 문제점 찾으시면 issue 남겨주세요..


모든 프로젝트는 제가 개인적으로 혼자 설계해서 개발, QA까지 전부 진행하고 있었으며, Contribute를 하고 싶다? 매우 환영입니다. 코드든, 애니메이션이든 다양한 기여를 해주시면 감사하겠습니다!


오픈 소스의 수호자로써 개인적인 사용이나 금전적인 목적이 아닌 모든 목적에 제 프로젝트를 가져가서 쓰시는 것은 환영이며, 만약 사업 등에서 사용 시 저에게 언질은 해주시면 감사하겠습니다.




korjwl1 님의 게시글 댓글
SIGNATURE
블로그 개설했습니다 ㅎㅎ 
https://korjwl1.tistory.com/
서명 더 보기 서명 가리기
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [4]
훔훔
IP 47.♡.157.19
04-17 2026-04-17 22:40:25 / 수정일: 2026-04-17 22:40:38
·
모니터가 귀엽네요.
모르는 사이에 하이쿠를 많이 썼네요. 소넷이 기본이었는데..
(위 아래로 배치한 멀티 모니터 상태에서 아래에 있는 모니터 메뉴바에서 누르면 위젯이 위쪽 모니터로 보입니다.)
korjwl1
IP 211.♡.106.147
04-17 2026-04-17 22:54:05
·
@훔훔님 귀엽게 봐주셔서 감사합니다! ㅎㅎ
그나저나 제가 맥북으로만 하고 있었어서 듀얼 모니터는 모르고 있었네요 ㄷㄷ
해당 상황에서 혹시 어떻게 됐어야 자연스러운 ux일거 같다 알려주시면 바로 다음 패치 때 고쳐놓겠습니다!
훔훔
IP 173.♡.231.38
00:10 2026-04-18 00:10:47 / 수정일: 2026-04-18 00:11:18
·
@korjwl1님 클릭한 스크린의 메뉴바에서 보이는게 일반적이지 아닐까요?
korjwl1
IP 211.♡.106.147
00:40 2026-04-18 00:40:43
·
@훔훔님 아 맞죠. 요즘 퇴근하고 이런거 만든다고 잠 못 자니 판단력이 흐려지는게..
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.