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 |
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, soC:\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, with the benchmarks in bench/.
MIT.