in.applair.RunwayBar · linux · Apache-2.0

Your AI runway, at a glance.

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.

Install Source

Why RunwayBar?

footprint

A whole bar in ~4 MB

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

Read-only, or nothing

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

ZCode support, first-class

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

Tray, waybar, or plain JSON

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.

Four providers, zero configuration

If the tool is signed in, RunwayBar finds it. Nothing to paste, nothing to link.

claude code

Session + weekly

From the Claude Code CLI's local sign-in. Plan and windows with reset countdowns.

codex

Primary + weekly

Reads the Codex CLI's local auth. Handles account-scoped headers.

z.ai / zcode

Tokens + credit

Global and CN (BigModel) regions, straight from Zcode's own configuration.

opencode

Rolling + weekly

Zen usage from the OpenCode CLI's local key.

Limits, runway, and resets

Rate windows, normalised

Rolling 5-hour sessions, weekly caps and credit lanes all become the same shape: used percent, reset instant, countdown.

Last-good retention

A failed poll keeps the previous numbers, clearly marked stale — it never blanks your bar or invents zeros.

Backoff that respects the vendor

HTTP 429s put a provider on a five-minute cooldown; the retry budget is one request, honouring server hints, capped.

Warnings, not noise

Desktop notifications fire on transitions — entering the warning band or a provider going dark — not on every poll.

Install

$ curl -fL https://github.com/nitishagar/runwaybar/releases/latest/download/runwaybar_amd64.deb -o runwaybar.deb
$ sudo apt install ./runwaybar.deb

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.

What we didn't build

Questions

Is reading my CLI's credentials safe?

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.

Which desktops show the tray icon?

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.

How fresh is the data?

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.

What does it cost?

Nothing, ever. Apache-2.0 licensed; the endpoints are the vendors' own usage APIs. No keys are required beyond your existing sign-ins.