Omahub
← All plugins
S

OpenRouter Usage

by ssobhani

OpenRouter credits, daily and per-model spend for pi/omp sessions in a native Omarchy bar panel.

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
66eaaaf
Scanned
1 month ago

No potentially dangerous behavior detected in the analyzed commit.

Automated analysis only — not a security guarantee.

AI advisory review

No obvious issues detected

Language-model assessment · ~deepseek/deepseek-v4-flash-latest — advisory only

None
AI risk level
None
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
66eaaaf
Reviewed
1 month ago

The plugin is a straightforward OpenRouter usage bar widget. It reads local pi/omp session transcripts and queries the OpenRouter API using a user-provided API key, then displays the results. No obfuscation, destructive commands, or hidden persistence were found; the code is clean and follows standard Omarchy plugin conventions.

How this check works

This review combines the deterministic scan (the rule-based results above) with an independent look at the plugin's code by a language model. The model reads a trimmed sample of the repository's files, the manifest, and the README, then gives a plain-language risk level and a recommendation: install (no notable danger), review (look closer first), or avoid (clearly dangerous).

It runs on the same analyzed commit as the deterministic scan and is strictly advisory — it is not a security guarantee and never blocks a plugin by itself. A human moderator still reviews plugins before they are listed.

AI advisory only — automated analysis, not a security guarantee.

Install
$ omarchy plugin add https://github.com/sepehr500/omarchy-openrouter-usage --enable
Widgets #bar #quickshell #ai

OpenRouter Usage — Omarchy bar widget

Live OpenRouter credits and spend in the Omarchy (Quattro / 4.x) bar:

  • Balance — your current prepaid credit, straight from OpenRouter's API
  • Spend by day — the last 7 days of rated cost from your local pi / omp sessions
  • Spend by model — lifetime dollars per model, token counts in the tooltips

The OpenRouter usage panel

Everything is charted in dollars, not tokens — because on a pay-per-token router, 3.4B tokens of a cheap model and 800M tokens of an expensive one are not the same thing.

Requirements

  • Omarchy 4.x (Quattro) — the Quickshell-based shell
  • pi or omp with OpenRouter as a provider (session transcripts under ~/.pi/agent/sessions / ~/.omp/agent/sessions)
  • An OpenRouter API key

Install

omarchy plugin add https://github.com/ssobhani/omarchy-openrouter-usage.git --enable

Then provide your API key. Either export OPENROUTER_API_KEY in your session environment, or (recommended, works for the widget's own refresh schedule):

mkdir -p ~/.config/omarchy/agents
cat > ~/.config/omarchy/agents/openrouter.json <<EOF
{"apiKey": "sk-or-v1-..."}
EOF
chmod 600 ~/.config/omarchy/agents/openrouter.json

The widget appears in the bar once the first scan finds OpenRouter usage.

Optional: budget gauge

OpenRouter's API only reports lifetime purchases and usage, which makes a "spent of funded" gauge meaningless for topped-up accounts. If you want the drain meter and the low-balance alarm, declare your top-up size:

{"apiKey": "sk-or-v1-...", "fundedAmount": 1000}

With fundedAmount set, the balance meter shows the remaining fraction of that budget and turns urgent below 10%.

Settings

Right-click the widget icon to refresh. In the bar settings UI:

Setting Default Meaning
refreshIntervalSec 300 How often the collector re-scans sessions and re-probes the account

Remove

omarchy plugin remove ssobhani.openrouter-usage

This restores the bar to its previous state. Optionally delete the key/config file (~/.config/omarchy/agents/openrouter.json) and the collector's cache (~/.cache/omarchy/agent-usage/openrouter-*.json); the plugin never touches any other configuration.

How it works

  • bin/collect (Python, stdlib only) prints one display-ready JSON record: it scans pi/omp session transcripts for messages whose provider is openrouter, sums pi's per-message rated cost next to the token counts, and probes GET /api/v1/credits + GET /api/v1/key for the live balance.
  • Main.qml runs that command on a timer and parses stdout. No systemd units, no shared state files — the record never touches disk.
  • Panel.qml renders it: balance, spend by day, spend by model.

The collector follows the same conventions as Omarchy's built-in agent usage collectors (--force, --limits-only, cached probes with a 15s floor, stale-cache-on-failure), so it plays nicely on flaky networks.

Coexistence with the stock Agents widget

This widget is fully standalone — it does not replace or modify the built-in omarchy.agents widget. Claude Code / Codex / Fireworks tracking keeps working exactly as before, side by side.

Credits

OpenRouter "OR" glyph from OpenRouter's official brand assets (openrouter.ai/brand/v2, 2026 rebrand) — chartreuse on dark surfaces, purple on light, per their brand palette. OpenRouter is a trademark of its owner; this project is not affiliated.

License

MIT