statusbar CLI

Every status page you care about, from the terminal. The CLI ships inside StatusBar.app and reads the same live snapshot the app maintains — no network, no waiting.

Get statusbar on your PATH

If you installed with Homebrew, you’re already done — the cask links the command for you. Otherwise it’s one click in the app.

Homebrew — automatic

brew install --cask alexnodeland/tap/statusbar

Direct download? Open Settings → General → statusbar CLI → Install. One click, one admin prompt, done.

statusbar --version   # "statusbar 0.4.0"
statusbar help        # full usage

The app refreshes its snapshot on every poll; status and prompt read it instantly. If the app isn’t running, --fresh fetches live from providers and wait always polls live.

Commands

CommandWhat it does
status [name]Current status for all sources, or one by name (case-insensitive, substring match). Reads the cache; exits 0 when all clear, 1 on issues.
listAlias for status.
wait <name>Block until the source is operational again, polling the provider live. Gate a deploy: statusbar wait npm && npm publish.
promptOne compact glyph for shell prompts: when clear, ▲1 when one source has issues, ✖2 at critical. Honors .statusbar repo scoping.
refreshAsk the running app to refresh all sources now (via the statusbar:// URL scheme).
open [name]Open the popover, optionally focused on a source.
add <url> [name]Add a status page through the app.
remove <name>Remove a source through the app.
cache-pathPrint the status cache location.
versionPrint the StatusBar version. Also --version / -v.
helpShow usage. Also --help / -h.

Examples

statusbar status                  # every source, colored, one line each
statusbar status github           # just GitHub
statusbar status --json | jq .    # machine-readable snapshot
statusbar status --fresh          # bypass the cache, fetch live
statusbar wait npm && npm publish # block until npm recovers
statusbar wait api --timeout 600 --interval 15
statusbar prompt                  # "●" or "▲1" for your prompt
statusbar add https://status.openai.com OpenAI

Options

FlagApplies toEffect
--jsonstatusMachine-readable output: the full snapshot, or one source as a flat object.
--freshstatusFetch live from each provider instead of reading the cache. Works without the app running.
--allstatus, promptIgnore a .statusbar repo scope and show every source.
--timeout <sec>waitGive up after N seconds. Default 1800.
--interval <sec>waitPoll every N seconds. Default 30, minimum 5.

Exit codes & glyphs

Both are stable interfaces — script against them.

Exit codes

0All monitored sources operational
1At least one source has issues
2Unknown status, no cache yet, or no source matched
64Usage error or unknown command

Glyphs

Operational (green)
Minor outage (yellow) / major outage (orange)
Critical outage (red)
Unknown (gray)

Colors turn off automatically when output is piped, or when NO_COLOR is set.

Repo scoping with .statusbar

Drop a .statusbar file in a repo and status/prompt report only that project’s upstream dependencies. The CLI walks up from the working directory to find it — like .gitignore.

# .statusbar — upstream deps for this repo
# one source name per line
GitHub
npm
Vercel

Names match case-insensitively against your monitored sources. A name you don’t monitor yet prints a hint: not monitored — statusbar add <url> npm. Pass --all to see everything regardless.

In your status line

With scoping, statusbar prompt in a Starship or tmux status line shows the health of the repo you’re standing in — not your whole watchlist. Copy-paste configs for Starship, tmux, and SketchyBar are in the integration guides.