AI Token Monitor: Linux 데스크탑에서 Claude, Gemini, Grok, Kimi 쿼터 실시간 추적
오픈소스 Linux 데스크탑 위젯으로 Conky 안에서 AI 토큰 쿼터를 HP 바 스타일 진행 막대로 실시간 표시. Claude, Gemini, Grok, Kimi 실제 API 폴링 및 리셋 카운트다운 지원.
- Python
- Conky
- Linux
- MIT
- 업데이트 2026-06-06
문제: 여섯 개 AI 서비스를 동시에 관리하면서 어느 것이 소진됐는지 알 수 없다 #
현대 개발자는 동시에 4~8개의 AI 서비스를 사용합니다 — Claude는 복잡한 추론, Gemini는 긴 컨텍스트 분석, Grok은 실시간 웹 데이터, Kimi는 대용량 문서 처리. 각 서비스마다 독립적인 쿼터 대시보드, 리셋 일정, 청구 페이지가 있습니다.
결과는 이렇습니다: 작업 도중 레이트 리밋에 걸려 5분 동안 브라우저 탭을 전환하다가, Gemini 무료 쿼터가 UTC 자정(내 현지 자정이 아님)에 리셋된다는 걸 발견하고, Kimi가 왜 429를 반환하는지 디버깅하는 데 또 10분을 낭비하게 됩니다.
AI Token Monitor는 항상 보이는 데스크탑 위젯으로 이 문제를 해결합니다 — 편집기를 떠나지 않고도 모든 서비스 상태를 한눈에 확인할 수 있습니다.
● Claude ░░░░░░░░░ 무잔액
● Gemini ░░░░░░░░░ 쿼터소진
● Grok ░░░░░░░░░ 소진
● Kimi █████████ 22.4M 잔여
● Codex ───────── 18:42:01
● Kilo ───────── 18:42:01
작동 방식 #
모니터는 두 가지 컴포넌트로 구성됩니다:
api_fetcher.py — 백그라운드 스크립트(5분마다 cron 실행)로 각 서비스 API를 폴링하고 결과를 ~/token-monitor/api_cache.json에 씁니다.
conky_ai.py — 30초마다 캐시를 읽고 Conky 인라인 ${color} 태그가 포함된 텍스트를 출력합니다. Conky가 이를 데스크탑 위젯으로 렌더링합니다.
api_fetcher.py → api_cache.json → conky_ai.py → Conky 표시
(cron/5분) (JSON 캐시) (30초 폴링) (항상 표시)
이 아키텍처 덕분에 API 오류가 발생해도 데스크탑이 멈추지 않습니다. 캐시에는 항상 마지막으로 알려진 상태가 저장되어 있습니다.
HP 바 스타일 진행 막대 #
핵심 기능은 HP 바 스타일 쿼터 시각화 — 유니코드 블록 문자 행이 남은 쿼터를 직관적으로 표현합니다:
| 색상 | 상태 |
|---|---|
█████████ 초록 | 쿼터 50% 이상 |
████░░░░░ 주황 | 20~50% 잔여 |
█░░░░░░░░ 빨강 | 20% 미만 |
░░░░░░░░░ 빨강 | 소진 / 잔액 없음 |
───────── 회색 | API 키 미설정 |
진행 막대는 9글자 너비입니다. █ 하나가 약 11% 쿼터를 나타냅니다.
설치 #
# 1. 클론
git clone https://github.com/luckybbjason1/ai-token-monitor
cd ai-token-monitor
# 2. 설치
bash install.sh
# 3. API 키 추가
nano ~/.config/.ai_monitor_keys
# 4. Conky 재시작
pkill conky && conky --daemonize --pause=1
설치 스크립트가 자동으로:
- 스크립트를
~/token-monitor/에 복사 - Conky 설정에
${execpi 30 python3 ~/token-monitor/conky_ai.py}추가 api_fetcher.py의 cron 작업 설정
지원 서비스 및 API 방식 #
| 서비스 | API 엔드포인트 | 감지 항목 |
|---|---|---|
| Kimi (Moonshot) | GET /v1/users/me | 정확한 잔여 토큰 쿼터 |
| Claude (Anthropic) | POST /v1/messages | 레이트 리밋 헤더 |
| Gemini (Google) | POST .../generateContent | 429 = 쿼터 소진 |
| Grok (xAI) | GET /v1/models | 403 = 잔액 소진 |
| Codex / Kilo | — | UTC+8 자정까지 카운트다운 |
보안 설계 #
API 키는 ~/.config/.ai_monitor_keys에 chmod 600 권한으로 저장됩니다. .gitignore로 git에서 제외됩니다. 키는 터미널에 출력되거나 로그 파일에 기록되지 않습니다 — fetcher는 시작 시 한 번 읽고 HTTP 호출 동안만 메모리에 유지합니다.
커스텀 서비스 추가 #
api_fetcher.py에 블록을 추가하세요:
# ── 커스텀 서비스 ─────────────────────────────────
key = keys.get('yourservice')
if key:
try:
r = requests.get('https://api.yourservice.com/v1/usage',
headers={'Authorization': f'Bearer {key}'}, timeout=8)
if r.status_code == 200:
data = r.json()
remain = data['quota_remaining']
total = data['quota_total']
cache['YourService'] = {
'ok': True,
'label': f'{remain//1000}K 잔여',
'pct': remain / total
}
else:
cache['YourService'] = {'ok': False, 'label': 'API 오류'}
except Exception:
pass
그런 다음 conky_ai.py의 SERVICES 목록에 {'name': 'YourService', 'reset_h': 24}를 추가하세요.
dibi8 관련 도구 #
여러 AI API 비용을 관리하고 있다면 다음도 참고하세요:
- 2026 Q2 AI 코딩 비교 — Claude Code vs Cursor vs Codex — 실제 개발 워크플로우 비용 비교
- RTK Rust CLI 프록시 — AI 비용 80% 절감 — 가장 저렴한 가용 모델로 프롬프트 자동 라우팅
- 2026 AI 코딩 월간 청구서 — 6개월 프로덕션 AI 사용 실제 영수증
코드 받기 #
MIT 라이선스 완전 오픈소스입니다.
GitHub: github.com/luckybbjason1/ai-token-monitor
작업 도중 레이트 리밋 기습을 피하는 데 도움이 됐다면 Star 부탁드립니다. Issue와 PR 환영합니다 — 특히 macOS 지원이나 새 서비스 통합에 기여해주시면 감사합니다.
💬 댓글 토론