jarrodwatts/claude-hudPublic

A Claude Code plugin that shows what's happening - context usage, active tools, running agents, and todo progress

AI summary: A heads-up display extension for Claude, enhancing productivity with quick actions.

Stars
27.2K
+76 today
Forks
1.3K
Watchers
36
Open issues
7
Open PRs
3
Contributors
~106
Commits
712
Branches
57

JavaScriptMITCreated Jan 2, 2026Last push 3d agoLatest release v0.6.0+245 stars this week+288 this month

Star history

since Dec 28, 2025
010K20KDec 2025Mar 2026May 2026Aug 2026
27.2K stars as of Aug 7, 2026, tracked back to Dec 28, 2025. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulMonWedFri2025-08-02: 0 commits2025-08-03: 0 commits2025-08-04: 0 commits2025-08-05: 0 commits2025-08-06: 0 commits2025-08-07: 0 commits2025-08-08: 0 commits2025-08-09: 0 commits2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 29 commits2026-01-03: 107 commits2026-01-04: 9 commits2026-01-05: 8 commits2026-01-06: 2 commits2026-01-07: 7 commits2026-01-08: 3 commits2026-01-09: 2 commits2026-01-10: 0 commits2026-01-11: 2 commits2026-01-12: 4 commits2026-01-13: 3 commits2026-01-14: 9 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 10 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 9 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 1 commit2026-02-07: 0 commits2026-02-08: 1 commit2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 2 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 20 commits2026-03-04: 0 commits2026-03-05: 10 commits2026-03-06: 5 commits2026-03-07: 0 commits2026-03-08: 1 commit2026-03-09: 7 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 2 commits2026-03-14: 15 commits2026-03-15: 1 commit2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 2 commits2026-03-20: 14 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 27 commits2026-03-24: 2 commits2026-03-25: 2 commits2026-03-26: 1 commit2026-03-27: 1 commit2026-03-28: 1 commit2026-03-29: 1 commit2026-03-30: 1 commit2026-03-31: 0 commits2026-04-01: 2 commits2026-04-02: 0 commits2026-04-03: 5 commits2026-04-04: 44 commits2026-04-05: 4 commits2026-04-06: 1 commit2026-04-07: 1 commit2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 1 commit2026-04-11: 3 commits2026-04-12: 8 commits2026-04-13: 1 commit2026-04-14: 0 commits2026-04-15: 4 commits2026-04-16: 7 commits2026-04-17: 0 commits2026-04-18: 2 commits2026-04-19: 0 commits2026-04-20: 36 commits2026-04-21: 2 commits2026-04-22: 10 commits2026-04-23: 4 commits2026-04-24: 6 commits2026-04-25: 2 commits2026-04-26: 2 commits2026-04-27: 1 commit2026-04-28: 2 commits2026-04-29: 6 commits2026-04-30: 9 commits2026-05-01: 1 commit2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 2 commits2026-05-07: 5 commits2026-05-08: 2 commits2026-05-09: 3 commits2026-05-10: 0 commits2026-05-11: 4 commits2026-05-12: 6 commits2026-05-13: 6 commits2026-05-14: 2 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 7 commits2026-05-23: 1 commit2026-05-24: 0 commits2026-05-25: 1 commit2026-05-26: 3 commits2026-05-27: 0 commits2026-05-28: 4 commits2026-05-29: 4 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 3 commits2026-06-03: 2 commits2026-06-04: 3 commits2026-06-05: 0 commits2026-06-06: 1 commit2026-06-07: 1 commit2026-06-08: 0 commits2026-06-09: 7 commits2026-06-10: 1 commit2026-06-11: 4 commits2026-06-12: 3 commits2026-06-13: 1 commit2026-06-14: 0 commits2026-06-15: 4 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 5 commits2026-06-19: 12 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 3 commits2026-07-13: 17 commits2026-07-14: 2 commits2026-07-15: 5 commits2026-07-16: 4 commits2026-07-17: 2 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 10 commits2026-07-21: 2 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits
627 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    27,209 stars

  • Very active

    627 commits in 52 weeks

  • Community-driven

    ~106 contributors

  • Well documented

    High community health score

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

  • Repeat trending

    5 trending appearances

What claude-hud does

Claude HUD is a browser extension that overlays a minimalist, highly functional heads-up display on top of the Claude web interface. It provides users with immediate access to custom prompts, quick-copy buttons for code blocks, and a history of recent interactions without navigating away from the current chat. By streamlining repetitive actions and providing a more power-user oriented interface, it significantly improves the efficiency of interacting with the AI. The extension is built with React and heavily focuses on a clean, unobtrusive user experience.

Claude HUD is ideal for heavy users of the Claude web interface, including developers, writers, and researchers who want to optimize their workflow. It requires a compatible Chromium-based or Firefox browser.

  • Custom Prompt Library: Save and quickly access your most frequently used prompts via a customizable sidebar.
  • Enhanced Code Blocks: Adds one-click copy buttons, syntax highlighting toggles, and direct execution links for code snippets.
  • Chat History Search: Quickly filter and search through past conversations directly from the HUD.
  • Keyboard Shortcuts: Navigate the interface and trigger actions entirely via customizable hotkeys.
  • Minimalist Design: The overlay is designed to be unobtrusive and seamlessly blend with Claude's native UI.

Where teams use it

Power Users

Accelerate workflows by utilizing keyboard shortcuts and saved prompts for repetitive tasks.

Software Developers

Easily manage, copy, and organize code snippets generated during problem-solving sessions.

Content Creators

Store and quickly deploy specific brand voice instructions and formatting templates.

Researchers

Keep track of complex prompt chains and quickly retrieve information from past deep-dive conversations.

Getting started: Download from the Chrome Web Store or follow instructions in the README to load unpacked.

README

main branch

Claude HUD

A Claude Code plugin that shows what's happening — context usage, active tools, running agents, and todo progress. Always visible below your input.

License Stars

Claude HUD in action

🌐 English | 中文文档

Install

Inside a Claude Code instance, run the following commands:

Step 1: Add the marketplace

/plugin marketplace add jarrodwatts/claude-hud

Step 2: Install the plugin

⚠️ Linux users: Click here if install fails with an EXDEV error

On older Claude Code versions, /tmp being a separate filesystem (tmpfs) caused plugin installation to fail with:

EXDEV: cross-device link not permitted

This Claude Code bug has since been fixed — if you hit it, update Claude Code first. If you can't update, set TMPDIR before installing:

mkdir -p ~/.cache/tmp && TMPDIR=~/.cache/tmp claude

Then run the install command below in that session.

/plugin install claude-hud

After that, reload plugins (no restart needed):

/reload-plugins
Prefer the terminal?

Steps 1–2 can also be done outside a session with the Claude Code CLI:

claude plugin marketplace add jarrodwatts/claude-hud
claude plugin install claude-hud@claude-hud

Then run /reload-plugins inside your session (or start a new one).

Step 3: Configure the statusline

/claude-hud:setup
⚠️ Windows users: Click here if setup says no JavaScript runtime was found

On Windows, Node.js LTS is the supported runtime for Claude HUD setup. If setup says no JavaScript runtime was found, install Node.js for your shell first:

winget install OpenJS.NodeJS.LTS

Then restart your shell and run /claude-hud:setup again.

Done! Claude Code reloads settings automatically — the HUD appears after your next message, no restart needed. If it doesn't show up, restart Claude Code (older versions require a restart to pick up statusLine changes).


What is Claude HUD?

Claude HUD gives you better insights into what's happening in your Claude Code session.

What You See Why It Matters
Project path Know which project you're in (configurable 1-3 directory levels)
Context health Know exactly how full your context window is before it's too late
Tool activity Watch Claude read, edit, and search files as it happens
Agent tracking See which subagents are running and what they're doing
Todo progress Track task completion in real-time

What You See

Default (2 lines)

[Opus] │ my-project git:(main*)
Context █████░░░░░ 45% │ Usage ██░░░░░░░░ 25% (1h 30m / 5h)
  • Line 1 — Model, provider label when positively identified (for example Bedrock, Vertex), project path, git branch
  • Line 2 — Context bar (green → yellow → red) and usage rate limits

Optional lines (enable via /claude-hud:configure)

◐ Edit: auth.ts | ✓ Read ×3 | ✓ Grep ×2        ← Tools activity
◐ explore [haiku]: Finding auth code (2m 15s)    ← Agent status
▸ Fix authentication bug (2/5)                   ← Todo progress

How It Works

Claude HUD uses Claude Code's native statusline API — no separate window, no tmux required, works in any terminal.

Claude Code → stdin JSON → claude-hud → stdout → displayed in your terminal
           ↘ transcript JSONL (tools, agents, todos)

Key features:

  • Native token data from Claude Code (not estimated)
  • Scales with Claude Code's reported context window size, including newer 1M-context sessions
  • Parses the transcript for tool/agent activity
  • Re-renders after each interaction (new assistant messages, /compact, permission changes, vim-mode toggles), debounced at 300ms

Configuration

Customize your HUD anytime:

/claude-hud:configure

The guided flow handles layout, language, and common display toggles. Advanced overrides such as custom colors and thresholds are preserved there, but you set them by editing the config file directly:

  • First time setup: Choose a preset (Full/Essential/Minimal), pick a label language, then fine-tune individual elements
  • Customize anytime: Toggle items on/off, adjust git display style, switch layouts, or change label language
  • Preview before saving: See exactly how your HUD will look before committing changes

Presets

Preset What's Shown
Full Everything enabled — tools, agents, todos, git, usage, duration
Essential Activity lines + git status, minimal info clutter
Minimal Core only — just model name and context bar

After choosing a preset, you can turn individual elements on or off.

Manual Configuration

Edit ~/.claude/plugins/claude-hud/config.json directly for advanced settings such as colors.*, pathLevels, maxWidth, threshold overrides, display.timeFormat, and display.promptCacheTtlSeconds. Running /claude-hud:configure preserves those manual settings while still letting you change language, layout, and the common guided toggles.

Simplified and Traditional Chinese HUD labels are available as explicit opt-ins. English stays the default unless you choose a Chinese locale in /claude-hud:configure or set language in config. The zh alias maps to Simplified Chinese, and zh-TW maps to Traditional Chinese. Guided config writes the canonical zh-Hans or zh-Hant value.

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)
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","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.
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.
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.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.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.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/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.
display.showConfigCounts boolean false Show CLAUDE.md, rules, MCPs, hooks counts
display.showCost boolean false Show session cost using Claude Code's native cost.total_cost_usd when available, with a local estimate fallback for direct Anthropic sessions
display.showRoutedCost boolean false Also show cost for routed providers (Bedrock/Vertex), which showCost hides by default. Requires showCost too. Uses the native cost.total_cost_usd when positive (Cost), otherwise the token estimate (Est.)
display.showOutputStyle boolean false Show the active Claude Code outputStyle from settings files as style: <name>
display.showDuration boolean false Show session duration ⏱️ 5m
display.showSpeed boolean false Show output token speed out: 42.1 tok/s
display.showUsage boolean true Show Claude subscriber usage limits when available
display.usageValue percent | remaining percent Usage display format (25% used, or 75% remaining)
display.usageBarEnabled boolean true Display usage as visual bar instead of text
display.usageCompact boolean false Display usage in a shorter text form such as 5h: 25% (1h 30m); takes precedence over display.usageBarEnabled
display.showResetLabel boolean true Show the resets in prefix before usage countdowns
display.timeFormat relative | absolute | both | elapsed | elapsedAndAbsolute relative How usage-window time is shown: countdown only (resets in 2h 30m), wall-clock reset (resets at 14:30), both, elapsed window percentage (53% elapsed), or elapsed plus wall-clock reset
display.sevenDayThreshold 0-100 80 Show 7-day usage when >= threshold (0 = always)
display.externalUsagePath string "" Optional absolute path to a local usage snapshot file. Relative paths are ignored. When stdin rate_limits are present, only balance_label is appended; when they are missing, valid usage windows can be used as a fallback
display.externalUsageWritePath string "" Optional absolute .json path in an existing directory. When stdin rate_limits exists, ClaudeHUD writes a private snapshot for other local tools. Relative paths, non-json files, and missing parent directories are ignored
display.externalUsageFreshnessMs number 300000 Maximum allowed age for the external usage snapshot before it is ignored
display.showTokenBreakdown boolean true Show token details at high context (85%+)
display.showTools boolean false Show tools activity line
display.showSkills boolean false Show active Skills detected from Skill tool invocations
display.showMcp boolean false Show active MCP servers detected from mcp__server__tool invocations
display.toolNameMaxLength number 0 Maximum displayed tool-name length. 0 keeps full names; MCP names may shorten to their final segment when truncating
display.toolsMaxVisible number 4 Maximum completed tools shown on the tools line. 0 means unlimited
display.showAgents boolean false Show agents activity line
display.showTodos boolean false Show todos progress line
display.showSessionName boolean false Show session slug or custom title from /rename
display.showAuth boolean false Show the auth method (subscription plan) of the current login as its own segment at the end of the first line, e.g. Claude Max 20x. Derived from the oauthAccount block in {CLAUDE_CONFIG_DIR}.json; shows API Key when there is no OAuth login but ANTHROPIC_API_KEY is set
display.showAuthUser boolean false Show the logged-in account (email local part, falling back to profile display name) next to the auth method
display.authUserLength number 8 Maximum characters of the account name to display before truncating with . 0 shows the full name
display.showAdvisor boolean false Inline the model configured via Claude Code's /advisor on the project line, e.g. Advisor: Opus 4.7. Read from the advisorModel field that Claude Code stamps on each assistant transcript record; sanitised and capped at 64 chars before rendering
display.advisorOverride string "" Optional manual override for the displayed advisor label. When non-empty, replaces transcript-driven detection. Also sanitised and capped at 64 chars
display.showSessionStartDate boolean false Show the transcript session start timestamp
display.showLastResponseAt boolean false Show how long ago the last assistant response was written
display.showCompactions boolean false Show how many context compactions (manual /compact or auto) have occurred this session, counted from transcript compact_boundary entries, e.g. Compactions: 2. Hidden until the first compaction
display.showEffortLevel boolean false Show the current reasoning effort in the model badge. Ultracode renders as ultracode(xhigh), detected from the session transcript so it tracks /effort changes made at runtime
display.showClaudeCodeVersion boolean false Show the installed Claude Code version, e.g. CC v2.1.81
display.showMemoryUsage boolean false Show an approximate system RAM usage line in expanded layout
display.showPromptCache boolean false Show a prompt cache countdown based on the last assistant response timestamp in the transcript
display.promptCacheTtlSeconds number 300 Prompt cache TTL in seconds. Keep the default for Pro, set 3600 for Max
colors.context color value green Base color for the context bar and context percentage
colors.usage color value brightBlue Base color for usage bars and percentages below warning thresholds
colors.warning color value yellow Warning color for context thresholds and usage warning text
colors.usageWarning color value brightMagenta Warning color for usage bars and percentages near their threshold
colors.critical color value red Critical color for limit-reached states and critical thresholds
colors.model color value cyan Color for the model badge such as [Opus]
colors.project color value yellow Color for the project path
colors.git color value magenta Color for git wrapper text such as git:( and )
colors.gitBranch color value cyan Color for the git branch and branch status text
colors.label color value dim Color for labels and secondary metadata such as Context, Usage, counts, and progress text
colors.custom color value 208 Color for the optional custom line
colors.barFilled string Character used for the filled portion of progress bars
colors.barEmpty string Character used for the empty portion of progress bars

colors.barFilled and colors.barEmpty accept a single visible grapheme. Control characters, invisible format characters (bidi controls, zero-width joiners, variation selectors), line/paragraph separators, and noncharacters are rejected. Wide characters (emoji, CJK) may affect bar alignment depending on the terminal.

Supported color names: dim, red, green, yellow, magenta, cyan, brightBlue, brightMagenta. You can also use a 256-color number (0-255) or hex (#rrggbb).

display.showMemoryUsage is fully opt-in and only renders in expanded layout. It reports approximate system RAM usage from the local machine, not precise memory pressure inside Claude Code or a specific process. The number may overstate actual pressure because reclaimable OS cache and buffers can still be counted as used memory.

display.showCost is fully opt-in. ClaudeHUD prefers the native cost.total_cost_usd field that Claude Code provides on stdin when it is available. If that field is absent or invalid for a direct Anthropic session, ClaudeHUD falls back to the existing local transcript-based estimate so the cost line still works on older payloads. The native field is absent before the first API response in a session, so the cost display may stay hidden until then. ClaudeHUD also keeps the cost hidden for known routed providers such as Bedrock and Vertex AI, because cloud-provider billed sessions may report $0.00 or omit the field even though the session was not literally free. Set display.showRoutedCost: true (alongside showCost) to opt into cost for those providers anyway: the native cost.total_cost_usd is shown as Cost when positive, otherwise ClaudeHUD falls back to a token-based Est. from the Anthropic pricing table.

display.showPromptCache is fully opt-in. When enabled, ClaudeHUD looks at the timestamp of the last assistant response in the local transcript and shows a live countdown until the prompt cache expires. The default TTL is 5 minutes (300 seconds). Set display.promptCacheTtlSeconds to 3600 if you want a 1-hour Max-style window. If the transcript does not have an assistant timestamp yet, the cache element stays hidden.

Usage Limits

Usage display is enabled by default when Claude Code provides subscriber rate_limits data on stdin. It shows your rate limit consumption on line 2 alongside the context bar.

Set display.usageValue to remaining to show quota left instead of quota used. Warning colors and 7-day threshold checks still use the underlying used percentage.

ClaudeHUD prefers the official statusline stdin payload for rate-limit windows. If display.externalUsagePath points to a fresh local sidecar snapshot, ClaudeHUD can append its balance_label alongside stdin windows. If stdin rate_limits are missing, the same snapshot can provide fallback usage windows.

The fallback snapshot path must be absolute. The snapshot must be fresh enough (display.externalUsageFreshnessMs) and include valid updated_at, plus a five_hour window, seven_day window, or balance_label. balance_label is optional text for prepaid provider balances; it is trimmed, length-limited, and sanitized before display. Relative paths, invalid JSON, stale files, or invalid timestamps are ignored quietly.

Set display.externalUsageWritePath if you want ClaudeHUD to write the official stdin rate_limits into a local snapshot for other tools. The path must be absolute, end in .json, and live in an existing directory. ClaudeHUD writes the file with private permissions and ignores invalid paths quietly.

Free/weekly-only accounts render the weekly window by itself instead of showing a ghost 5h: -- placeholder.

The 7-day percentage appears when above the display.sevenDayThreshold (default 80%):

Context █████░░░░░ 45% │ Usage ██░░░░░░░░ 25% (1h 30m / 5h) | ██████████ 85% (2d / 7d)

To disable, set display.showUsage to false.

Reset times use relative countdowns by default. Set display.timeFormat to absolute for wall-clock times, both to show both forms, elapsed to show how far through each usage window you are, or elapsedAndAbsolute to show elapsed window progress plus the wall-clock reset time. This setting is manual-only today; /claude-hud:configure preserves it without editing it.

Set display.showResetLabel to false if you want shorter usage countdowns such as (3h 17m) instead of (resets in 3h 17m).

Set display.usageCompact to true if you want the shorter usage-only form, for example 5h: 25% (1h 30m). Compact usage takes precedence over display.usageBarEnabled.

Security Notes

ClaudeHUD is local-only by design. It does not make network requests, scrape credentials, or call undocumented Claude APIs. It reads the statusline JSON from stdin, the current session transcript path supplied by Claude Code, selected Claude configuration files under ~/.claude, and git metadata for the current workspace.

HUD cache files are written under ~/.claude/plugins/claude-hud with private permissions on POSIX filesystems. The cache stores derived display metadata such as context percentages, token counters, activity names, and the resolved Claude Code version.

--extra-cmd is disabled unless CLAUDE_HUD_ALLOW_EXTRA_CMD=1 (or true, yes, on) is present in the HUD process environment. Treat this option as arbitrary code execution: it runs the supplied shell command with your user privileges on statusline refreshes. Do not use commands copied from untrusted sources.

Requirements:

  • Claude Code must include subscriber rate_limits data on stdin for the current session
  • Not available for API-key-only users

Troubleshooting: If usage doesn't appear:

  • Ensure you're logged in with a Claude subscriber account (not API key)
  • Check display.showUsage is not set to false in config
  • API users see no usage display (they have pay-per-token, not rate limits)
  • AWS Bedrock models display Bedrock and hide usage limits (usage is managed in AWS)
  • Bedrock and Vertex AI models hide cost estimates by default (billing differs from Anthropic direct); opt in with display.showRoutedCost
  • Claude Code may leave rate_limits empty until after the first model response in a session
  • Some Claude Code builds and subscription tiers may still omit rate_limits, even after the first response
  • If you configured display.externalUsagePath, ClaudeHUD will try that local snapshot before hiding usage
  • ClaudeHUD never falls back to credential scraping or undocumented API calls

Example fallback snapshot:

{
  "updated_at": "2026-04-20T12:00:00.000Z",
  "five_hour": {
    "used_percentage": 42,
    "resets_at": "2026-04-20T15:00:00.000Z"
  },
  "seven_day": {
    "used_percentage": 84,
    "resets_at": "2026-04-27T12:00:00.000Z"
  }
}

Example Configuration

{
  "language": "zh",
  "lineLayout": "expanded",
  "pathLevels": 2,
  "elementOrder": ["project", "tools", "skills", "mcp", "context", "usage", "memory", "environment", "agents", "todos", "sessionTime"],
  "projectLineOrder": ["project", "model"],
  "gitStatus": {
    "enabled": true,
    "showDirty": true,
    "showAheadBehind": true,
    "showFileStats": true
  },
  "jjStatus": {
    "enabled": true,
    "showDirty": true,
    "showConflicts": true
  },
  "display": {
    "showTools": true,
    "showSkills": true,
    "showMcp": true,
    "showAgents": true,
    "showTodos": true,
    "showConfigCounts": true,
    "showDuration": true,
    "showMemoryUsage": true
  },
  "colors": {
    "context": "cyan",
    "usage": "cyan",
    "warning": "yellow",
    "usageWarning": "magenta",
    "critical": "red",
    "model": "cyan",
    "project": "yellow",
    "git": "magenta",
    "gitBranch": "cyan",
    "label": "dim",
    "custom": "#FF6600"
  }
}

Display Examples

1 level (default): [Opus] │ my-project git:(main)

2 levels: [Opus] │ apps/my-project git:(main)

3 levels: [Opus] │ dev/apps/my-project git:(main)

With dirty indicator: [Opus] │ my-project git:(main*)

With ahead/behind: [Opus] │ my-project git:(main ↑2 ↓1)

With file stats: [Opus] │ my-project git:(main* !3 +1 ?2)

  • ! = modified files, + = added/staged, = deleted, ? = untracked
  • Counts of 0 are omitted for cleaner display

Jujutsu (jj) support

Set jjStatus.enabled to true to opt in. When a real .jj directory is found in (or above) the working directory, the HUD shows jj-native status instead of git — the two are mutually exclusive per invocation, even in a colocated jj+git repo. If jj cannot be queried safely, a colocated repository falls back to its existing git status.

With a bookmark: [Opus] │ my-project jj:(mybookmark)

Anonymous change (no bookmark at @): [Opus] │ my-project jj:(wrulwzyw)

Dirty working copy: [Opus] │ my-project jj:(mybookmark*)

Unresolved conflict: [Opus] │ my-project jj:(mybookmark !conflict)

Ahead/behind counts and per-file change stats are git-only in this version — jj's equivalent requires more expensive revset queries against remote_bookmarks(), so they're left out to keep the jj status fetch to a single subprocess call.

The HUD runs jj in prompt-safe, read-only mode: it disables the pager, ignores the live working copy, and reads the current operation without reconciling it. That avoids snapshotting files or mutating repository state during statusline refreshes. As a result, the dirty marker reflects jj's most recent working-copy snapshot and can remain stale until another jj command records new changes.

Auto-Refresh

Claude Code only re-runs the statusline after an interaction (a new assistant message, /compact finishing, a permission-mode change, or a vim-mode toggle), so time-based HUD info — session duration, usage reset countdowns, the prompt-cache countdown — goes stale between messages. To keep it ticking, add refreshInterval (seconds, minimum 1) to the statusLine entry in ~/.claude/settings.json:

{
  "statusLine": {
    "type": "command",
    "command": "...",
    "refreshInterval": 5
  }
}

/claude-hud:setup offers this during installation. Each refresh re-runs the HUD command, so 5 seconds is a good default; use 1 second only if you want visibly smooth countdowns.

Disabling the HUD Temporarily

Set the CLAUDE_HUD_DISABLE environment variable to launch a session without the HUD — no need to remove the statusLine entry from settings.json:

CLAUDE_HUD_DISABLE=1 claude

Leaving it unset (or setting an explicit negative: 0, false, off, no) keeps the HUD enabled. When disabled, the HUD exits immediately without reading the transcript or running git, so the statusline simply stays empty for that session.

Troubleshooting

Config not applying?

  • Check for JSON syntax errors: invalid JSON silently falls back to defaults
  • Ensure valid values: pathLevels must be 1, 2, 3, or full; lineLayout must be expanded or compact; maxWidth must be a positive number
  • Delete config and run /claude-hud:configure to regenerate

Git status missing?

  • Verify you're in a git repository
  • Check gitStatus.enabled is not false in config

jj status missing, or seeing git:(...) in a jj repo?

  • Verify a .jj directory exists at or above the working directory
  • Set jjStatus.enabled to true in config (jj support is opt-in)
  • Verify the jj binary is installed and on PATH

Tool/skill/MCP/agent/todo lines missing?

  • These are hidden by default — enable with showTools, showSkills, showMcp, showAgents, showTodos in config
  • They also only appear when there's activity to show

HUD not appearing after setup?

  • Send any message — settings reload automatically, but the statusline only renders after your next interaction
  • If it still doesn't appear, restart Claude Code (fully quit and run claude again) — older Claude Code versions require a restart to pick up statusLine changes
  • Make sure CLAUDE_HUD_DISABLE is not set in your environment (e.g. exported from a shell profile) — it silences the HUD entirely, including setup verification

Requirements

  • Claude Code v1.0.80+
  • macOS/Linux: Node.js 18+ or Bun
  • Windows: Node.js 18+

Development

git clone https://github.com/jarrodwatts/claude-hud
cd claude-hud
npm ci && npm run build
npm test

See CONTRIBUTING.md for guidelines.


License

MIT — see LICENSE


Star History

Star History Chart

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

14 total
  1. v0.6.0v0.6.0Jul 20, 2026

    ### Added - Support `pathLevels: "full"` to show the entire absolute working directory in the project badge, instead of being capped at the last 3 segments (#678). - Allow users to reorder visible first-line segments with `projectLineOrder` while preserving the existing default output (#680). ### Fixed - Show each agent's resolved runtime model when the launch input omits a model alias, while preserving unknown and provider-qualified model identifiers (#679). ### Security - Keep full working-directory paths terminal-safe across compact, expanded, and reordered layouts by stripping control and bidirectional characters before rendering (#678, #680).

  2. v0.5.1v0.5.1Jul 20, 2026

    ### Fixed - Align context, usage, and opt-in memory progress bars by terminal cell width in CJK locales, including merged and narrow layouts (#673).

  3. v0.5.0v0.5.0Jul 15, 2026

    ### Added - Render bounded model-scoped weekly usage windows from Claude Code statusline input in expanded and compact layouts, including remaining-value, reset-time, threshold, and custom-color modes (#669). ### Security - Sanitize and bound model-scoped usage labels and values before terminal rendering, and keep scoped-only input from overwriting shared external usage snapshots (#669). - Clean compiled output before every build and enforce source-to-artifact parity so removed modules cannot remain in release packages (#670).

  4. v0.4.2v0.4.2Jul 15, 2026

    ### Fixed - Show a useful git ref for detached HEAD sessions by preferring exact tags and falling back to a linked short commit label (#664). - Preserve slash-separated branch names in GitHub branch links so clicking the HUD branch opens the expected remote branch (#664). - Allow opt-in `--extra-cmd` hooks to use the last non-empty line of sanitized plain-text output in addition to JSON labels (#664). - Strip control and bidirectional characters from Git refs in compact rendering (#664).

  5. v0.4.1v0.4.1Jul 13, 2026

    ### Fixed - Restore the default 80% weekly-usage threshold when the setting is omitted or invalid, preventing the weekly segment from appearing at 0% while preserving the existing usage and environment defaults (#662).

Code frequency

additions and deletions
+20.7K-20.7KWeek of 2025-12-28: +20,720 linesWeek of 2025-12-28: -17,363 linesWeek of 2026-01-04: +6,645 linesWeek of 2026-01-04: -1,994 linesWeek of 2026-01-11: +1,892 linesWeek of 2026-01-11: -516 linesWeek of 2026-01-18: +825 linesWeek of 2026-01-18: -94 linesWeek of 2026-01-25: +0 linesWeek of 2026-01-25: -0 linesWeek of 2026-02-01: +1,298 linesWeek of 2026-02-01: -808 linesWeek of 2026-02-08: +7 linesWeek of 2026-02-08: -7 linesWeek of 2026-02-15: +24 linesWeek of 2026-02-15: -16 linesWeek of 2026-02-22: +0 linesWeek of 2026-02-22: -0 linesWeek of 2026-03-01: +3,954 linesWeek of 2026-03-01: -812 linesWeek of 2026-03-08: +2,091 linesWeek of 2026-03-08: -388 linesWeek of 2026-03-15: +4,322 linesWeek of 2026-03-15: -3,715 linesWeek of 2026-03-22: +4,145 linesWeek of 2026-03-22: -3,790 linesWeek of 2026-03-29: +5,341 linesWeek of 2026-03-29: -1,856 linesWeek of 2026-04-05: +697 linesWeek of 2026-04-05: -157 linesWeek of 2026-04-12: +2,020 linesWeek of 2026-04-12: -140 linesWeek of 2026-04-19: +4,743 linesWeek of 2026-04-19: -1,261 linesWeek of 2026-04-26: +1,444 linesWeek of 2026-04-26: -325 linesWeek of 2026-05-03: +690 linesWeek of 2026-05-03: -120 linesWeek of 2026-05-10: +1,142 linesWeek of 2026-05-10: -285 linesWeek of 2026-05-17: +516 linesWeek of 2026-05-17: -120 linesWeek of 2026-05-24: +1,633 linesWeek of 2026-05-24: -127 linesWeek of 2026-05-31: +537 linesWeek of 2026-05-31: -73 linesWeek of 2026-06-07: +1,734 linesWeek of 2026-06-07: -267 linesWeek of 2026-06-14: +2,560 linesWeek of 2026-06-14: -786 linesWeek of 2026-06-21: +0 linesWeek of 2026-06-21: -0 linesWeek of 2026-06-28: +0 linesWeek of 2026-06-28: -0 linesWeek of 2026-07-05: +0 linesWeek of 2026-07-05: -0 linesWeek of 2026-07-12: +3,993 linesWeek of 2026-07-12: -1,699 linesWeek of 2026-07-19: +2,536 linesWeek of 2026-07-19: -332 linesWeek of 2026-07-26: +0 linesWeek of 2026-07-26: -0 linesDec 28, 2025Jul 26, 2026
+75.5K lines added, -37.1K removed over the last year.

Commits per week

last 52 weeks
1360Week of 2025-08-02: 0 commitsWeek of 2025-08-09: 0 commitsWeek of 2025-08-16: 0 commitsWeek of 2025-08-23: 0 commitsWeek of 2025-08-30: 0 commitsWeek of 2025-09-06: 0 commitsWeek of 2025-09-13: 0 commitsWeek of 2025-09-20: 0 commitsWeek of 2025-09-27: 0 commitsWeek of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 136 commitsWeek of 2026-01-04: 31 commitsWeek of 2026-01-11: 18 commitsWeek of 2026-01-18: 10 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 10 commitsWeek of 2026-02-08: 1 commitsWeek of 2026-02-15: 2 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 35 commitsWeek of 2026-03-08: 25 commitsWeek of 2026-03-15: 17 commitsWeek of 2026-03-22: 34 commitsWeek of 2026-03-29: 53 commitsWeek of 2026-04-05: 10 commitsWeek of 2026-04-12: 22 commitsWeek of 2026-04-19: 60 commitsWeek of 2026-04-26: 21 commitsWeek of 2026-05-03: 12 commitsWeek of 2026-05-10: 18 commitsWeek of 2026-05-17: 8 commitsWeek of 2026-05-24: 12 commitsWeek of 2026-05-31: 9 commitsWeek of 2026-06-07: 17 commitsWeek of 2026-06-14: 21 commitsWeek of 2026-06-21: 0 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 33 commitsWeek of 2026-07-19: 12 commitsWeek of 2026-07-26: 0 commitsAug 2, 2025Jul 26, 2026
627 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 1 commitsSun 1:00 — 2 commitsSun 2:00 — 0 commitsSun 3:00 — 1 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 1 commitsSun 10:00 — 2 commitsSun 11:00 — 0 commitsSun 12:00 — 2 commitsSun 13:00 — 1 commitsSun 14:00 — 1 commitsSun 15:00 — 0 commitsSun 16:00 — 0 commitsSun 17:00 — 1 commitsSun 18:00 — 1 commitsSun 19:00 — 2 commitsSun 20:00 — 4 commitsSun 21:00 — 6 commitsSun 22:00 — 2 commitsSun 23:00 — 6 commitsMon 0:00 — 5 commitsMon 1:00 — 2 commitsMon 2:00 — 1 commitsMon 3:00 — 6 commitsMon 4:00 — 6 commitsMon 5:00 — 2 commitsMon 6:00 — 0 commitsMon 7:00 — 6 commitsMon 8:00 — 14 commitsMon 9:00 — 10 commitsMon 10:00 — 7 commitsMon 11:00 — 6 commitsMon 12:00 — 14 commitsMon 13:00 — 19 commitsMon 14:00 — 7 commitsMon 15:00 — 2 commitsMon 16:00 — 4 commitsMon 17:00 — 1 commitsMon 18:00 — 8 commitsMon 19:00 — 2 commitsMon 20:00 — 3 commitsMon 21:00 — 3 commitsMon 22:00 — 0 commitsMon 23:00 — 6 commitsTue 0:00 — 0 commitsTue 1:00 — 1 commitsTue 2:00 — 4 commitsTue 3:00 — 4 commitsTue 4:00 — 2 commitsTue 5:00 — 1 commitsTue 6:00 — 1 commitsTue 7:00 — 1 commitsTue 8:00 — 2 commitsTue 9:00 — 5 commitsTue 10:00 — 5 commitsTue 11:00 — 3 commitsTue 12:00 — 9 commitsTue 13:00 — 1 commitsTue 14:00 — 6 commitsTue 15:00 — 3 commitsTue 16:00 — 3 commitsTue 17:00 — 5 commitsTue 18:00 — 0 commitsTue 19:00 — 1 commitsTue 20:00 — 0 commitsTue 21:00 — 1 commitsTue 22:00 — 0 commitsTue 23:00 — 6 commitsWed 0:00 — 5 commitsWed 1:00 — 1 commitsWed 2:00 — 0 commitsWed 3:00 — 1 commitsWed 4:00 — 0 commitsWed 5:00 — 1 commitsWed 6:00 — 1 commitsWed 7:00 — 1 commitsWed 8:00 — 2 commitsWed 9:00 — 3 commitsWed 10:00 — 11 commitsWed 11:00 — 5 commitsWed 12:00 — 2 commitsWed 13:00 — 1 commitsWed 14:00 — 1 commitsWed 15:00 — 0 commitsWed 16:00 — 4 commitsWed 17:00 — 1 commitsWed 18:00 — 1 commitsWed 19:00 — 2 commitsWed 20:00 — 2 commitsWed 21:00 — 3 commitsWed 22:00 — 1 commitsWed 23:00 — 7 commitsThu 0:00 — 3 commitsThu 1:00 — 0 commitsThu 2:00 — 2 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 0 commitsThu 7:00 — 2 commitsThu 8:00 — 4 commitsThu 9:00 — 6 commitsThu 10:00 — 10 commitsThu 11:00 — 2 commitsThu 12:00 — 3 commitsThu 13:00 — 0 commitsThu 14:00 — 2 commitsThu 15:00 — 3 commitsThu 16:00 — 4 commitsThu 17:00 — 2 commitsThu 18:00 — 8 commitsThu 19:00 — 1 commitsThu 20:00 — 2 commitsThu 21:00 — 4 commitsThu 22:00 — 1 commitsThu 23:00 — 4 commitsFri 0:00 — 11 commitsFri 1:00 — 2 commitsFri 2:00 — 2 commitsFri 3:00 — 3 commitsFri 4:00 — 2 commitsFri 5:00 — 0 commitsFri 6:00 — 6 commitsFri 7:00 — 2 commitsFri 8:00 — 4 commitsFri 9:00 — 4 commitsFri 10:00 — 4 commitsFri 11:00 — 8 commitsFri 12:00 — 6 commitsFri 13:00 — 11 commitsFri 14:00 — 2 commitsFri 15:00 — 8 commitsFri 16:00 — 1 commitsFri 17:00 — 7 commitsFri 18:00 — 1 commitsFri 19:00 — 0 commitsFri 20:00 — 0 commitsFri 21:00 — 1 commitsFri 22:00 — 1 commitsFri 23:00 — 11 commitsSat 0:00 — 10 commitsSat 1:00 — 0 commitsSat 2:00 — 4 commitsSat 3:00 — 9 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 2 commitsSat 7:00 — 34 commitsSat 8:00 — 19 commitsSat 9:00 — 4 commitsSat 10:00 — 8 commitsSat 11:00 — 5 commitsSat 12:00 — 11 commitsSat 13:00 — 9 commitsSat 14:00 — 13 commitsSat 15:00 — 3 commitsSat 16:00 — 0 commitsSat 17:00 — 7 commitsSat 18:00 — 4 commitsSat 19:00 — 4 commitsSat 20:00 — 8 commitsSat 21:00 — 12 commitsSat 22:00 — 4 commitsSat 23:00 — 10 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits370 (52%)
Community commits342 (48%)

712 commits in total over the last year.

DateListRankStars gained
Mar 22, 2026daily#21+207
Mar 21, 2026daily#12+257
Mar 20, 2026daily#13+188
Mar 19, 2026daily#7+258
Mar 18, 2026daily#14+206
  • react/react

    The library for web and native user interfaces.

    247.1K stars · JavaScript

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    238.5K stars · JavaScript

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    234.7K stars · JavaScript

  • NousResearch/hermes-agent

    The agent that grows with you

    227K stars · Python

  • Significant-Gravitas/AutoGPT

    AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.

    186.2K stars · Python

  • yt-dlp/yt-dlp

    A feature-rich command-line audio/video downloader

    183K stars · Python