Claude Code status line for worktree, branch, context and quota Terminito, a new open-source tool by developer Artur Lima, adds a status line to Claude Code sessions showing the current worktree, branch, context usage, and quota remaining. The single bash file, installable via Homebrew or git clone, writes a statusLine key into ~/.claude/settings.json and requires no dependencies. It supports bash 3.2+, runs on Windows Git Bash, macOS, and Linux, and includes diagnostic and demo commands. A Claude Code status line that tells you, at a glance, which worktree and branch this session is on , and how much context and quota you have left . ⎇ northwind-service-roster feat/source-roster-cursor ◆ Opus ctx ██████▌░░░ 68% 5h ████░░░░░░ 41% 2h13m wk ██░░░░░░░░ 23% 4d One bash file, no dependencies, and the render path spawns nothing. brew install arturlimaaa/tap/terminito && terminito install Without Homebrew — and on Windows, where Git Bash is the target: git clone https://github.com/arturlimaaa/terminito ~/terminito && ~/terminito/terminito install install writes the statusLine key into ~/.claude/settings.json and keeps a .bak beside it. Claude Code picks it up on its next message — no restart. Re-running it is a no-op. If you already have a different status line it stops and tells you, rather than overwriting; install --force replaces it, and install --print gives you the snippet to paste yourself. Nothing appearing? terminito doctor . If everything there is green but the row is still missing, terminito doctor --trace on answers the one question the checks cannot: whether Claude Code is really invoking it. Row 1 — where you are. ⎇ for a linked worktree, ◉ plus an amber name for the main checkout, because the main checkout is where an accidental commit costs most. The label is the directory basename; the repo name is added only when the directory doesn't already imply it. In the branch, the namespace recedes and the leaf keeps full weight — feat/ grey, source-roster-cursor lit. Row 2 — what you have left. Coloured area is what you have spent , so a fresh session is quiet grey rather than thirty saturated cells announcing that nothing has happened. Half cells ▌ double the resolution inside ten columns, so 95% and 100% are not the same picture at the end of the scale where you actually act. The countdown is what makes the quota bar mean anything: 91% 4m is fine, wait it out — 91% 4h51m means stop and switch model. Same bar, opposite decisions. The two rows join into one when the terminal is wide enough to hold them. | Command | Purpose | |---|---| terminito | The status line. Reads the payload JSON on stdin. | terminito install | Write the statusLine key into settings.json --print , --force | terminito doctor | Diagnose a status line that isn't appearing | terminito doctor --trace on|off | Record real renders, to prove Claude Code is invoking it | terminito ls | Every session with its worktree, branch and status --verify checks each PID is alive | terminito demo | The full colour ramp and every degradation state | | Variable | Effect | |---|---| TERMINITO COLOR | truecolor | 256 | none | TERMINITO NOW | epoch seconds; freezes the reset countdowns | TERMINITO CEILING | stop the upward .git walk at this directory | TERMINITO CLOCK | pin a rung of the clock ladder date , printf | TERMINITO MAX WIDTH | row 1 column budget; 0 disables truncation default 78 | TERMINITO NO TRACE | never write the invocation trace | NO COLOR | any non-empty value disables colour | CLAUDE CONFIG DIR | overrides ~/.claude | bash 3.2+. That is the whole list — no jq , no Node, no Python, and git is never invoked it reads .git/HEAD itself . Runs on Windows Git Bash, macOS both stock /bin/bash 3.2.57 and Homebrew bash 5 , and Linux. CI runs the same golden files on all three, and asserts that bash 3.2 and bash 5 emit byte-identical output. On Windows, use forward slashes or ~ in the settings path. Git Bash treats unquoted backslashes as escape characters, so C:\Users\… arrives with its separators stripped and fails with no visible error at all. bash tests/run.sh goldens, and every command's contract bash tests/portability.sh bash 3.2 scan, BASH COMPAT=32, the clock ladder bash tests/perf.sh the 300ms debounce budget Every non-obvious decision here — the spawn-free render path, the baked colour ramp, the CP437 glyph subset, the locked lane widths, the 78-column budget — has a measurement or a failure behind it. Those are in DESIGN.md /arturlimaaa/terminito/blob/main/DESIGN.md , with the benchmarks in bench/ /arturlimaaa/terminito/blob/main/bench . MIT.