statusline
When standard input is a terminal, it reads nothing. Input that is not JSON counts as empty.
It prints the session’s account, then every other enrolled Claude Code account, two spaces apart. Limits for a single model and accounts of OpenAI’s Codex CLI never appear.
The first label comes from the session’s periods when they identify its account. Otherwise it comes from the account in use: Pitboard’s record of Anthropic’s last answer about Claude Code’s login.
That record is unconfirmed before Pitboard first asks, and while Claude Code’s config names another account than at that answer.
pitboard status confirms it.
Without
NO_COLOR, the line has colour through a pipe too. With NO_COLOR set, even to an empty value, it follows the colour rules of other commands.
With --json, data.line holds the line without colour.
It sends no request and never reads the keychain, Credential Manager or a login. It reads Pitboard’s own files, and Claude Code’s config only to check whether the record is unconfirmed.
It writes two files in the Pitboard directory:
Which account a session records for
The session’s numbers name no account (read in Claude Code 2.1.294), but each account’s periods reset at their own times. Pitboard records them for the one enrolled account whose reading holds a period the session passed, to within a minute, asking no service. A reading with another running period of one of those limits does not match. Nor does one that lists every limit but lacks one passed. With no match, or several, Pitboard records nothing. So an open session still on its old account after a switch records there until it follows. A five-hour period begun since Pitboard last asked Anthropic matches no reading, so the weekly period passed with it identifies the account. A Team seat’s session passes only its five-hour limit, and records nothing after a reset until Pitboard asks again. One risk is known. A session on an account no reading holds, such as an unenrolled one, can pass a five-hour period that resets within a minute of an enrolled account’s. Its numbers then record for that account, and each answer from Anthropic corrects them only until the session’s next response. The session’s weekly period prevents this when that account’s reading holds a different one, or no weekly limit for all models. A session’s numbers only move a limit the account’s last answer from Anthropic gave. Once that limit resets, they start its next period. Pitboard records only limits that moved since the session’s last run. An idle session passes the same numbers again, which can predate an answer that lowered a percentage. Where a change fails withelevated or system_too_old, it writes nothing.
It exits 0 whatever its input. When a home variable is empty or not a full path, it prints no line and exits 1 with home_not_absolute.
At a prompt, it prints Pitboard’s last readings:
completions
It writes the script to standard output. With
--json, it prints no script and exits 2 with output_is_not_a_report.
No release includes the elvish script.
bash-completion 2.2 or later and fish 4 load the install script’s files from those folders. zsh loads its file once
~/.zshrc has these lines:
~/.zshrc already runs compinit, add only the first line, before it.
zsh 5.9 on macOS 27 and on Debian 13 does not have that folder on its fpath, as measured on 12 October 2026.
zsh loads _pitboard from any folder on its fpath:
~/.zshrc, with ~/.zfunc as the folder.
PowerShell loads the script from your profile. In Windows PowerShell 5.1, add it only once its execution policy is RemoteSigned: under Restricted, its default on Windows 11, it runs no profile.
In each PowerShell you use, add the app’s script to the file $PROFILE names:
completions\pitboard.ps1 in the folder you unpacked it to, and run Unblock-File on that file first. PowerShell 7’s default execution policy, RemoteSigned, refuses a script marked as downloaded from the internet, and File Explorer marks each file it extracts from a downloaded zip.
manpage
--json, it exits 2 with output_is_not_a_report.
It is one page, with the sections NAME, SYNOPSIS, DESCRIPTION, OPTIONS, COMMANDS and VERSION. COMMANDS gives every command but help and manpage, each with its arguments and options.
No Windows release includes the man page.
man finds the install script’s page while ~/.local/bin is on your PATH, on macOS and with man-db.
To read it without installing it: