in.applair.RunwayBar · linux · Apache-2.0
RunwayBar sits in your system tray and shows how much of your AI coding plans you've used — session and weekly windows, reset countdowns — for the tools you already have installed. One small binary. No Electron, no runtime, no accounts.
claude-code
62%
session · 38% left · resets in 1h 59m
codex
44%
primary · 56% left
z.ai / ZCode
42%
tokens · 58% left
opencode
55%
rolling · 45% left
footprint
One static-friendly Rust binary with a pure-Rust D-Bus stack — no Electron, no Qt, no interpreter. The daemon idles at a few MB of RSS and answers status over a local socket in milliseconds.
honesty
RunwayBar reads the credential files the CLI tools already own — and never writes, refreshes or rewrites them. A CI guard traces the test suite and fails on any write to those paths. Unknown data renders as unknown, never as 0%.
coverage
Claude Code, Codex, OpenCode — and z.ai as used by Zcode, which the big tools skip entirely. If a tool isn't installed, it says so and stays quiet.
surfaces
An SNI tray icon for GNOME-with-appindicators, KDE, XFCE, COSMIC and friends; a --format waybar line for tiling setups; --format json for everything else.
If the tool is signed in, RunwayBar finds it. Nothing to paste, nothing to link.
claude code
From the Claude Code CLI's local sign-in. Plan and windows with reset countdowns.
codex
Reads the Codex CLI's local auth. Handles account-scoped headers.
z.ai / zcode
Global and CN (BigModel) regions, straight from Zcode's own configuration.
opencode
Zen usage from the OpenCode CLI's local key.
Rolling 5-hour sessions, weekly caps and credit lanes all become the same shape: used percent, reset instant, countdown.
A failed poll keeps the previous numbers, clearly marked stale — it never blanks your bar or invents zeros.
HTTP 429s put a provider on a five-minute cooldown; the retry budget is one request, honouring server hints, capped.
Desktop notifications fire on transitions — entering the warning band or a provider going dark — not on every poll.
$ curl -fL https://github.com/nitishagar/runwaybar/releases/latest/download/runwaybar_amd64.deb -o runwaybar.deb $ sudo apt install ./runwaybar.deb
$ curl -fsSL https://raw.githubusercontent.com/nitishagar/runwaybar/main/scripts/install.sh | sh
$ cargo install --git https://github.com/nitishagar/runwaybar
Static musl builds cover any x86-64 or aarch64 Linux; the .deb tracks glibc 2.35+. Then start it once — runwaybar serve — or add it to autostart with runwaybar install.
It's read-only, local, and the token only ever goes back to that vendor's own usage endpoint over TLS — never to us (there is no "us" to send it to). Files are never touched: a CI strace guard enforces it.
Anything hosting StatusNotifierItem: KDE Plasma, Ubuntu's GNOME (appindicators), XFCE, Budgie, COSMIC, Waybar. Vanilla GNOME without the extension gets a clear notice; the CLI keeps working everywhere.
The daemon polls every five minutes by default (configurable 1–60 min), immediately on start, and on demand via runwaybar refresh or the tray menu.
Nothing, ever. Apache-2.0 licensed; the endpoints are the vendors' own usage APIs. No keys are required beyond your existing sign-ins.