Skip to main content

ccpace

Claude usage calendar for your terminal. See your 5h limit, weekly pool, and model-scoped limits together, with forecasts and history from your own usage.

PyPI Tests MIT

Website · Install · Calendar · Data contract · Changelog · For agents

ccpace usage calendar in Spectrum

Synthetic demo: the 5h allowance is 88% used while the weekly forecast leaves about 39% unused. The calendar keeps both conditions visible. Run the same scenario with uvx ccpace --calendar --demo.

Start

Requires uv, macOS or Linux, and a terminal. Python 3.11 or later is resolved by uv.

uvx ccpace --calendar --demo   # try it without a Claude account
uvx ccpace --calendar          # your accounts, after claude login
uvx ccpace                    # compact one-shot view
uvx ccpace --watch            # compact watch view

Upgrade an existing uv installation with uv tool upgrade ccpace, or run uvx --refresh ccpace --calendar. The calendar is opt-in.

Claude Code credentials are discovered from ~/.claude/.credentials*.json. Both .credentials.work.json and work.credentials.json name an account; -f PATH selects explicit credential files. A subscription login is needed for live usage. API-key billing and Codex collection are not supported.

Calendar

  • Current limits stay visible. 5h, aggregate 7d, and scoped weekly allowances are separate counters with their own reset times.
  • Browse the week. Interval totals and hourly patterns show where usage accumulated. Enter opens hourly detail; History lists quota periods.
  • Forecast from your history. The same model as claude-code-statusline learns weekday and hourly burn. A short history uses a labeled linear fallback; the learned forecast requires at least 14 days of history.
  • Warnings without execution control. Alerts record condition changes, and existing notification channels can carry them elsewhere. ccpace never pauses, launches, switches models, or steers an agent.

Unavailable cells stay blank. Selecting one explains whether observations are missing, a forecast is unavailable, or the next quota period has yet to begin. Observed zero is 0.0; + means a partial observed amount; ~ marks a forecast; | marks a quota reset. Long gaps are not assigned to individual hours, and forecasts end at the current pool or access boundary.

Spectrum uses mint for usage, cyan for forecasts, and rose for model identity. Amber and red remain pressure signals. Quiet and Paper are also available; NO_COLOR is honored.

ccpace --calendar --theme spectrum
ccpace --calendar --theme quiet
ccpace --calendar --theme paper

The theme picker and Ctrl+t change palettes during a run. CCPACE_THEME sets the default. Light terminal backgrounds are detected through COLORFGBG when it is available.

Action Key
Select an interval Arrow keys
Hourly detail / back Enter / Escape
Previous / next week [ / ]
Today t
Calendar / History / Alerts 1 / 2 / 3
Next account / meter a / m
Acknowledge selected alert x
Refresh / quit r / q

Mouse selection and scrolling work too. Compact terminals keep the calendar and move details below it; narrow terminals use a daily agenda.

Demo scenarios: mixed, weekly, scoped, stale, cold, reset, credits, rebase, and weekly-only. d cycles scenarios; r advances the synthetic clock five minutes. Demo mode reads no credentials, makes no provider requests, writes no usage or alert state, and sends no notifications.

Notifications

ccpace --calendar --ntfy https://ntfy.sh/your-topic
ccpace --calendar --bark https://api.day.app/YOUR_KEY
ccpace --calendar --notifier ./notify-usage.sh

These options also work with --watch. Bare --bark uses BARK_KEY and BARK_SERVER. Environment equivalents: CCPACE_NTFY, CCPACE_BARK, CCPACE_NOTIFIER, CCPACE_INTERVAL, CCPACE_THRESHOLD, and CCPACE_TZ.

Custom notifiers receive JSON on stdin with id, event, account, and data. Calendar events add stable condition and transition IDs, provider, meter, observation time, and forecast provenance. Forecast notices require two distinct observations; cap notices are immediate. A reset clock passing does not establish recovery: a fresh observation must confirm it.

Calendar alert state is bounded to 200 events in calendar-alerts.json. Acknowledgement marks a reviewed event without clearing its condition. Delivery marked attempted does not prove receipt by an agent or device. Weekly underuse thresholds are experimental: 20 points to enter, 15 to clear.

Data and limits

Usage comes from the same undocumented OAuth endpoints Claude Code uses, not transcript token estimates. Samples and fetch caches are shared with claude-code-statusline under ~/.claude/statusline. History is partitioned by account UUID; directory placement alone is not identity. The calendar requires a known account UUID before displaying history.

CCPACE_DATA_DIR relocates the store; --no-log disables usage-sample logging. Derived caches and calendar alert state still update. Fetching uses the shared cache, activity gating, and reset boundaries; errors retain the last observation with its age. The default interval is 15 minutes, with jitter and a 60-second minimum.

Subscription percentages are not interchangeable credit balances. A model can consume both its scoped allowance and the shared limits. A 5h cap does not imply a depleted week, and a scoped cap does not imply every model is blocked. Paid continuation and session-specific modes require their own evidence. ccpace does not promise capacity or a particular continuation path.

Provider endpoints can change. Forecasts are estimates. API requests are read-only except expired-token refresh, which writes the refreshed OAuth token back to the credentials file. Local usage data stays local; enabled notifications send messages to the destinations you configure.

Claude Code plugin

/plugin marketplace add thevibeworks/ccpace
/plugin install ccpace@ccpace

The /ccpace skill reports usage in a conversation. Interactive calendar and watch views run in a separate terminal. The compact monitor can also run from a downloaded ccpace.py; the calendar needs the full package or checkout.

Verify and contribute

git clone https://github.com/thevibeworks/ccpace
cd ccpace
make check
make demo
make build

Tests cover quota accounting, forecast boundaries, account isolation, notification transitions, and calendar navigation at 50, 80, 120, and 160 columns. Test data is synthetic and isolated from the real usage store. These checks validate behavior, not forecast accuracy on every workload.

The terminal UI uses Textual. Collection uses HTTPX. The shared store and forecast contract are developed alongside claude-code-statusline.

Contributing · Calendar design · Theme previews · Data contract

MIT. Unofficial; not affiliated with Anthropic.

Metadata

Release files for ccpace 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ccpace 0.9.0
File Size Uploaded
ccpace-0.9.0.tar.gz 2.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for ccpace 0.9.0
File Interpreter ABI Platform
ccpace-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.1 MB

Release files / ccpace-0.9.0.tar.gz

Download URL ccpace-0.9.0.tar.gz
Size 2.0 MB
Tags Source
SHA-256 checksum
How to use checksums
c6b6d768f86e151cddcda0e57133fecdb04bf72aac9aa866c94d91aa5fde1f08
BLAKE2b-256 checksum
How to use checksums
354311b2635efdc190ebf48f38fe784bbbdcba29a631a69ef9625426c6958af2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / ccpace-0.9.0-py3-none-any.whl

Download URL ccpace-0.9.0-py3-none-any.whl
Size 76.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
10c33f65aac2182b5ed03455165322cafbeb6aabce7971c37d7f4e4cb69465a6
BLAKE2b-256 checksum
How to use checksums
2bfa6c625ffa5c7574ba02a094ae657eff3ed5e8a649bc851dc77e4368f8af1b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.9.0 This release

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page