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.