A desk HUD that shows live Claude usage on a Thermalright Trofeo Vision 6.86" LCD (1280×480, USB-C, ~$38), driven from macOS. Inspired by the r/ClaudeAI "$38 Claude LCD Table Display" post.
| Rendered layout | Mounted on the desk |
|---|---|
![]() | ![]() |
What it shows: Pro/Max session + weekly limit bars with reset countdowns (from Anthropic's usage endpoint), today's tokens and hypothetical API cost (via ccusage), the live session (project, model, burn rate), a clock, and an hourly token sparkline.
npx ccusage)brew install hidapi (C library behind the hidapi Python package)uv sync
uv run python -m claude_trofeo_hud preview # render mock layout to out/preview.png
uv run python -m claude_trofeo_hud run # live HUD on the LCD (Ctrl-C stops)
uv run python -m claude_trofeo_hud install-agent # start at login via launchd
On the first run, macOS asks for Keychain access to "Claude Code-credentials"
— choose Always Allow so the daemon can run unattended.
uninstall-agent stops and removes the launchd agent. Config lives in
config.toml (fps, JPEG quality, night dim/off hours). Logs go to
~/Library/Logs/claude-trofeo-hud/.
The panel is not a monitor — it's a USB HID device (VID:PID 0416:5302) that
accepts JPEG frames over a reverse-engineered protocol. We use the device
classes from thermalright-trcc-linux
with its HidApiTransport (IOHIDManager), bypassing its CLI — trcc's default
transport routes through libusb, which macOS blocks for HID devices. The
firmware blanks when idle, so the HUD streams continuously (default 2 fps).
See PLANNING.md for the full protocol notes.
trcc directly.~/Library/Logs/claude-trofeo-hud/hud.log. Unplug/replug is handled
automatically with backoff.npx ccusage must work in a terminal first; the
launchd agent bakes the node path into its plist at install time, so
re-run install-agent after Node upgrades.3 commits
Python
100.0%
A desk HUD that shows live Claude usage on a Thermalright Trofeo Vision 6.86" LCD (1280×480, USB-C, ~$38), driven from macOS. Inspired by the r/ClaudeAI "$38 Claude LCD Table Display" post.
| Rendered layout | Mounted on the desk |
|---|---|
![]() | ![]() |
What it shows: Pro/Max session + weekly limit bars with reset countdowns (from Anthropic's usage endpoint), today's tokens and hypothetical API cost (via ccusage), the live session (project, model, burn rate), a clock, and an hourly token sparkline.
npx ccusage)brew install hidapi (C library behind the hidapi Python package)uv sync
uv run python -m claude_trofeo_hud preview # render mock layout to out/preview.png
uv run python -m claude_trofeo_hud run # live HUD on the LCD (Ctrl-C stops)
uv run python -m claude_trofeo_hud install-agent # start at login via launchd
On the first run, macOS asks for Keychain access to "Claude Code-credentials"
— choose Always Allow so the daemon can run unattended.
uninstall-agent stops and removes the launchd agent. Config lives in
config.toml (fps, JPEG quality, night dim/off hours). Logs go to
~/Library/Logs/claude-trofeo-hud/.
The panel is not a monitor — it's a USB HID device (VID:PID 0416:5302) that
accepts JPEG frames over a reverse-engineered protocol. We use the device
classes from thermalright-trcc-linux
with its HidApiTransport (IOHIDManager), bypassing its CLI — trcc's default
transport routes through libusb, which macOS blocks for HID devices. The
firmware blanks when idle, so the HUD streams continuously (default 2 fps).
See PLANNING.md for the full protocol notes.
trcc directly.~/Library/Logs/claude-trofeo-hud/hud.log. Unplug/replug is handled
automatically with backoff.npx ccusage must work in a terminal first; the
launchd agent bakes the node path into its plist at install time, so
re-run install-agent after Node upgrades.3 commits
Python
100.0%