{"id":48954857,"url":"https://github.com/calvindotsg/cc-menubar","last_synced_at":"2026-04-23T04:00:29.283Z","repository":{"id":351701398,"uuid":"1212113286","full_name":"calvindotsg/cc-menubar","owner":"calvindotsg","description":"Pace your quota — proactive forecasting for Claude Code Max, not retroactive tracking","archived":false,"fork":false,"pushed_at":"2026-04-22T01:31:02.000Z","size":196,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-22T03:03:36.029Z","etag":null,"topics":["claude-code","cli","homebrew","macos","menubar","python","quota-monitoring","swiftbar"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/cc-menubar/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/calvindotsg.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-16T04:28:15.000Z","updated_at":"2026-04-22T01:30:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"a324485d-a224-4cad-b5ec-7f4ea6b10f83","html_url":"https://github.com/calvindotsg/cc-menubar","commit_stats":null,"previous_names":["calvindotsg/cc-menubar"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/calvindotsg/cc-menubar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calvindotsg%2Fcc-menubar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calvindotsg%2Fcc-menubar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calvindotsg%2Fcc-menubar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calvindotsg%2Fcc-menubar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/calvindotsg","download_url":"https://codeload.github.com/calvindotsg/cc-menubar/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calvindotsg%2Fcc-menubar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32165201,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-23T02:19:40.750Z","status":"ssl_error","status_checked_at":"2026-04-23T02:17:55.737Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","cli","homebrew","macos","menubar","python","quota-monitoring","swiftbar"],"created_at":"2026-04-17T23:10:34.867Z","updated_at":"2026-04-23T04:00:29.091Z","avatar_url":"https://github.com/calvindotsg.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cc-menubar\n\nPace your quota — proactive forecasting for Claude Code Max, not retroactive tracking.\n\n30+ Claude Code usage tools exist. Almost all show what you already spent. cc-menubar inverts this: instead of \"how much did I use?\", it answers \"how far will my quota take me?\"\n\n![cc-menubar menu bar icon](https://raw.githubusercontent.com/calvindotsg/cc-menubar/main/demo/menubar.png)\n\n![cc-menubar dropdown](https://raw.githubusercontent.com/calvindotsg/cc-menubar/main/demo/dropdown.png)\n\n## Three Principles\n\n| Principle | What it means |\n|-----------|--------------|\n| **Forecast remaining, don't sum spent** | Show what's LEFT (runway), not what's USED (cost). The gauge depletes like fuel — 1.0 to 0.0. |\n| **Pace by phase** | Different work phases burn tokens differently. Activity classifier shows where tokens go. |\n| **Maintain headroom** | Don't run hot. Context Efficiency and quota pacing give early awareness, not late alerts. |\n\n## Install\n\n```bash\nbrew install calvindotsg/tap/cc-menubar\nbrew install --cask swiftbar\ncc-menubar install\nopen -a SwiftBar\n```\n\nOr with [uv](https://docs.astral.sh/uv/):\n\n```bash\nuv tool install cc-menubar\ncc-menubar install\n```\n\n## Menu Bar Icon\n\nA gauge icon showing remaining quota. The needle position reflects how much quota is left in the current window (default: 5-hour). Configurable text, color thresholds, and metric cycling.\n\n## Dropdown Sections\n\n| Section | Content | Visibility |\n|---------|---------|------------|\n| Quota \u0026 Runway | 5h / 7d / 7d Sonnet remaining, pace vs reset, burn rate | Always |\n| Activity (7d) | Category bars with one-shot rate | Always |\n| Projects | Per-project calls + subagent % | Always |\n| Tools \u0026 Commands | Top tools, top bash commands | Always |\n| Opusplan Health | Opus vs Haiku substitution % | When Opus model detected |\n| Context Efficiency | \u003e150K session %, P50/P90, cache hit % | When sufficient data exists |\n\n## Configuration\n\nConfig at `~/.config/cc-menubar/config.toml`. Built-in defaults apply automatically.\n\n```bash\ncc-menubar init          # Generate commented config\ncc-menubar config        # Show merged config\ncc-menubar config --default  # Show all defaults\n```\n\n### Title Options\n\n```toml\n[title]\nsymbol = \"gauge.with.needle.fill\"  # SF Symbol name\ntext = \"none\"                       # \"none\" | \"percent\" | \"label\"\ncolor = \"monochrome\"                # \"monochrome\" | \"threshold\" | \"always\"\nmetric = \"5h\"                       # \"5h\" | \"7d\"\ncycle = []                          # [\"5h\", \"7d\", \"opusplan\", \"context\"]\n```\n\n### Theme\n\n```toml\n[theme]\npreset = \"ayu\"   # \"ayu\" (default) or \"catppuccin\"\n\n# Override individual roles\n[theme.light]\nsuccess = \"#custom\"\n\n[theme.dark]\nsuccess = \"#custom\"\n```\n\n### Sections\n\n```toml\n[quota]\nenabled = true\n\n[activity]\nenabled = true\ndays = 7\n\n[tools]\nenabled = true\ntop_n = 10\n\n[projects]\nenabled = true\n[projects.aliases]\n# \"-Users-me-myproject\" = \"My Project\"\n```\n\n## CLI Commands\n\n| Command | Purpose |\n|---------|---------|\n| `render` | Output SwiftBar text (called by wrapper) |\n| `install` | Write SwiftBar wrapper + create config |\n| `uninstall` | Remove SwiftBar wrapper |\n| `init` | Generate config file |\n| `config` | Show merged config |\n\n## Data Sources\n\n- **Quota**: Reads `/tmp/claude-statusline-usage.json` (written by Claude Code statusline)\n- **Burn rate**: `ccusage blocks --json --active` (optional, install via `brew install ccusage`)\n- **Activity, tools, models, context**: JSONL files in `~/.claude/projects/`\n\n## Requirements\n\n- macOS 13.0+ (for variable-value SF Symbols)\n- Python 3.11+\n- [SwiftBar](https://github.com/swiftbar/SwiftBar) or [xbar](https://xbarapp.com/)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcalvindotsg%2Fcc-menubar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcalvindotsg%2Fcc-menubar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcalvindotsg%2Fcc-menubar/lists"}