claudeers.
// Other

esp32-claude-quota

A desk display for Claude Code's two usage windows, plus a few ambient readouts, running on the "Cheap Yellow Display"

// Other[ api ][ web ][ claude ]#claude#other$open-sourceupdated about 1 month ago
Actively maintained
100/100
last commit about 1 month ago
last release about 1 month ago
releases 2
open issues 0
// star history

Install with your AI

Paste into Claude Code, Cursor, or any agent — it reads the repo and wires the tool into your project.

Install and set up esp32-claude-quota (release-binary project) into my current project.
Found on https://claudeers.com/esp32-claude-quota
Repo: https://github.com/thaitop/esp32-claude-quota
Homepage/docs: —
Detected install method: release-binary → inspect the README
Category: other. Platforms: api, web.
Read the repo's README for exact setup and env vars, then install it and wire it into my project.

Claudeers Health Verdict:
active; community-verified: false. Confirm the source before running anything.
// or install directly (release-binary)

Grab the latest release asset from GitHub.

# download a build from https://github.com/thaitop/esp32-claude-quota/releases
// or clone
git clone https://github.com/thaitop/esp32-claude-quota

// compatibility

Platformsapi, web
Operating systems
AI compatibilityclaude
License
Pricingopen-source
LanguageC

Claude quota monitor — ESP32-2432S028R

🇬🇧 English  ·  🇹🇭 ภาษาไทย

💸 Zero Claude tokens — watching your quota never spends it.

Buy the board on Shopee (TH)

A desk display for Claude Code's two usage windows, plus weather, crypto and stocks. Runs on the "Cheap Yellow Display" (ESP32-2432S028R, 2.8" touch), drawn with LVGL 9. The numbers come from the same read-only endpoint the claude.ai web app uses — no prompt, no model call, no hit to your rate-limit windows.

ScreenShows
ClaudeSession and Weekly utilization, with live reset countdowns
Weekly UsageThe last seven days of weekly utilization, plotted
WeatherTemperature, apparent temperature, conditions, humidity
CryptoOne coin's price, 24h change, dollar move and volume
StockFive tickers, with a market-open badge
SettingLink and feed health, backlight, Config Mode
esp32-claude-quota
Claude
esp32-claude-quota
Weekly Usage
esp32-claude-quota
Weather
esp32-claude-quota
Crypto
esp32-claude-quota
Stock
esp32-claude-quota
Setting

What you need

ItemNotes
ESP32-2432S028R boardThe 2.8" single-USB "CYD". ~$10. Buy on Shopee (TH).
USB data cableMicro-USB — a charge-only cable looks like a dead board.
A computer running Claude CodeSource of the quota numbers. Stays awake, same LAN as the display.
A claude.ai session keyPasted into a file in step 3.
PlatformIO Corepip install -U platformio — lands at ~/.local/bin/pio.

Windows also needs the CH340 driver (built into macOS 12+/Linux). No soldering, no extra parts.

1. Clone and configure

git clone https://github.com/thaitop/esp32-claude-quota.git
cd esp32-claude-quota
cp firmware/src/secrets.h.example firmware/src/secrets.h

Edit firmware/src/secrets.h:

#define WIFI_SSID     "your-network"        // 2.4GHz only
#define WIFI_PASSWORD "your-password"
#define BRIDGE_BASE_URL "http://192.168.1.117:8787"   // LAN IP of the Claude Code machine
#define WEATHER_LATITUDE  13.75f
#define WEATHER_LONGITUDE 100.50f
#define WEATHER_TZ "Asia/Bangkok"           // IANA zone name
#define CLOCK_TZ   "UTC+7"                   // header clock offset
#define FINNHUB_TOKEN "your-finnhub-token"  // free key from finnhub.io/register — Stock screen only

Get the machine's IP with ipconfig getifaddr en0 (macOS) or hostname -I (Linux). The Finnhub token is optional — leaving the placeholder just shows -- on the Stock screen. Weather, coins and stocks can also be changed on the device later via Config Mode, no reflash.

2. Flash

cd firmware
~/.local/bin/pio run --target upload > /tmp/upload.log 2>&1; echo "exit=$?"
grep -E "Hash of data|Hard resetting|SUCCESS|FAILED" /tmp/upload.log

First build pulls the toolchain (a few minutes); later builds ~1 min. Then watch it boot:

~/.local/bin/pio device monitor

Weather and Crypto work as soon as WiFi is up; the two Claude screens stay at -- until the bridge is running (steps 3–4).

3. Set up the quota source

Give fetch_usage.py a claude.ai session key:

mkdir -p ~/.config/claude-quota
pbpaste > ~/.config/claude-quota/session-key   # or paste into an editor
chmod 600 ~/.config/claude-quota/session-key

The value is the sessionKey cookie from a browser logged in to claude.ai — it starts with sk-ant-sid01-. Treat it like your password.

How to find the session key
  1. Open claude.ai in a browser and sign in.
  2. Open Developer Tools (F12, or Cmd+Option+I on macOS). In Safari, first enable Settings → Advanced → Show features for web developers.
  3. Go to the cookies:
    • Chrome / Edge / Brave: Application tab → Cookieshttps://claude.ai
    • Firefox / Safari: Storage tab → Cookieshttps://claude.ai
  4. Copy the Value of the cookie named sessionKey into the key file above.

Then start the fetcher:

python3 bridge/fetch_usage.py --check    # verify paths/permissions
python3 bridge/fetch_usage.py --interval # loop on a 60s timer

Use a Python with a working TLS trust store — Homebrew's, not the python.org build. Pass --org-id if you belong to more than one organization.

4. Start the bridge

python3 bridge/quota_bridge.py
# → http://0.0.0.0:8787/quota

Check it:

curl -s http://localhost:8787/quota | python3 -m json.tool

If a check from a phone or another laptop hangs, allow the Python binary through the host firewall (macOS: System Settings → Network → Firewall).

5. Keep both processes running (optional)

To survive reboots, install two launchd jobs — one for the fetcher, one for the bridge. Ready-made plists live in bridge/launchd/:

cp bridge/launchd/com.local.claude-quota-fetch.plist.example \
   ~/Library/LaunchAgents/com.local.claude-quota-fetch.plist
cp bridge/launchd/com.local.claude-quota-bridge.plist.example \
   ~/Library/LaunchAgents/com.local.claude-quota-bridge.plist

# rewrite the placeholder path to your real repo (run from the repo root)
sed -i '' "s#/Users/you/esp32-claude-quota#$PWD#" \
  ~/Library/LaunchAgents/com.local.claude-quota-{fetch,bridge}.plist

launchctl load ~/Library/LaunchAgents/com.local.claude-quota-fetch.plist
launchctl load ~/Library/LaunchAgents/com.local.claude-quota-bridge.plist
launchctl list | grep claude-quota    # second column is the last exit code (0 = ok)

An expired key does not kill the fetcher — paste a fresh one into the key file and the display recovers within one interval, no restart. Linux: a user systemd unit with Restart=always. Windows: Task Scheduler at logon.

Touch controls

GestureEffect
Tap a navbar SlotSwitch Screen
Tap above the navbarForce an immediate refresh
Hold ~1s above the navbarBlank the display (tap to wake)

Config Mode

Change the weather location, coins and stocks from a browser — no reflash.

Hold the Config button on the Setting screen. The panel shows an address and a four-digit PIN. Open the address on a phone or laptop on the same LAN, enter the PIN, pick your city / coins / stocks, then Save & reboot. To leave without a browser, hold a press anywhere on the panel to exit unsaved.

Config Mode page in a browser

Colour thresholds

UtilizationColour
< 60%green
60–84%amber
≥ 85%red

Troubleshooting

  • Upload won't connect (No serial data received). Hold BOOT while it starts. No port under pio device list → cable or CH340 driver.
  • Upload dies mid-transfer. Lower upload_speed to 115200 in platformio.ini.
  • Blank display, serial active. Backlight pin — other CYD revisions use GPIO27; change -DTFT_BL=21.
  • Colours inverted. Swap -DILI9341_2_DRIVER=1 for -DILI9341_DRIVER=1.
  • Touches off-centre. Replace the four TOUCH_RAW_* constants in config.h.
  • WiFi never joins. 2.4GHz only; captive-portal networks won't work.
  • Any figure shows --. The value is not trustworthy, not zero. The Setting screen names the failing feed.
  • Only Claude screens --, bridge fine. Nearly always an expired session key. Paste a fresh one; it recovers next pass.
  • Editing include/lv_conf.h changes nothing. Run pio run -t clean first.

Security notes

The sessionKey cookie is a full account credential, not a scoped API key. It lives in ~/.config/claude-quota/session-key (mode 600, outside the repo) and is never logged or put in a plist. The bridge serves on the LAN with no auth (percentages only, no credentials) — bind it to a trusted network, don't port-forward. The ESP32 stores WiFi credentials in plaintext, so treat a board you give away as one you gave your WiFi password to.

// faq

What is esp32-claude-quota?

A desk display for Claude Code's two usage windows, plus a few ambient readouts, running on the "Cheap Yellow Display". It is open-source on GitHub.

Is esp32-claude-quota free to use?

esp32-claude-quota is open-source, so it is free to use.

What category does esp32-claude-quota belong to?

esp32-claude-quota is listed under other in the Claudeers registry of Claude-compatible tools.

0 views
16 stars
unclaimed
updated about 1 month ago

// embed badge

esp32-claude-quota on Claudeers
[![Claudeers](https://claudeers.com/api/badge/esp32-claude-quota.svg)](https://claudeers.com/esp32-claude-quota)

// retro hit counter

esp32-claude-quota hit counter
[![Hits](https://claudeers.com/api/counter/esp32-claude-quota.svg)](https://claudeers.com/esp32-claude-quota)

// reviews

// guestbook

0/500

// related in Other

🔓

符合nature论文学术表达和科研绘图的Skill

// otherYuan1z0825/Python36,535Apache-2.0[ claude ]
🔓

Open source Ghostty-based macOS terminal with vertical tabs and notifications for AI coding agents. Built for multitasking, organization, and programmability.

// othermanaflow-ai/Swift26,069NOASSERTION[ claude ]
🔓

Anti-AI-slop design skill for Claude Code, Cursor, and Codex.

// otherNutlope/CSS25,307MIT[ claude ]
🔓

Huashu Design · HTML-native design skill for Claude Code · Claude Code 里 HTML 原生的设计 skill · 高保真原型 / 幻灯片 / 动画 + 20 设计哲学 + 5 维评审 + MP4 导出 · Agent-agnostic

// otheralchaincyf/HTML23,151MIT[ claude ]
→ see how esp32-claude-quota connects across the ecosystem