Claude DigestDaily Claude work telemetry Live 22:48:32
Windows desktop · Electron · offline

ClaudeDigestHUD

Every Claude Code session you ran today, on one dark screen: tokens and dollars by model, the folders you worked in, the diffs, commits and pull requests. It tells you where the tokens went to waste. A dithered anchor reads it out loud, and you can talk back.

Dithered portrait of the anchor, a woman in sci-fi armour, in magenta and grey pixels
ANCHOR · ON AIR
ANCHORGood evening. Today you ran 4 Claude sessions across 4 projects, using 215 million tokens. That's about 86 dollars at API prices.
Tokens
215M
API value
$86.38
Sessions
4
Model calls
506
Commits
8
Cache hit
98.7%
Efficiency
56/100
Numbers from one real day of use. Every project name, path, prompt, commit and diff in the screenshots and video is sample data.
End to endrecorded from the running app · voice on

One take, no edits

Switching themes by voice, a spoken briefing, a commit diff, and a Claude Code permission prompt approved by voice. The prompt goes through the real hook relay.

REC
How it worksfour inputs · one main process · three screens

Reads what's already on disk

Claude Code writes a transcript for every session. The HUD parses those files, walks each folder with git, and listens on localhost for hook events from sessions that are running right now. It never talks to Claude.

Transcripts~/.claude/projects/**/*.jsonl incl. subagents
Gitlog, show, diff HEAD for every folder touched
GitHuboptional token · PR state, reviews, your PRs
HooksClaude Code → relay.js → 127.0.0.1:47821
Main process
  • Dedupes usage by message and request id
  • Prices each call per model
  • Runs the optimizer and live alerts
  • Builds the anchor's briefing
  • Speech in and out via Windows SAPI
HUD windowframeless · 6 themes · any day in the calendar
Tray & toastsdaily digest at 18:00 · finished · needs you
XR roomHTTPS on your LAN · Quest browser
CLInpm run scan → today's digest in the terminal

Days, not sessions

Everything is grouped by your local calendar day. Step back with ← or pick a date; past days are cached, today rescans live.

Subagents count

Subagent transcripts are folded into their parent session, so a broad search that ran on Opus shows up in the cost.

Cache-aware cost

Cache reads, 5-minute writes and 1-hour writes are priced separately. That's where most of a long session's money goes.

Folders become repos

Every working directory is mapped to its git root. Commits are matched to the day's time window, and uncommitted changes are diffed against HEAD.

Daily digesttwelve panels · click anything

Your day, itemised

The overview answers how much and where. Every panel drills down: click a session on the timeline, a project in the sectors list, or a commit in the detail tabs.

TOKENS

Usage by model

A reactor ring for the day's total, split into input, output, cache reads and cache writes, with a cost bar for each model.

215M tokens · $86.38 · opus-5-5 $77.72
GLANCE

At a glance

Sessions, prompts, model calls, output tokens, files edited, projects, commits and pull requests, with the first and last activity of the day.

4 sessions · 38 prompts · 58 files
TREND

Last 14 days

Daily tokens and cost as bars. Click a bar to jump to that day. An hourly dial shows when you worked and the peak hour.

peak hour 15:00 · 45.7M tokens
TIMELINE

Session timeline

Every session laid out across the day, with tick marks for each prompt and its tokens and cost at the end of the bar.

12:39 PM → 10:50 PM
REPOS

Diffs and commits

Tabs for sessions, commits, working tree and Claude's own edits. Commits co-authored by Claude are marked. Click any commit for the full unified diff.

8 commits · +746 −341
PULLS

Pull requests

PR links from your transcripts. Add a GitHub token and the HUD fills in title, state, size and branches, and also finds PRs you opened that day.

1 PR · merged
TOOLS

Tool mix

Which tools Claude reached for (Bash, Read, Edit, Grep, web search, MCP) and how often, across the whole day.

Bash · Read · Edit · Grep · Write
LIVE

Live sessions

Hook events show which sessions are working, waiting or idle right now, with a running feed of prompts, finishes and compactions.

working · waiting · connected
TICKER

Bottom ticker

A scrolling line of the day's tokens, cost per project, commit subjects and PRs, so the headline numbers are always on screen.

215M tokens · $86.38 est.
Clean theme overview: token ring showing 215M tokens and $86.38, at-a-glance counters, 14-day bar chart, hourly activity dial, and the anchor panel
Clean · token ring, glance counters, 14-day trend, hourly dial
Cyber theme with a commit diff open: three files with added and removed lines
Cyber · a commit opened to its full diff (sample data)
Pricing$ per million tokens · API-equivalent

What a token costs

On a subscription you don't pay per token, but the API price is the clearest way to compare sessions and spot waste. Cache writes cost 1.25× input for 5 minutes and 2× for an hour. Fast mode doubles everything.

ModelInputOutputCache readWrite 5mWrite 1h
Opus 5.5$4.00$20.00$0.20$5.00$8.00
Sonnet 5.5$2.00$10.00$0.20$2.50$4.00
Fable 5.1$10.00$50.00$0.25$12.50$20.00
Opus 5 / 4.5–4.8$5.00$25.00$0.50$6.25$10.00
Sonnet 5$2.00$10.00$0.20$2.50$4.00
Haiku 4.5$1.00$5.00$0.10$1.25$2.00

Older Opus 4, Sonnet and Haiku models are priced too. Rates live in src/pricing.js.

Token optimizer8 checks · priced findings · live alerts

Where the tokens leaked

Each day gets an efficiency score out of 100. Each finding comes with a dollar figure, the sessions it applies to, and the command that fixes it.

FindingFires whenFix
highLong-context sessionsSessions run above 150K context, so every turn re-reads it/compact past ~200K, /clear between tasks
highCache rebuilds after breaksA big session resumes after the cache expired and re-writes it all at 2×/compact before a break, or the cache-expiry alert
medBulky tool outputLarge results stay in context for every later turn| tail -50, ranged reads, a subagent
medSubagents on OpusSearch subagents inherit the main premium modelmodel: sonnet in agents/*.md
medQuick tasks on a premium model3+ short sessions (small context, ≤3 edits) on Opus or Fable/model sonnet for small fixes
lowSame files read repeatedlyA file is read 5+ times in one sessionPoint at a function or line range
medLow prompt-cache hit rateUnder 85% hits on a day over 2M tokensKeep model, MCP and CLAUDE.md stable
highDaily budgetPast 50%, 80% and 100% of your budgetWrap up long sessions, move to Sonnet
56
Est. avoidable
$38.80
Share of spend
45%
Cache hit
98.7%
Findings
3

Live alerts while you work

Context at 300K · Dark theme token passFirst at 300K, then every +200K. Threshold is yours to set.
Cache expiring · 612K contextBefore the cache lapses: send a message to keep it warm, or /clear if you're done.
Daily budget · 80%An API-equivalent cap you set in ⚙. Off by default.
Pro tip 1 / 15
/compact

Past ~150–200K context, /compact keeps the decisions and drops the noise. Add focus: "/compact keep the API design and open TODOs".

Anchor & voiceWindows speech · recognised offline · nothing recorded

Say “Anchor,” and the rest

The listener only acts on phrases that start with the wake word, and only on phrases it knows. It builds that list from your Start menu and the folders Claude has worked in, refreshes every 30 minutes, and ignores anything it hears below 60% confidence.

Control the HUD

  • Anchor, brief me
  • Anchor, stop
  • Anchor, next day
  • Anchor, show diffs
  • Anchor, theme name
Also previous day, today, scan, refresh, show sessions, commits, working tree, edits, close. Say Winamp as “win amp”.

Open apps

  • Anchor, open Spotify
  • Anchor, open Chrome
  • Anchor, launch Discord
Anything in your Start menu, by full name or a unique short name.

Start Claude

  • Anchor, start Claude in orbit ui
  • Anchor, start Claude in pixel forge
Opens Windows Terminal in that folder running claude.

Approve Claude

  • Anchor, approve
  • Anchor, deny
Answers the oldest waiting permission prompt.
Listening for “Anchor”
recogniser en-US · wake word “anchor” · garbage sink on
Anchor, theme win amp.
Winamp.
Anchor, open Spotify.
Opening Spotify.

The briefing, segment by segment

Press play or say “brief me”. The anchor reads the day in short segments, with the caption highlighted word by word and her jaw moving on the beat. Speak live alerts and a spoken digest at your notify time are optional.

01Overview02Busiest project03Code04Efficiency05Right now06Sign-off
Voice commands panel listing HUD controls, apps, Claude projects and approve or deny
Voice panel · every phrase it knows, in the HUD
The anchor reading the briefing, with the caption beside the dithered bust
Briefing · read aloud and captioned
Winamp theme in green phosphor on black, with the voice commands panel and timeline
Winamp · switched by voice mid-demo
ApprovalsPermissionRequest hook · 20 s window · falls back to the terminal

Approve Claude from across the room

When Claude Code wants to run a tool, the prompt lands in the HUD with a countdown, a toast pops up, and the anchor asks out loud if voice is on. Click, or say it. If nobody answers, Claude Code shows its normal prompt, so a session never gets stuck.

Claude CodePermissionRequest · Bash: npm run build
relay.jsPOST 127.0.0.1:47821/hook · x-hud-key
HUDapproval strip · toast · anchor asks
You“Anchor, approve” or click
Bash orbit-ui · TERMINALnpm run build 20s
# relay.js stdout → Claude Code   (try the buttons)
waiting for an answer…

HUD closed?

The relay can't connect, exits at once with no output, and Claude Code asks in the terminal as usual.

Several waiting?

Each gets its own row and countdown. Voice answers the oldest first; clicks answer the one you click.

Change the wait

Set how long a prompt waits for the HUD in ⚙, from a few seconds up to two minutes. 0 turns approvals off.

Locked to this PC

The receiver only listens on 127.0.0.1 and rejects any request without the HUD's secret key.

Cyber theme: approval strip for Bash npm run build in orbit-ui with Approve and Deny, above the voice commands panel
In the HUD · the approval strip above Live sessions, 29 s left
Hooks & notificationsone click installs · ~/.claude/settings.json

Knows when Claude needs you

Install the hooks from ⚙ and every Claude Code session reports to the HUD, whether it runs in a terminal, VS Code or the desktop app. The installer only touches its own entries and can remove them again.

Hook eventWhat the HUD does
SessionStartAdds the session to Live sessions with its folder and app
UserPromptSubmitMarks it working and shows the prompt in the feed
NotificationMarks it waiting; toast “⚠ needs you” (optional)
PermissionRequestOpens an approval with a countdown; answers allow or deny
StopToast “✓ Claude finished” when the turn took 20 s or more
SubagentStopLogs the subagent finishing
PreCompactLogs manual or automatic compaction (context full)
SessionEndRemoves the session, with the reason

Click a toast

Opens the HUD on that session's folder.

Daily digest

A notification at 18:00 with the day's tokens and cost. Pick the time, or turn it off.

Tray icon

Closing the window keeps it in the tray. Launch at login is one checkbox.

Never blocks Claude

The relay waits 0.8 s for ordinary events and prints nothing, so a closed HUD never slows a session down.

Themessix looks · press M to cycle

Six skins

Each theme restyles the panels, gauges, background and the anchor's dither palette. Switch from the menu, with M and Shift+M, or by voice. Your pick is remembered.

Clean theme

Clean

Tight, quiet, data first. The default.

Winamp theme

Winamp

Green phosphor, bevelled chrome and a spectrum analyser, straight out of 1999.

Original HUD theme

Original HUD

Cyan reactor rings, spinning dials, Orbitron type.

Cyber theme

Cyber

Ink outlines, hazard tape, yellow tags and Japanese labels.

Neonz theme

Neonz

Ultraviolet comic-book print with glowing outlines.

Glitch poster theme
the one light theme

Glitch poster

White poster stock with hot pink and electric blue overprint.

XRMeta Quest browser · WebXR · your LAN only

The same HUD, wrapped around you

The real HUD renders offscreen on your PC and streams to a curved screen in the headset, so what you see in VR is exactly the desktop app, in whatever theme you picked.

  1. Tick “Serve the VR room to my headset” in ⚙. The short link and access code appear right there.
  2. Open the link in the Quest browser and accept the self-signed certificate once.
  3. Tap “Enter VR”. Point with a controller ray or pinch to click; the thumbstick scrolls.
  • AnchorThe 3D bust stands on a pedestal to your left and speaks through the headset, jaw moving with the audio.
  • AccessHTTPS on port 47830, locked to your network with a six-character code you can regenerate.
  • DiagnosticsSettings show the last headset that connected and any rejected attempts.
Controls & settingskeyboard · ⚙ panel

Every switch

←Previous day
→Next day
TJump to today
RRescan now
MNext theme (Shift+M back)
EscClose a diff or dialog

Settings and their defaults

SettingDefaultWhat it does
Daily notification18:00 · onToast with the day's totals
Launch at loginoffStarts hidden in the tray
GitHub tokennoneEnriches PRs; never shown to the window
Live alertsonContext and cache warnings for running sessions
Context alert at300KThen every +200K
Cache-expiry alertonWarns before a big session's cache lapses
Daily budget$0 · offAPI-equivalent cap for budget alerts
Toast when Claude finisheson · ≥20 sOnly for turns at least this long
Toast when Claude needs youonPermission and input requests
Voice commandsoffThe offline “Anchor, …” listener
Spoken repliesonThe anchor answers commands out loud
Approval wait20 sHow long a prompt waits for the HUD; 0 = off
Anchor voice & rateZira · 1.0×Any installed Windows voice
XR roomoff · 47830Serves the headset view on your LAN
0

Claude tokens

It reads transcripts already on disk. Running the HUD never calls Claude.

0

Audio uploaded

Speech recognition and the anchor's voice run on Windows itself.

1

Optional API

GitHub, only if you add a token to enrich pull requests.

~10%

CPU at idle

A 12 fps clock instead of endless CSS animation.

FAQthe questions people actually ask

Questions

Does running it use my Claude tokens?

No. It only reads files Claude Code already wrote to your disk and runs git locally. The one optional network call is to GitHub, and only if you add a token.

Is the dollar figure what I actually pay?

It's what the same usage would cost at API prices. On a Pro or Max plan you pay a flat fee, but the API price is still the clearest way to compare sessions and spot waste.

Does the microphone record anything?

No. Windows' built-in recogniser listens for a fixed list of phrases that start with “Anchor”. Nothing is saved or sent anywhere, and voice is off until you turn it on.

What if the HUD isn't running when Claude asks permission?

The hook relay can't connect, exits immediately with no output, and Claude Code shows its normal prompt. The same happens if nobody answers in time.

Which Claude Code setups does it see?

Anything that writes transcripts to ~/.claude/projects: the CLI in any terminal, the VS Code and JetBrains extensions, and the desktop app. Live sessions need the hooks installed.

Where are my settings and data?

Settings live in %APPDATA%\claude-digest-hud\settings.json. The hooks are entries in ~/.claude/settings.json that call hooks/relay.js. The HUD keeps no database; it re-reads your transcripts on demand.

Mac or Linux?

Not today. Voice, app launching and the anchor's voice use Windows APIs. The digest itself is plain Node and runs anywhere with npm run scan.

Who made the anchor?

The bust is “Futuristic Female Sci-Fi Armor Bust” by Realidad Aumentada Empezando Desde Cero on Sketchfab, licensed CC BY 4.0. It was decimated from 110 MB to 2 MB and is dithered live in WebGL.

InstallWindows 10/11

Coming soon