Docker-first Stream Deck plugin for Cursor usage % and days until reset. Host Node.js is not required.
On each version tag (v*), GitHub Actions builds the plugin and attaches com.local.cursor-usage.streamDeckPlugin to the Releases page.
- Download the
.streamDeckPluginasset from the latest release. - Double-click it (or open with Stream Deck) to install.
- Restart Stream Deck if the actions do not appear yet.
To cut a release after pushing main: create and push a tag such as v0.2.0 (match package.json / manifest.json when you can).
Requires Docker and Stream Deck 7.1+.
cd cursor-usage
docker compose run --rm build
$src = Join-Path $PWD "com.local.cursor-usage.sdPlugin"
$dest = Join-Path $env:APPDATA "Elgato\StreamDeck\Plugins\com.local.cursor-usage.sdPlugin"
robocopy $src $dest /E /IS /ITRestart Stream Deck. Under Cursor Usage, drag any of:
| Action | Mock look (no credential) |
|---|---|
| Usage % | Cyan ring gauge + 42 + CURSOR (dynamic art) |
| Days Until Reset | Large 12d + RESET (dynamic art) |
| Overview | Title text 42% / 12d (unchanged) |
Then:
- Select the key → open the property inspector.
- Optional: paste a Cursor credential (see below); leave Force mock data unchecked for live data.
- Tap the key to refresh; adjust Refresh (seconds) as needed (30–600).
| State | Usage % | Days |
|---|---|---|
| Mock / no token | 42% |
12d |
| Live OK | e.g. 53% |
e.g. 9d |
| Fetch error | ERR |
?d |
Credentials are per key. Paste on each action instance you use.
The plugin does not read your Cursor IDE profile or state.vscdb. Paste into Stream Deck settings only.
Option A — access token (preferred for api2.cursor.sh)
- Use a Cursor access token from your own login/session (e.g. agent/CLI login token).
- Paste into Cursor credential.
- Leave Force mock data unchecked.
Option B — dashboard session cookie
- Sign in at cursor.com → DevTools → Application → Cookies.
- Copy
WorkosCursorSessionToken(value alone, orWorkosCursorSessionToken=...). - Paste into Cursor credential.
Traffic goes only to Cursor (api2.cursor.sh, fallback cursor.com). Never commit tokens. The plugin does not log the credential.
Unofficial usage endpoints may change when Cursor updates.
docker compose run --rm build
docker compose run --rm watchAfter each rebuild, robocopy (or equivalent) into Plugins again and restart Stream Deck. Watch sets STREAMDECK_RESTART=0 (no host Stream Deck CLI).
*.sdPlugin/bin is gitignored — always build before testing.
-
docker compose run --rm buildsucceeds - Plugin folder copied to
%AppData%\Elgato\StreamDeck\Plugins\com.local.cursor-usage.sdPlugin - Stream Deck restarted; Usage % / Days Until Reset / Overview appear
- No credential → mock titles; bad credential →
ERR/?d; tap retries - Valid credential → live % and days (optional)
| Piece | Notes |
|---|---|
| Docker | Build / watch via docker compose |
| Stream Deck | App 7.1+, with a device |
| Node on host | Optional |
| Network | Required for live Cursor usage |
SDK: @elgato/streamdeck ^3. Plugin UUID: com.local.cursor-usage.
This project is not affiliated with, endorsed by, or supported by Cursor or Elgato.
Live usage data uses unofficial / unsupported Cursor endpoints. They may change, break, or stop working without notice. Displayed percentages and reset days may be incomplete or wrong.
You paste credentials (access token or session cookie) at your own risk. Keep them private; revoke them if exposed. Whether using this plugin is allowed under Cursor’s terms is your responsibility.
The software is provided as is, with no warranty of any kind.
Agent notes: AGENTS.md, CLAUDE.md.
MIT — Copyright (c) 2026 Chrishow2.