Skip to content

slavashootit/claude-bar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Claude Bar (v1.2.0)

A native macOS menu-bar widget that tracks your Claude.ai usage limits in real-time.

Claude Bar Menu Bar Widget


Features

  • Menu Bar Native — Resides entirely in the macOS menu bar near the clock, keeping your desktop workspace clutter-free. No Dock icon, no floating panels to drag.
  • Compact View — Displays a compact status string showing your top three limits:
    S 60%  W 44%  D 4%
    
    (Session, Weekly, and Design/Omelette utilization)
  • Full Dropdown Breakdown — Click on the status string to open a native menu presenting complete statistics:
    • Exact usage percentages per model (Sonnet, Opus, etc.).
    • Human-readable reset countdowns (e.g. resets in 1h 18m or resets in 2d 23h).
    • Active plan name detection (Free, Pro, Max, etc.).
    • Time elapsed since the last data fetch.
  • Start at Login — Built-in auto-launch management. Toggle the option directly within the menu.
  • Manual Refresh — Instantly poll limits by selecting Refresh now.
  • Secure & Private — Restores and saves session cookies locally ({userData}/claude-cookies.json) using secure Chromium hooks. No remote servers or credentials caching.

Installation

  1. Download the latest .dmg from the GitHub Pages or the Releases tab.
  2. Open the DMG and drag Claude Bar to your Applications folder.
  3. First launch: Right-click the app in Finder and choose Open to bypass macOS Gatekeeper (since it is an ad-hoc signed build).

How It Works

The application runs an Electron core containing:

  1. Tray & Status Panel — Renders the menu bar text and manages the native context menu.
  2. Hidden Scraper Window (scraperWin) — Holds the authenticated Claude.ai session and runs preload-scraper.js in the background.

Data Pipeline:

scraperWin preload
  → fetch /api/organizations             → org UUID + plan name
  → fetch /api/organizations/{id}/usage  → limits payload as JSON
  → ipcRenderer.send('usage:update', data)
  → main.js → updates Tray title & context menu dropdown
  • Interval: Auto-polls every 1 minute (in preload-scraper.js).
  • Partition: Uses an in-memory session partition (scraper-temp) to avoid database lock conflicts.

Development

Install dependencies:

npm install

Start the app locally:

npm start

Build production .dmg installer:

npm run dist

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors