One short Python line: the model, then context, five-hour and seven-day usage, each as a percentage with a dot that shifts from green to red as it fills. No dependencies, no network calls.
0 copies
Preview
Opus 4.8 · ctx ● 22% · 5h ● 26% · 7d ● 7%Opus 4.8Sonnet 4.6 · ctx ● 48% · 5h ● 40% · 7d ● 18%Opus 4.8 · ctx ● 91% · 5h ● 88% · 7d ● 61%Fable 5 · ctx ● 64% · 5h ● 33% · 7d ● 80%Haiku 4.5 · 5h ● 52%Opus 4.8 · ctx ● 37% · 5h ● 44% · 7d ● 20%Opus 4.8 · ctx ● 22%What it does
A short line with the model name, then context, five-hour and seven-day usage, each a percentage next to a dot that runs from green to red as it fills.
- Written in
- Python
- Network access
- None
- Works in
- Terminal
How it works
- Reads the model name, context_window.used_percentage and both rate limit windows.
- Colors each dot on a gradient: green at 0%, amber near 50% and red at 100%.
- Shortens a model name ending in (1M context) to a dim [1M] tag.
- Leaves out any reading Claude Code doesn't send, so a new session shows only the model.
Good to know
- Needs only python3; it imports json, sys and re from the standard library.
- The readings are percentages only, with no reset times or token counts.
Source
#!/usr/bin/env python3
"""Pattern 1: Minimal dots - colored circles with numbers only"""
import json, sys
data = json.load(sys.stdin)
R = '\033[0m'
DIM = '\033[2m'
BOLD = '\033[1m'
def gradient(pct):
if pct < 50:
r = int(pct * 5.1)
return f'\033[38;2;{r};200;80m'
else:
g = int(200 - (pct - 50) * 4)
return f'\033[38;2;255;{max(g, 0)};60m'
def dot(pct):
p = round(pct)
return f'{gradient(pct)}●{R} {BOLD}{p}%{R}'
model_raw = data.get('model', {}).get('display_name', 'Claude')
# コンテキストサイズ情報を短縮表示(例: "<モデル名> (1M context)" → "<モデル名> [1M]")
import re
ctx_match = re.search(r'\((?:with )?(\d+\w?)\s*context\)', model_raw)
if ctx_match:
model_name = re.sub(r'\s*\((?:with )?\d+\w?\s*context\)', '', model_raw)
model = f'{model_name} {DIM}[{ctx_match.group(1)}]{R}'
else:
model = model_raw
parts = [f'{BOLD}{model}{R}']
ctx = data.get('context_window', {}).get('used_percentage')
if ctx is not None:
parts.append(f'ctx {dot(ctx)}')
five = data.get('rate_limits', {}).get('five_hour', {}).get('used_percentage')
if five is not None:
parts.append(f'5h {dot(five)}')
week = data.get('rate_limits', {}).get('seven_day', {}).get('used_percentage')
if week is not None:
parts.append(f'7d {dot(week)}')
print(f' {DIM}·{R} '.join(parts), end='')
More status lines
Noctu
3 copies
◆ Opus 4.8 ▏ ctx ▓▓░░░░░░░░ 22% ▏ high ▏ 10m
main ▏ week ▓░░░░░░░░░ 7% ▏ 2d0h ▏ $0.41 ▏ +128/-34claude-usage
3 copies
✳ Usage 5h 26% · week 7% · fable 15%
Width-Aware Monitor
2 copies
◆ Opus 4.8 │ app/main
▰▰▰▰▱ 78% │ ↑44k ↓1.4k │ 5h: -- │ 7d: -- │ 10m12s
cc-statusbar
1 copy
[Opus 4.8] ctx 22% · 5h ▓▓░░░░░░ 26% on track · resets in 2h06m · 7d ▓░░░░░░░ 7% on track · resets in 2d0h
Context Growth Watch
0 copies
Opus 4.8 · app · ▕███░░░░░░░░░▏ 44k · 4.4k/turn · 5h 26% · 7d 7%
Keyblade Status bar
0 copies
✧ ███████████▋ 73% 🗝 Ultima Weapon ✦ app ∙ main
♥ ████████████████████████ 100% 「SAVE POINT」 ✶ Limit Form ◉ 41
Related mods
Terminal
❯ Run the tests again
● The repo is clean and the tests pass.
✻ Cooked for 0s · done 10:12 PM
☀ 44k │ 5h 26% │ 7d 7% │ cache 5% [-]
❯ Claude Desktop

One line above the prompt: context tokens with their weather, a bar per recent prompt, your 5-hour and 7-day limits against the time elapsed, the prompt cache with its time left, the session cost with the last prompt's share in dollars and in points of the 5-hour limit, and the subagents running. Labels in English, French or Russian. After Token Weather (Anthropic, Apache-2.0) and the ideas of usage-meter (HolyGrail) and prompt-cache-control (Daniel San).
Terminal
❯ /deck demo
⎿ deck: Sample plan running above the prompt, with sample routing until real ones arrive.
[-]
0: deck ▾ · 5 rows 22:11:41
⇄ Model route opus = opus jev: haiku · not applied effort ▁▃·· medi = kept ✕
✓ Orders module Done · 12/12 · 2/2 agents 100% ✕
● Context 44k / 200k 22% ✕
◔ Session · 5h 5h · 26% used ↻ 2:04:24 ✕
◔ Weekly · 7d 7d · 7% used ↻ 2d 0h 57m ✕
❯
⏵⏵ auto mode on (shift+tab to cycle) · ← for agents [ Deck 1 ]Claude Desktop

A cockpit for Claude Code: plan bars and subagent strips, context, usage limits with reset countdowns and burn rates, spend, the model route and a pet. Six bar styles, three collapsed looks. CLI and Desktop.
Terminal
❯ /flightdeck open
⎿ flightdeck: Flightdeck opened. Focus it with ctrl+x tab; 1-6 expand cards, f/s/o open the gate
rows.
╭────────────────────────────────────────────────────────────────────────────────────────────────✕─╮
│ Opus 4.8 ○ idle · ctx ▰▱▱▱▱▱ 22% · $0.25 │
│ last turn 0s · 0 agents · 0 edits · 0 errors │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
❯
⚠ flightdeck: ctx 22%Claude Desktop

Flightdeck: a live agent dashboard for Claude Code. Main model vitals, an on-call architect, every permission check, subagent cards and swimlanes, a turn receipt and a session log, all from real session events
Terminal
[-]
zZ
▀▄ ▄▀
▄▄▀▀▀▀▀▀▀▀▀▀ ▀▀▀▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀
ctx 22% [ Pet ♥ ] [ ⚙ ] [ ↻ Adventurer ] [ Hide ]
❯ Claude Desktop

A little pixel cat that wanders above the Claude Code prompt, watches your usage limits and announces when work finishes; or switch packs for an adventurer who mines, chops trees and fights zombies