Skip to main content
ClaudeWave
EN, English
jarrodwatts / Plugins

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

Claude Code
/plugin marketplace add jarrodwatts/claude-hud
/plugin install claude-hud
  1. Inside Claude Code, add the marketplace and install the plugin with the commands above.
  2. Follow any post-install configuration from the README.
  3. 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.

Installable items

2 items in this repository

configureSlash Command

Configure HUD display options (layout, language, presets, display elements) while preserving advanced manual overrides

Install
setupSlash Command

Configure claude-hud as your statusline

Install
README

Plugins overview

Full README on GitHub

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.

License Stars

Claude HUD in action

🌐 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-hud

Then 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-hud

Then 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)                   ← todos

How 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:configure

The 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
OptionTypeDefaultDescription
languageen | zh | zh-Hans | zh-Hant | zh-TWenHUD label language. Use zh or zh-Hans for Simplified Chinese and zh-Hant or zh-TW for Traditional Chinese.
lineLayoutstringexpandedLayout: expanded (multi-line) or compact (single line)
showSeparatorsbooleanfalseIn compact layout, draw a rule between the session line and the activity lines
pathLevels1-3 | full1Directory levels to show in project path, or full to show the entire absolute path
maxWidthnumber | nullnullOptional fallback width used only when terminal width detection fails completely
forceMaxWidthbooleanfalseAlways use maxWidth when it is set, even if terminal width detection returns a smaller value
elementOrderstring[]["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.
projectLineOrderstring[][]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.mergeGroupsstring[][][["context","usage"]]Expanded-mode groups that should share a line when adjacent. Set [] to disable merged lines.
display.rightAlignstring[][]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.enabledbooleantrueShow git branch in HUD
gitStatus.showDirtybooleantrueShow * for uncommitted changes
gitStatus.showAheadBehindbooleanfalseShow ↑N ↓N for ahead/behind remote
gitStatus.pushWarningThresholdnumber0Color the ahead count with the warning color at or above this unpushed-commit count (0 disables it)
gitStatus.pushCriticalThresholdnumber0Color the ahead count with the critical color at or above this unpushed-commit count (0 disables it)
gitStatus.showFileStatsbooleanfalseShow file change counts !M +A ✘D ?U
gitStatus.showWorktreebooleanfalseIn a linked git worktree, show its name after the branch, e.g. git:(feat/x) ⎇ feat-x
gitStatus.branchOverflowtruncate | wraptruncateKeep current truncation behavior or let the git block wrap onto its own line boundary when possible
jjStatus.enabledbooleanfalseOpt 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.showDirtybooleantrueShow * when the working-copy commit differs from its parent
jjStatus.showConflictsbooleantrueShow a !conflict marker when the working-copy commit has an unresolved conflict
display.showModelbooleantrueShow model name [Opus]
display.showProjectbooleantrueShow the project path
display.modelSourcestdin | auto | transcriptstdinControls 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.modelFormatfull | compact | shortfullcompact drops a context-window suffix such as (1M context); short also drops a leading Claude
display.modelOverridestring""Show this text instead of the model name (80 characters max)
display.showProviderbooleanfalseShow 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.providerNamestring""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.showAddedDirsbooleantrueShow 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.addedDirsLayoutinline | lineinlineinline 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.showContextBarbooleantrueShow visual context bar ████░░░░░░
display.contextValuepercent | tokens | remaining | bothpercentContext display format (45%, 45k/200k, 55% remaining, or 45% (45k/200k))
display.autoCompactWindownumber | nullnullWhen 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.
Topics
anthropicclaudeclaude-codeclipluginstatuslinetypescript
Frequently asked

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.

ClaudeWave Trust Score for jarrodwatts/claude-hud
Markdown (README)
[![ClaudeWave Trust Score for jarrodwatts/claude-hud](https://claudewave.com/api/badge/jarrodwatts-claude-hud)](https://claudewave.com/en/repo/jarrodwatts-claude-hud)
HTML
<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>

What the badge means and how the score is computed