claude-hud
A Claude Code plugin that shows what's happening - context usage, active tools, running agents, and todo progress
- 28.8k stars
- 1.3k forks
- 2 open issues
- Language: JavaScript
- License: MIT
- updated
Install
/plugin marketplace add jarrodwatts/claude-hud
/plugin install claude-hud- Inside Claude Code, add the marketplace and install the plugin with the commands above.
- Follow any post-install configuration from the README.
- Restart the session if commands or hooks do not show up immediately.
Editor's note
Claude HUD is a Claude Code plugin that renders a persistent status display directly in the terminal, sitting below the input prompt and updating roughly every 300 milliseconds. It hooks into Claude Code's native statusline API and parses the session transcript JSONL to surface four categories of live information: a context window bar that shifts from green to yellow to red as token usage climbs, a usage rate-limit bar with a remaining-time estimate, tool activity lines showing file reads, edits, and grep operations as they execute, and subagent tracking that names each running agent alongside elapsed time. A todo-progress line shows task completion counts in real-time. Installation runs entirely inside Claude Code via three slash commands and requires no separate terminal multiplexer. The plugin reads native token counts reported by Claude Code rather than estimating them, and it correctly scales for sessions with up to one million tokens of context. Configuration offers Full, Essential, and Minimal presets, with optional Simplified Chinese labels and advanced overrides available by editing a JSON file directly. Developers running multi-agent Claude Code workflows benefit most from the visibility into parallel subagent activity.
2 items in this repository
Plugins overview
Claude HUD
A Claude Code plugin that shows what's happening: context usage, rate limits, active tools, running agents, and todo progress, always visible below your input.

🌐 English | 中文文档
Install
Inside Claude Code, run:
/plugin marketplace add jarrodwatts/claude-hud
/plugin install claude-hud
/reload-plugins
/claude-hud:setup/claude-hud:setup points your status line at the HUD. Claude Code reloads settings on its own, so the HUD appears right away. To customize it, ask Claude or run /claude-hud:configure.
Prefer the terminal?
claude plugin marketplace add jarrodwatts/claude-hud
claude plugin install claude-hud@claude-hudThen run /reload-plugins and /claude-hud:setup inside a session.
Windows: setup says no JavaScript runtime was found
Install Node.js LTS (winget install OpenJS.NodeJS.LTS), restart your shell, and run /claude-hud:setup again.
Updates: Claude Code doesn't auto-update third-party plugins by default. To turn it on, run /plugin, open Marketplaces, select claude-hud, and choose Enable auto-update. If that option isn't there, or updates don't arrive, update by hand from the terminal:
claude plugin marketplace update claude-hud
claude plugin update claude-hud@claude-hudThen run /reload-plugins in any open session. You don't need to run setup again.
What You See
The default is two lines:
[Opus] │ my-project git:(main*)
Context █████░░░░░ 45% │ Usage ██░░░░░░░░ 25% (resets in 1h 30m)Line 1: model, a provider label when one is detected (
Bedrock,Vertex,MiniMax), project path, and git branch.Line 2: context used (green, then yellow, then red as it fills) and your subscriber rate limits.
Optional lines, which you turn on with /claude-hud:configure:
◐ Edit: auth.ts | ✓ Read ×3 | ✓ Grep ×2 ← tools
◐ explore [haiku]: Finding auth code (2m 15s) ← agents
▸ Fix authentication bug (2/5) ← todosHow It Works
Claude HUD is a status line command. Claude Code runs it with session data on stdin (model, context window, cost, rate limits, prompt cache) and shows what it prints. Some optional elements, such as the tools, agents, and todos lines, also read the session transcript. It needs no separate window or tmux and works in any terminal.
Configuration
/claude-hud:configureThe guided flow covers layout, activity lines, session info, usage, git, language, and a custom line. It previews the changes before saving and keeps every setting it doesn't ask about.
Everything else lives in ~/.claude/plugins/claude-hud/config.json (or under $CLAUDE_CONFIG_DIR). Invalid values fall back to their defaults.
If several CLAUDE_CONFIG_DIRs share one plugins/ directory, put per-directory settings in $CLAUDE_CONFIG_DIR/claude-hud.json. It uses the same shape, only needs the keys it changes, and is layered on top of the shared config:
{ "display": { "customLine": "Work Team" } }Labels are available in English (the default), Simplified Chinese (zh-Hans, alias zh), and Traditional Chinese (zh-Hant, alias zh-TW).
Options
| Option | Type | Default | Description |
|---|---|---|---|
language | en | zh | zh-Hans | zh-Hant | zh-TW | en | HUD label language. Use zh or zh-Hans for Simplified Chinese and zh-Hant or zh-TW for Traditional Chinese. |
lineLayout | string | expanded | Layout: expanded (multi-line) or compact (single line) |
showSeparators | boolean | false | In compact layout, draw a rule between the session line and the activity lines |
pathLevels | 1-3 | full | 1 | Directory levels to show in project path, or full to show the entire absolute path |
maxWidth | number | null | null | Optional fallback width used only when terminal width detection fails completely |
forceMaxWidth | boolean | false | Always use maxWidth when it is set, even if terminal width detection returns a smaller value |
elementOrder | string[] | ["project","addedDirs","context","usage","promptCache","cacheHitRate","memory","environment","tools","skills","mcp","agents","todos","sessionTime"] | Expanded-mode element order. Omit entries to hide them in expanded mode. Existing configs keep their explicit order until updated. sessionTokens isn't in the default order: add it to place the display.showSessionTokens summary like any other element, for example in a display.mergeGroups group with project. Left out, it stays on its own last line. |
projectLineOrder | string[] | [] | Optional leading order of segments within the first line, in both layouts. Visibility stays with the display.show* flags, and omitted segments retain their existing renderer order. model covers provider + model + effort (plus the context bar in compact mode); project covers path + added dirs + git as one segment. Example: ["project","model"] puts the project/git block before the model badge. |
display.mergeGroups | string[][] | [["context","usage"]] | Expanded-mode groups that should share a line when adjacent. Set [] to disable merged lines. |
display.rightAlign | string[] | [] | Starts a right-aligned suffix at the first listed element in a merged row, preserving elementOrder and padding the gap with spaces. Requires the anchor to be in a display.mergeGroups group that actually renders on one line. Ignored when the terminal width is unknown, the anchor is first, or there is no room for padding. Example: ["context"] with a ["project","context","usage"] group keeps project/git left and pins context + usage right. |
gitStatus.enabled | boolean | true | Show git branch in HUD |
gitStatus.showDirty | boolean | true | Show * for uncommitted changes |
gitStatus.showAheadBehind | boolean | false | Show ↑N ↓N for ahead/behind remote |
gitStatus.pushWarningThreshold | number | 0 | Color the ahead count with the warning color at or above this unpushed-commit count (0 disables it) |
gitStatus.pushCriticalThreshold | number | 0 | Color the ahead count with the critical color at or above this unpushed-commit count (0 disables it) |
gitStatus.showFileStats | boolean | false | Show file change counts !M +A ✘D ?U |
gitStatus.showWorktree | boolean | false | In a linked git worktree, show its name after the branch, e.g. git:(feat/x) ⎇ feat-x |
gitStatus.branchOverflow | truncate | wrap | truncate | Keep current truncation behavior or let the git block wrap onto its own line boundary when possible |
jjStatus.enabled | boolean | false | Opt in to jj (Jujutsu) status. When enabled and a real .jj directory is found, jj is used instead of git for that repo — never both |
jjStatus.showDirty | boolean | true | Show * when the working-copy commit differs from its parent |
jjStatus.showConflicts | boolean | true | Show a !conflict marker when the working-copy commit has an unresolved conflict |
display.showModel | boolean | true | Show model name [Opus] |
display.showProject | boolean | true | Show the project path |
display.modelSource | stdin | auto | transcript | stdin | Controls which source the model name comes from. stdin preserves the default behavior and always uses what Claude Code reports. auto opts into proxy redirect detection by using transcript models only for non-Claude models. transcript always uses the model from the API response. Transcript model values are terminal-sanitized and capped at 80 characters |
display.modelFormat | full | compact | short | full | compact drops a context-window suffix such as (1M context); short also drops a leading Claude |
display.modelOverride | string | "" | Show this text instead of the model name (80 characters max) |
display.showProvider | boolean | false | Show the provider label before the model name, e.g. [Bedrock | Opus 4.6]. Useful when a custom proxy serves identically-named models from different providers. When off, an auto-detected provider still trails the model as before |
display.providerName | string | "" | Explicit provider label used with display.showProvider, e.g. for a custom proxy that can't be auto-detected. Falls back to the auto-detected provider (Bedrock/Vertex/MiniMax/Enterprise) when empty; capped at 40 chars |
display.showAddedDirs | boolean | true | Show extra workspace directories from /add-dir (e.g. +sparkle +lib-foo); empty array renders nothing. In both layouts at most 5 dirs render (overflow shown as +N more) and basenames are truncated to 24 chars with … |
display.addedDirsLayout | inline | line | inline | inline puts dirs next to the project name with a +name prefix per dir; line renders them on a separate Added dirs: name1, name2 line (no + prefix, comma-separated) |
display.showContextBar | boolean | true | Show visual context bar ████░░░░░░ |
display.contextValue | percent | tokens | remaining | both | percent | Context display format (45%, 45k/200k, 55% remaining, or 45% (45k/200k)) |
display.autoCompactWindow | number | null | null | When set to a positive number such as 200000, compute the context percentage against this auto-compact window instead of the full model context window, matching the /context figure. Leave unset or null to preserve default full-window behavior. |
What people ask about claude-hud
What is jarrodwatts/claude-hud?
jarrodwatts/claude-hud is plugins for the Claude AI ecosystem. A Claude Code plugin that shows what's happening - context usage, active tools, running agents, and todo progress It has 28.8k GitHub stars and its last recorded update is dated 2026-10-21.
How do I install claude-hud?
You can install claude-hud by cloning the repository (https://github.com/jarrodwatts/claude-hud) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is jarrodwatts/claude-hud safe to use?
Our security agent has analyzed jarrodwatts/claude-hud and assigned a Trust Score of 100/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains jarrodwatts/claude-hud?
jarrodwatts/claude-hud is maintained by jarrodwatts. The last recorded GitHub activity is dated 2026-10-21, with 2 open issues.
Are there alternatives to claude-hud?
Yes. On ClaudeWave you can browse similar plugins at /categories/plugins, sorted by popularity or recent activity.
Maintain this repo? Show its Trust Score in your README
The badge shows this repository's current Trust Score and verdict, and links back to this page. It follows the catalogue data: nobody can buy or edit the score it displays.
[](https://claudewave.com/en/repo/jarrodwatts-claude-hud)<a href="https://claudewave.com/en/repo/jarrodwatts-claude-hud"><img src="https://claudewave.com/api/badge/jarrodwatts-claude-hud" alt="ClaudeWave Trust Score for jarrodwatts/claude-hud" width="320" height="64"></a>