Skip to content

Latest commit

Β 

History

48 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🐱 BurnRate

κ°œλ°œμžκ°€ μ‚¬μš©ν•˜λŠ” AI μ½”λ”© μ—μ΄μ „νŠΈμ˜ ν¬λ ˆλ”§Β·κ΅¬λ… μ†Œμ§„μœ¨(Burn Rate) 을 macOS λ©”λ‰΄λ°”μ—μ„œ ν•œκ³³μ— λͺ¨μ•„ λ³΄λŠ” λ„€μ΄ν‹°λΈŒ μƒνƒœλ°” μ•±μž…λ‹ˆλ‹€.

메뉴바 πŸ”₯ μ•„μ΄μ½˜μ„ ν΄λ¦­ν•˜λ©΄ λ―Έλ‹ˆ λŒ€μ‹œλ³΄λ“œκ°€ 열리고, μ—°λ™λœ μ—μ΄μ „νŠΈλ³„ μ‚¬μš©λŸ‰κ³Ό 상세 μΏΌν„°λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.


ν˜„μž¬ 지원 (v0.1.0)

μ—μ΄μ „νŠΈ μƒνƒœ 연동 방식
Antigravity βœ… 지원 Antigravity CLI μ„Έμ…˜ + Usage API
Cursor βœ… 지원 Cursor 둜컬 μ„Έμ…˜ + Usage API
Claude Code 🚧 μ€€λΉ„ 쀑 β€”
Codex 🚧 μ€€λΉ„ 쀑 β€”
GitHub Copilot πŸ“‹ λ‘œλ“œλ§΅ β€”

μ„€μΉ˜

Homebrew (ꢌμž₯)

macOS 13+ 및 Homebrewκ°€ ν•„μš”ν•©λ‹ˆλ‹€. Xcode λ˜λŠ” Command Line Tools(Swift λΉŒλ“œμš©)도 ν•„μš”ν•©λ‹ˆλ‹€.

brew tap kwaneung/burnrate https://github.com/kwaneung/burnrate
brew install burnrate
burnrate

μ‹€ν–‰ ν›„ 메뉴바 πŸ”₯ μ•„μ΄μ½˜μ΄ ν‘œμ‹œλ©λ‹ˆλ‹€. FormulaλŠ” CLI λ°”μ΄λ„ˆλ¦¬μ΄λ―€λ‘œ ν„°λ―Έλ„μ—μ„œ burnrate둜 μ‹€ν–‰ν•©λ‹ˆλ‹€.

μ—…λ°μ΄νŠΈ:

brew update
brew upgrade burnrate

v1.0.0 μ˜ˆμ •: μ„œλͺ…λœ .app Cask 배포둜 Applicationsμ—μ„œ μ‹€ν–‰Β·λ‘œκ·ΈμΈ ν•­λͺ© 등둝이 κ°€λŠ₯ν•΄μ§ˆ μ˜ˆμ •μž…λ‹ˆλ‹€.


μ‚¬μš© 방법

μ•± μ‚¬μš©

  1. 메뉴바 πŸ”₯ μ•„μ΄μ½˜ 클릭
  2. μ„€μ •(βš™οΈ) β†’ Antigravity / Cursor μ—°λ™ν•˜κΈ°
  3. λŒ€μ‹œλ³΄λ“œμ—μ„œ μ„œλΉ„μŠ€ 선택 β†’ 상세 μ‚¬μš©λŸ‰ 확인
  4. λŒ€μ‹œλ³΄λ“œ λ…ΈμΆœ μ„€μ •μ—μ„œ ν‘œμ‹œν•  μ—μ΄μ „νŠΈ on/off

μ„€μ • 변경은 μ¦‰μ‹œ λ°˜μ˜λ©λ‹ˆλ‹€. 별도 μ €μž₯ λ²„νŠΌμ€ μ—†μŠ΅λ‹ˆλ‹€.


연동 상세

Antigravity와 CursorλŠ” λ™μΌν•œ 둜컬 μ„Έμ…˜ 읽기 β†’ Usage API 폴링(15초) β†’ μ„€μ • ν™”λ©΄ μƒνƒœ λ©”μ‹œμ§€ νŒ¨ν„΄μ„ μ‚¬μš©ν•©λ‹ˆλ‹€. BurnRateκ°€ 직접 OAuthΒ·Keychain λ‘œκ·ΈμΈμ„ ν•˜μ§€ μ•ŠμœΌλ©°, 각 도ꡬ에 미리 λ‘œκ·ΈμΈλ˜μ–΄ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

Antigravity

Antigravity CLI(agy)에 Google κ³„μ •μœΌλ‘œ λ‘œκ·ΈμΈλ˜μ–΄ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. BurnRateλŠ” CLIκ°€ μ €μž₯ν•œ 둜컬 OAuth μ„Έμ…˜μœΌλ‘œ Usage APIλ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€. access token은 refresh token으둜 μžλ™ κ°±μ‹ λ©λ‹ˆλ‹€.

ν•­λͺ© λ‚΄μš©
μ„Έμ…˜ 파일 ~/.gemini/antigravity-cli/antigravity-oauth-token
OAuth 자격 증λͺ… μ„€μΉ˜λœ agy λ°”μ΄λ„ˆλ¦¬μ—μ„œ λŸ°νƒ€μž„ μΆ”μΆœ (λ˜λŠ” ANTIGRAVITY_CLIENT_ID / ANTIGRAVITY_CLIENT_SECRET ν™˜κ²½ λ³€μˆ˜)
Usage API POST https://daily-cloudcode-pa.googleapis.com/v1internal:retrieveUserQuotaSummary (15초 폴링)
μΊμ‹œ 파일 ~/.gemini/antigravity-cli/api_usage.json (그룹·버킷 μΏΌν„° JSON μ €μž₯)
상세 ν™”λ©΄ 그룹별(Gemini / ClaudeΒ·GPT) WeeklyΒ·5-Hour μž”μ—¬ %, κ°±μ‹  μ‹œκ° (agy CLI TUI와 동일 ν˜•μ‹)
μ„Έμ…˜ 만료 μ‹œ 섀정에 agyλ₯Ό μ‹€ν–‰ν•΄ λ‹€μ‹œ λ‘œκ·ΈμΈν•΄ μ£Όμ„Έμš” μ•ˆλ‚΄
연동 ν•΄μ œ μ„€μ • β†’ Antigravity β†’ 연동 ν•΄μ œ

μ°Έκ³ : Usage APIλŠ” Antigravity CLIκ°€ μ‚¬μš©ν•˜λŠ” 비곡식 Google λ‚΄λΆ€ μ—”λ“œν¬μΈνŠΈμž…λ‹ˆλ‹€. agy CLI μ—…λ°μ΄νŠΈμ— 따라 응닡 ν˜•μ‹μ΄ λ°”λ€” 수 μžˆμŠ΅λ‹ˆλ‹€.

Cursor

Cursor 에디터에 λ‘œκ·ΈμΈλ˜μ–΄ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. μ„Έμ…˜μ€ Cursorκ°€ μ €μž₯ν•œ 둜컬 SQLite DBμ—μ„œ 읽고, μ‚¬μš©λŸ‰μ€ Cursor μ›Ή API둜 μ‘°νšŒν•©λ‹ˆλ‹€. Keychain을 읽지 μ•ŠμœΌλ―€λ‘œ Keychain μ ‘κ·Ό νŒμ—…μ΄ λœ¨μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 토큰 갱신은 Cursor 앱이 λ‹΄λ‹Ήν•©λ‹ˆλ‹€.

ν•­λͺ© λ‚΄μš©
μ„Έμ…˜ 파일 ~/Library/Application Support/Cursor/User/globalStorage/state.vscdb
μ„Έμ…˜ ν‚€ cursorAuth/accessToken (JWT)
Usage API GET https://cursor.com/api/usage-summary (15초 폴링)
상세 ν™”λ©΄ Total / Auto+Composer / API μ‚¬μš©λ₯ , ν”Œλžœλͺ…(Pro, Pro+ λ“±)
μ„Έμ…˜ 만료 μ‹œ 섀정에 Cursorλ₯Ό μ‹€ν–‰ν•΄ λ‹€μ‹œ λ‘œκ·ΈμΈν•΄ μ£Όμ„Έμš” μ•ˆλ‚΄
연동 ν•΄μ œ μ„€μ • β†’ Cursor β†’ 연동 ν•΄μ œ

μ°Έκ³ : Cursor Usage APIλŠ” 비곡식 μ—”λ“œν¬μΈνŠΈμž…λ‹ˆλ‹€. Cursor μ—…λ°μ΄νŠΈμ— 따라 λ™μž‘μ΄ λ°”λ€” 수 μžˆμŠ΅λ‹ˆλ‹€.


μ†ŒμŠ€μ—μ„œ λΉŒλ“œ

Xcode 없이 ν„°λ―Έλ„μ—μ„œ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

git clone https://github.com/kwaneung/burnrate.git
cd burnrate
swift run

Release λΉŒλ“œ:

swift build -c release --disable-sandbox
.build/release/burnrate

μ•„ν‚€ν…μ²˜

graph TD
    A[MenuBarExtra πŸ”₯] --> B[DashboardView]
    B --> C[SettingsView]
    B --> D[AntigravityDetailView]
    B --> E[CursorDetailView]

    F[ConfigManager] --> B

    F -->|15초 폴링| G["Antigravity retrieveUserQuotaSummary"]
    G --> G1[AntigravitySessionReader]
    G1 -->|refresh token| G2[OAuth token κ°±μ‹ ]

    F -->|15초 폴링| I["cursor.com/api/usage-summary"]
    I --> H[CursorSessionReader]
    H -->|SQLite| H1[state.vscdb JWT]
Loading

ν”„λ‘œμ νŠΈ ꡬ쑰

burnrate/
β”œβ”€β”€ Package.swift
β”œβ”€β”€ Formula/
β”‚   └── burnrate.rb                        # Homebrew Formula
β”œβ”€β”€ README.md
└── Sources/BurnRate/
    β”œβ”€β”€ Controllers/BurnRateApp.swift      # @main, MenuBarExtra
    β”œβ”€β”€ Models/
    β”‚   β”œβ”€β”€ ConfigManager.swift            # μƒνƒœΒ·λ™κΈ°ν™” 핡심
    β”‚   β”œβ”€β”€ AntigravitySessionReader.swift # Antigravity CLI μ„Έμ…˜ 읽기
    β”‚   β”œβ”€β”€ AntigravityQuotaClient.swift   # Antigravity Usage API
    β”‚   β”œβ”€β”€ CursorSessionReader.swift      # Cursor JWT μ„Έμ…˜ 읽기·만료 검사
    β”‚   β”œβ”€β”€ AIService.swift
    β”‚   └── UsageData.swift                # AntigravityQuotaGroup / Bucket λͺ¨λΈ
    β”œβ”€β”€ Views/
    β”‚   β”œβ”€β”€ DashboardView.swift
    β”‚   β”œβ”€β”€ SettingsView.swift
    β”‚   β”œβ”€β”€ AntigravityDetailView.swift
    β”‚   β”œβ”€β”€ CursorDetailView.swift
    β”‚   └── ServiceRowView.swift
    └── Resources/Info.plist

기술 μŠ€νƒ

  • μ–Έμ–΄ / UI: Swift 5.8+, SwiftUI
  • μ΅œμ†Œ OS: macOS 13+
  • λΉŒλ“œ: Swift Package Manager (μ™ΈλΆ€ μ˜μ‘΄μ„± μ—†μŒ)
  • λ°±κ·ΈλΌμš΄λ“œ: LSUIElement (Dock μ•„μ΄μ½˜ μ—†μŒ)
  • Info.plist: 링컀 -sectcreate둜 μ‹€ν–‰ νŒŒμΌμ— λ‚΄μž₯

μ•Œλ €μ§„ μ œν•œ

  • CursorΒ·Antigravity Usage APIλŠ” λͺ¨λ‘ 비곡식 μ—”λ“œν¬μΈνŠΈμž…λ‹ˆλ‹€. 각 도ꡬ μ—…λ°μ΄νŠΈμ— 따라 λ™μž‘μ΄ λ°”λ€” 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ„Έμ…˜μ΄ 만료되면 BurnRateκ°€ μ„€μ • 화면에 재둜그인 μ•ˆλ‚΄λ₯Ό ν‘œμ‹œν•˜μ§€λ§Œ, 토큰 갱신은 각 도ꡬ(agy / Cursor)κ°€ μˆ˜ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • AntigravityλŠ” refresh token으둜 access token을 μžλ™ κ°±μ‹ ν•©λ‹ˆλ‹€. CursorλŠ” JWT 만료·401 μ‹œ Cursor μ•± μž¬μ‹€ν–‰μ΄ ν•„μš”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • Claude Code, Codex, GitHub Copilot은 아직 μ—°λ™λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

λ‘œλ“œλ§΅

  • Claude Code / Codex / GitHub Copilot 연동
  • Homebrew Formula 배포 (brew install burnrate)
  • Homebrew Cask 배포 (v1.0.0 β€” Developer ID μ„œλͺ… .app + Notarization)
  • 메뉴바 μ•„μ΄μ½˜ Burn Rate μ• λ‹ˆλ©”μ΄μ…˜

κΈ°μ—¬

Issue와 Pull Requestλ₯Ό ν™˜μ˜ν•©λ‹ˆλ‹€.

About

🐱 A native macOS status bar app to monitor real-time AI API usage, costs, and daily burn rate.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages