A status.claude.com health indicator for your Claude Code statusline. Monitors API health and shows it as a colored face — so Claude can tell you how it's feeling before you ask.
All systems operational — green [^_^]
Degraded performance — yellow [*_*] with warning text
kaomoji (default) ascii minimal
───────────────── ───── ───────
[^_^] all good :) all good OK all good
[*_*] degraded :| degraded !! degraded
[>_<] major outage :( outage XX outage
[x_x] critical X( critical XX critical
[?_?] unknown :? unknown -- unknown
Green [^_^] All systems operational
Yellow [*_*] not feeling great
Red [>_<] check status.claude.com
Bold Red [x_x] API is down
Grey [?_?] No data yet
Faces are clickable links to status.claude.com in supported terminals (iTerm2, WezTerm, Kitty, Windows Terminal, ConEmu) via OSC 8 hyperlinks.
- Polls status.claude.com API every 60 seconds with synchronous fetch (~100ms)
- UserPromptSubmit hook warns when API is degraded or down
- Configurable segments: model, git branch, diff stats, context bar, status face, rate limit, cost
- Three face styles: kaomoji, ascii, minimal
- Auto-detects subscriber (shows rate limit %) vs API user (shows session cost)
- Interactive
/statuslineskill for toggling segments - Zero extra dependencies — only
curlandnode(both already available with Claude Code)
git clone https://github.com/Jamespptsr/CWTY.git cd CWTY # Extend your existing statusline (recommended) bash scripts/install.sh --extend # Or use as standalone statusline bash scripts/install.sh --standalone # Uninstall and restore original statusline bash scripts/install.sh --uninstall
curl(built-in on macOS/Linux/Git Bash)node(comes with Claude Code — if you can run Claude Code, you already have it)
CWTY works on Windows via WSL2 (recommended) or Git Bash:
git clone https://github.com/Jamespptsr/CWTY.git
cd CWTY
bash scripts/install.sh --extendClickable face links work in Windows Terminal (detected via WT_SESSION env var) and ConEmu/Cmder (detected via ConEmuPID).
Edit ~/.claude/statusline.conf or use the /statusline command inside Claude Code:
# Toggle segments: 1 = show, 0 = hide SHOW_MODEL=1 SHOW_GIT_BRANCH=1 SHOW_GIT_DIFF=0 SHOW_CONTEXT_BAR=1 SHOW_STATUS_FACE=1 SHOW_COST=0 SHOW_RATE_LIMIT=1 # Face style: kaomoji | ascii | minimal FACE_STYLE=kaomoji
- Statusline script reads JSON from Claude Code on stdin (model, context, rate limits)
- Checks
~/.cache/claude-status-light/status.json— fetches fresh data if stale (>60s) - Renders colored face segment based on API status indicator
hooks/status-warning.shfires on UserPromptSubmit, injects context warning if API is degraded
status.claude.com/api/v2/status.json
│
▼
┌───────────┐ ┌──────────────┐ ┌────────────┐
│ curl fetch │────▶│ cache (JSON) │────▶│ render face │
│ 2s timeout│ │ 60s TTL │ │ + ANSI color│
└───────────┘ └──────────────┘ └────────────┘
Cache location: ~/.cache/claude-status-light/status.json
# Fetch status and show the face bash lib/fetch-status.sh bash bin/claude-status-light echo # newline # Test the hook (pipe empty JSON) echo '{}' | bash hooks/status-warning.sh
MIT