Skip to main content

Beautiful, informative status line for Claude Code — zero dependencies, cross-platform

Project description

claude-status

Zero-dependency status line for Claude Code. One command. Every metric. All platforms.

PyPI version Python 3.8–3.14 License: MIT CI Platform Downloads

Line 1:  [████████░░░░░░░░░░░░] │ in:245K out:18K │ cache:41% │ $0.73 │ burn:37K/min
Line 2:  5h:34% 7d:18% ~2h │ (200K) │ 12m05s │ +247 -38 │ ⎇ myapp/feat/statusline │ ✦ refactor auth │ Opus │ effort:high │ v0.5.0 │ CC:2.1.92 │ 15:30

30-Second Setup

pip install claude-status
claude-status --setup

The setup wizard walks you through theme selection, budget configuration, and installs everything automatically. Restart Claude Code and you're done.

Why claude-status?

  • Zero dependencies — pure Python stdlib. No psutil, no colorama, no compilation. Installs in under 2 seconds
  • Every metric that matters — 30+ data points including burn rate (tokens/min), rate limit tracking, and effort level
  • Rate limit awareness — see your 5-hour and 7-day API usage at a glance with color-coded warnings and reset countdown
  • Responsive layout — automatically adapts to your terminal width (full/compact/narrow)
  • NO_COLOR / FORCE_COLOR support — respects terminal color standards
  • Clickable git branch (opt-in) — OSC 8 links open repo in browser in iTerm2, Kitty, WezTerm. Off by default because Claude Code's TUI doesn't understand OSC 8 and would drop Line 2. Enable with "clickable_links": true.
  • Per-section toggle — disable any section via config without a custom theme
  • 8 built-in themes — default, minimal, powerline, nord, tokyo-night, gruvbox, rose-pine, focus
  • Budget monitoring — set a daily spend limit, get color-coded warnings as you approach it
  • Session analytics — tool call count and today's session count at a glance
  • Cross-platform — tested on Windows, macOS, and Linux across Python 3.8–3.14 (21 CI jobs)
  • Interactive setup--setup wizard walks you through theme selection and budget config
  • Clean uninstall--uninstall restores your previous configuration

Features

Line 1 — Metrics at a Glance

Feature What You See Why It Matters
Context Bar [████████░░░░░░░░░░░░] Green/yellow/red adaptive — know your context budget instantly
Token Counts in:245K out:18K Human-readable (K/M) — no squinting at raw numbers
Cache Efficiency cache:41% See how much prompt cache is saving you
Cost $0.73 Session cost in real-time — cents for small, dollars for large
Budget $0.73/$10 Color-coded daily budget tracker (green/yellow/red)
Burn Rate burn:37K/min Tokens/min consumption — unique to claude-status
Rate Limits 5h:34% 7d:18% ~2h API usage limits with reset countdown (Pro/Max only)
Context Size (200K) Know if you're on 200K or 1M context
Context Warning !CTX Bold red alert at 85%+ context usage

Line 2 — Session Context

Feature What You See Why It Matters
Duration 12m05s Wall-clock session time
API Latency api:5m12s Time spent in API calls
Lines Changed +247 -38 Git-diff style — green additions, red removals
Git Branch ⎇ myapp/feat/statusline Project name + branch, color-coded
Git Stash stash:2 Number of stashed changes
Git Sync sync:+2/-1 Commits ahead/behind remote
Git State merge / conflict Merge/rebase/conflict indicator
Commit Age last:5m Time since last commit
Token Speed speed:1.2K/s Token throughput (tokens/sec)
Git Worktree gwt Indicator when inside a native git worktree
Tool Calls tools:42 Number of tool calls in current session
Sessions Today sessions:3 How many sessions you've started today
Session Name ✦ refactor auth Custom session name (via --name or /rename)
Vim Mode NORMAL Blue for NORMAL, green for INSERT
Agent [Explore] Shows which subagent is active
Worktree wt:fix/bug-123 Claude Code worktree branch indicator
Model Opus Active model name
Output Style style:explanatory Active output style when set
Added Dirs dirs:+2 Extra directories added via /add-dir
Effort Level effort:high Thinking effort (shown when non-default)
Version v0.5.0 claude-status version
CC Version CC:2.1.92 Claude Code application version
Clock 15:30 Current time

Themes

8 built-in themes to match your terminal aesthetic. Preview all live with claude-status --demo.

default — full detail, clean separators

[████████░░░░░░░░░░░░] │ in:245K out:18K │ cache:41% │ $0.73 │ burn:37K/min
5h:34% 7d:18% ~2h │ (200K) │ 12m05s │ +247 -38 │ ⎇ myapp/feat/statusline │ ✦ refactor auth │ Opus │ effort:high │ v0.5.0 │ CC:2.1.92 │ 15:30

minimal — just the essentials

●●●●●●●●·············· in:245K out:18K $0.73 5h:34% 7d:18%
12m05s ⎇ feat/statusline sessions:3 Opus 15:30

powerline — Nerd Font separators

████████░░░░░░░░░░░░  in:245K out:18K  cache:41%  $0.73  burn:37K/min
5h:34% 7d:18% ~2h  (200K)  12m05s  +247 -38  ⎇ myapp/feat/statusline  ✦ refactor auth  Opus  effort:high  v0.5.0  CC:2.1.92  15:30

focus — single line, minimal footprint

[████████░░░░] │ $0.73 │ 5h:34% 7d:18% ~2h │ ⎇ main │ effort:high │ 15:30

nord — cool blue tones

tokyo-night — purple and blue accents

gruvbox — warm retro palette

rose-pine — soft muted pinks

Installation

pip (recommended)

pip install claude-status
claude-status --setup

pipx (isolated — no venv pollution)

pipx install claude-status
claude-status --setup

uvx (fast, modern)

uvx claude-status --setup

From source (contributors)

git clone https://github.com/mkalkere/claude-statusline.git
cd claude-statusline
pip install -e .
claude-status --setup

What --setup does

Walks you through theme selection with a compact preview, optional budget configuration, and writes the statusLine entry to ~/.claude/settings.json. Preserves all your existing settings.

Command not found? Ensure your Python scripts directory is in PATH. Fallback: python -m claude_statusline --setup

CLI Reference

Command Description
claude-status --setup Interactive setup wizard (recommended for first use)
claude-status --install Auto-configure Claude Code settings
claude-status --install --theme nord Install with a specific theme
claude-status --uninstall Remove from Claude Code settings (restores previous config)
claude-status --demo Preview all 8 themes with sample data
claude-status --doctor Diagnostics: Python version, OS, terminal, current settings
claude-status --version Show version
claude-status --help Show usage

Budget Monitoring

Set a daily spending limit to get color-coded warnings as you approach it:

claude-status --setup  # interactive wizard sets this up for you

Or manually create ~/.claude/claude-status-budget.json:

{
  "daily_budget_usd": 10.00,
  "compaction_threshold_pct": 62
}

Budget thresholds:

  • Green: under 70% of budget
  • Yellow: 70–90% of budget
  • Red (bold): 90%+ of budget

Compaction threshold: When set, the context bar scales relative to the compaction point instead of the full context window. At 62%, the bar shows 100% when you reach 62% of the context window — the point where compaction triggers.

Periodic Updates

By default, the status line updates after each assistant message. Add refreshInterval to your config for periodic updates — this keeps the clock, session count, and rate limit countdown current:

{
  "statusLine": {
    "type": "command",
    "command": "claude-status --theme default",
    "refreshInterval": 10
  }
}

This runs the status line every 10 seconds in addition to the standard update triggers.

Responsive Layout

The status line automatically adapts to your terminal width:

  • 120+ columns: full detail (all sections)
  • 80–119 columns: compact (drops extras like git stash, version, clock, rate limits)
  • Under 80 columns: narrow (essentials only — bar, tokens, cost, duration, branch)

Manual Configuration

Add to ~/.claude/settings.json:

{
  "statusLine": {
    "type": "command",
    "command": "claude-status",
    "refreshInterval": 10
  }
}

With a theme:

{
  "statusLine": {
    "type": "command",
    "command": "claude-status --theme focus",
    "refreshInterval": 10
  }
}

How It Works

Claude Code pipes session JSON to your statusLine command via stdin on every render cycle (and every refreshInterval seconds if configured). claude-status parses it, formats 27+ metrics across up to 2 lines, and prints to stdout. No daemon, no database, no background process — just a pure stdin-to-stdout pipe that runs in milliseconds.

FAQ

Does this work on Windows? Yes! Fully tested on Windows 11, macOS, and Linux across Python 3.8–3.14.

Can I customize the colors? Yes — use --theme custom with a ~/.claude/claude-status-theme.json file. Override any color or layout from the built-in themes.

How does budget monitoring work? Create ~/.claude/claude-status-budget.json with {"daily_budget_usd": 10.00}. The cost indicator turns yellow at 70% and red at 90% of your daily limit.

What is burn rate? Tokens consumed per minute. Helps you gauge how fast you're using context in a session.

Do I need a Pro/Max subscription for rate limit tracking? Yes. The rate_limits field is only included in the Claude Code JSON payload for Pro/Max subscribers. The section is automatically hidden for other users — no configuration needed.

How often does the status line update? By default, after each assistant message. Add "refreshInterval": 10 to your statusLine config for periodic updates every 10 seconds — recommended for keeping the clock and rate limit countdown current.

Can I use a single-line layout? Yes — use the focus theme: claude-status --install --theme focus. It shows only the essentials on one line.

Why is only Line 1 showing / Line 2 is missing? Claude Code's TUI uses Ink <Text wrap="truncate"> which silently drops all subsequent lines when any line's byte count (including invisible escape sequences) exceeds the terminal width. Two things can trigger this:

  1. Line 1 visibly overflows — fixed in v0.4.2 and v0.5.1 by moving sections to Line 2.
  2. OSC 8 clickable links add invisible escape bytes — fixed in v0.5.2 by disabling OSC 8 by default.

Upgrade to the latest release (pip install -U claude-status). If you still see the issue, widen your terminal to 130+ columns or switch to the focus theme (claude-status --install --theme focus) for a guaranteed single-line display. Tracked upstream at anthropics/claude-code#28750 (closed NOT_PLANNED).

Does it add any latency to Claude Code? No. It runs as a pure stdin-to-stdout pipe in single-digit milliseconds. No daemon, no network calls, no background processes.

Why does the session count seem low on Windows with WSL? Windows and WSL have separate ~/.claude/ directories, so sessions are counted independently. The status line shows sessions from the platform it's running on.

Troubleshooting

If claude-status doesn't appear after installation:

  1. Run claude-status --doctor to check your setup
  2. Verify ~/.claude/settings.json contains the statusLine entry
  3. Ensure your Python scripts directory is in your PATH
  4. Try python -m claude_statusline --setup as a fallback
  5. Restart Claude Code after any configuration change

Uninstall

claude-status --uninstall

This removes the statusLine entry from your settings and restores your previous configuration if a backup exists. Then:

pip uninstall claude-status

Contributing

See CONTRIBUTING.md.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

claude_status-0.5.2.tar.gz (44.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

claude_status-0.5.2-py3-none-any.whl (30.5 kB view details)

Uploaded Python 3

File details

Details for the file claude_status-0.5.2.tar.gz.

File metadata

  • Download URL: claude_status-0.5.2.tar.gz
  • Upload date:
  • Size: 44.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for claude_status-0.5.2.tar.gz
Algorithm Hash digest
SHA256 30a488d1babf87857d28bd290f3ff6fb5d24fd59ca519ace881a074d53666ddd
MD5 8a63a333e7d126182df40357f871ff16
BLAKE2b-256 7149e555d2abaf41e3897a7e6ebd7a0bd5cd068a0fe752ecc7d91e24ffcb9309

See more details on using hashes here.

Provenance

The following attestation bundles were made for claude_status-0.5.2.tar.gz:

Publisher: publish.yml on mkalkere/claude-statusline

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file claude_status-0.5.2-py3-none-any.whl.

File metadata

  • Download URL: claude_status-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 30.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for claude_status-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 42d3f0b80a2539063cca000072cd7a939e6e27a358aa0bea17eaecfb8b52a423
MD5 f86236c70958d51dc56e0c324ef8e110
BLAKE2b-256 c392bfc9e3b61bf39c7b142dc2b96c69b3231c2e6419ca4765ae081c35732ddf

See more details on using hashes here.

Provenance

The following attestation bundles were made for claude_status-0.5.2-py3-none-any.whl:

Publisher: publish.yml on mkalkere/claude-statusline

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page