Context, quotas, costs, and repository state at a glance, inside Oh My Pi.
A configurable statusline panel that lives under your editor and keeps what matters one glance away.
About · Features · Compatibility · Getting started · Configuration · Privacy · Build from source · MIT License
OMP Statusline turns the bottom of your Oh My Pi editor into a compact information panel. One look tells you which model and thinking level you are running, how much of the context window is left, where your provider's 5-hour and weekly quotas stand, what the current session costs, and what state your repository is in — without typing a single command.
Everything is configurable from a built-in settings menu. Open it with /omp-statusline, flip a few switches, and your choices are saved immediately; there is no configuration file to create by hand unless you want one.
Illustrative rendering (colors follow your theme):
glm-5.3-flash medium ~/dev/perso/tools/omp-statusline my-session
ctx ██████░░░░░░░░░░ 38% 61k/160k 5h ███░░░░░░░░░░ 27% 2h week ██████░░░░ 52%
qonktknk (+340/-12) refactor: target Oh My Pi only develop
- Everything important in one panel. Model, thinking level, working directory, session name, and live Caveman and Ponytail mode indicators when their plugins are present — plus a Graft glyph when the Graft MCP server is loaded — all on a single bordered row under your editor.
- Context you can read. The context bar shows the percentage and raw token counts of the active window, and shifts from green to warning at 80% and error at 95% so you notice before truncation, not after.
- Quotas from your subscription. 5-hour and weekly provider windows render as bars with a reset countdown, read from the usage reports your host already caches — no extra network calls.
- Costs when you pay per token. Without a matching subscription report, the panel shows current-session and subagent costs instead, tracked live from assistant message usage.
- Repository state without leaving the editor. Jujutsu comes first: change ID, description, bookmark, conflicts, and changed-line counts. In a Git repository you get the commit subject, branch, ahead/behind arrows, conflicts, and staged, unstaged, and untracked counts, with a GitHub, GitLab, or Codeberg icon for the remote.
- Graft at a glance. When the Graft MCP server registers tools, a
◤glyph appears on the statusline: colored while Graft is enabled for this session and its graph or workspace covers the current directory, monochrome when merely loaded, and absent when no Graft tools exist. The glyph reflects registry state, not a live transport check. - Two-tap configuration. The
/omp-statuslinemenu covers every setting with plain-language labels; changes save as you make them. Prefer editing JSON? The same file stays hand-editable. - Quiet and graceful. Refresh intervals are independent (screen, repository, usage), and rows hide when they have nothing useful to show: no repository, no thinking level, no usage report.
| Requirement | Details |
|---|---|
| Host | OMP 17.2 or newer |
| Repository status | Optional; jj preferred, git used as fallback |
| Building from source | Node.js 20 or newer, Bun |
Outside a repository, or when jj and git are missing, the VCS row simply disappears; the rest of the statusline keeps working.
-
Install from GitHub — pin a release tag when you want a fixed version:
omp plugin install 'github:Anthodev/omp-statusline' # latest omp plugin install 'github:Anthodev/omp-statusline#v0.2.0' # pinned release omp plugin install 'https://github.com/Anthodev/omp-statusline.git' # full Git URL
-
Or link a local checkout, for example to follow ongoing development:
git clone https://github.com/Anthodev/omp-statusline.git omp plugin link /absolute/path/to/omp-statusline
-
Verify with
omp plugin list, then start a new OMP session. Do not load the package and an older standalone statusline extension at the same time. -
Run
/omp-statuslineand set the panel up the way you like it. Every change saves immediately to~/.omp/agent/omp-statusline.json.
| Command | Action |
|---|---|
/omp-statusline |
Open the settings menu; changes save immediately |
/omp-statusline reload |
Re-read the configuration file and refresh all data |
Defaults work without a configuration file. The file written by the settings menu remains editable by hand — run /omp-statusline reload afterward to apply your edits.
| Option | Default | Accepted values | Controls |
|---|---|---|---|
refreshMs |
1000 |
250–60000 |
Statusline refresh interval |
vcsRefreshMs |
5000 |
1000–300000 |
Git and Jujutsu refresh interval |
usageRefreshMs |
60000 |
10000–600000 |
Provider usage refresh interval |
contextBarWidth |
20 |
4–60 |
Cells in the context bar |
quotaBarWidth |
12 |
4–40 |
Cells in each quota bar |
progressBarStyle |
"unicode" |
"unicode", "extended" |
Character set of the bars |
lineGap |
false |
boolean | Blank line between editor and statusline |
cwdMode |
"full" |
"full", "basename" |
Full path or final component only |
showThinking |
true |
boolean | Show the active thinking level |
showSessionName |
true |
boolean | Show the current session name |
showVcs |
true |
boolean | Show repository information |
showCaveman |
true |
boolean | Show the Caveman mode badge |
showPonytail |
true |
boolean | Show the Ponytail mode badge |
showGraft |
true |
boolean | Show the Graft availability glyph |
showCostWithoutSubscription |
true |
boolean | Show session cost when no quota matches |
subscriptionAccount |
"" |
text | Account label used to pick the matching quota report |
OMP Statusline runs entirely inside your editor. It reads the usage reports your host has already cached, runs jj or git locally, and writes a single configuration file in your agent directory. It makes no network requests of its own and collects no telemetry.
Install Node.js 20 or newer and Bun, then:
npm install
npm test
npm run typecheck
npm run pack:checkTo run the extension inside a real OMP without installing the package:
omp --no-session -e ./extensions/omp.tsBug reports are welcome on the issue tracker. A useful report includes your OMP version, the statusline configuration file, the terminal you use, and the steps to reproduce.