Open source / GPL-3.0 / v2.14.1

Know your
quota before
it runs out

Your provider shows one number: what you have used right now. onWatch keeps the history behind it - burn rate, reset cycles, per-session attribution - across 16 providers in a single local dashboard. One Go binary, under 50 MB, nothing leaves your machine.

curl -fsSL https://raw.githubusercontent.com/onllm-dev/onwatch/main/install.sh | bash
728GitHub stars live
49.3kDownloads live
16Providers tracked
0Bytes of telemetry
01 / Field data

Who is already
running it.

Stars and downloads are counted live from GitHub. Country and organization spread come from a periodic snapshot of public profile metadata. None of it comes from onWatch, which collects nothing about you.

--GitHub stars live
--Countries represented
--Downloads live
--With an org listed

Where stargazers are

loading

Organizations stargazers list

loading

Star growth

onWatch star history over time

Snapshot context unavailable.

02 / Coverage

Sixteen providers.
One dashboard.

onWatch tracks the account behind the tool, not the tool itself. Configure a key or let it auto-detect an existing CLI session, and a tab appears with that provider's real quota buckets - the same windows the provider bills against.

Anthropic

  • 5-hour
  • weekly all-model
  • per-model weekly
  • monthly
  • extra usage

OAuth auto-refresh with rate-limit bypass through token rotation. Reads Claude Code's own statusline when available to avoid the usage API entirely.

01OAuth, auto-detected

Codex

  • 5-hour
  • weekly
  • review requests

Multi-account tracking for several ChatGPT logins, plus an optional auto quota-starter that opens an unstarted 5-hour or weekly window for you.

02OAuth, auto-detected

Antigravity

  • Claude pool
  • Gemini pool
  • GPT pool

Source switchable between the desktop IDE probe, the agy CLI with richer weekly and 5-hour buckets, or both. All variants share one Google-account quota.

03Local IDE / agy probe

Z.ai

  • tokens
  • time
  • tool calls
  • credit windows

GLM Coding Plan, including the Lite tier's 5-hour and weekly credit windows with per-tool usage breakdowns and tokens-per-call efficiency.

04API key

Synthetic

  • subscription
  • search
  • tool calls

The original provider onWatch was built for. Full cycle history, session attribution and rate projections across all three quota types.

05API key

GitHub Copilot

Beta
  • premium interactions
  • chat
  • completions

Monthly reset tracking so you can see how fast premium interactions are going before the month turns over.

06Token

MiniMax

  • shared pool
  • 5-hour rolling

Coding Plan pool shared across M2, M2.1 and M2.5, with multi-account support for tracking several subscriptions from one dashboard.

07API key

Cursor

  • total usage
  • auto + composer
  • API usage
  • credits
  • on-demand

Individual, Team and Enterprise accounts. Credentials auto-detected from Cursor Desktop's SQLite store or the system keychain, with burn-rate forecasts and on-demand spend.

08Auto-detected

Kimi Code

  • weekly
  • window limits

Moonshot Kimi Code CLI over OAuth, auto-detected from the local credential store, with membership level mapped to a readable plan name.

09OAuth, auto-detected

Grok

  • credits
  • session tokens

xAI Build and SuperGrok credit utilization read from the local CLI auth file. No browser cookie import required.

10Local auth file

OpenRouter

  • credits

Credit balance and burn rate for the aggregation layer, alongside every direct provider account in the same view.

11API key

OpenCode Go

  • 5-hour
  • weekly
  • monthly

Subscription quotas from the authenticated OpenCode Go dashboard, with full cycle history and insights.

12Cookie + workspace

Ollama Cloud

  • monthly usage
  • per-model
  • extra spend

Included monthly usage in USD from the ollama.com API, with plan-derived caps, per-model request counts and pay-as-you-go spend.

13API key

Moonshot

  • available
  • voucher
  • cash

Balance-based tracking for the Moonshot open platform, with drop-rate trends that turn a falling balance into a runway estimate.

14API key

DeepSeek

  • total
  • granted
  • topped-up

Balance-based tracking for the DeepSeek platform API, separating granted credit from money you actually paid.

15API key

Gemini CLI

Legacy
  • per-model
  • 24-hour cycles

Kept working for existing setups, but no longer the recommended path - Google's CLI has been superseded by Antigravity. New installs should use the agy source on the Antigravity provider instead.

16OAuth, auto-detected

API Integrations

  • tokens
  • requests
  • cost

Not a provider - a local JSONL drop-box. Wrap your own API calls, append normalised events, and your bespoke scripts get the same charts as everything else.

EXTRALocal JSONL files
03 / The gap

A snapshot is not
a measurement.

Every provider tells you where you are. None of them tell you how fast you got there, whether this cycle is worse than the last one, or which session burned it.

Your provider dashboard

One number, no context

  • 01Current quota usage, right now
  • 02A reset date, if you are lucky
  • --No history once the cycle turns over
  • --No rate, so no way to project forward
  • --One tab per provider, no shared view

None of this is the providers being unhelpful. A quota endpoint answers "how much is left", and that is all it was ever asked.

onWatch adds

The dimension they omit

  • 01Historical trendsEvery poll kept in local SQLite, charted from 1 hour to 30 days.
  • 02Reset cycle detectionCycles found automatically, then closed with peak and total consumed.
  • 03Burn rate and projectionConsumption per hour, extrapolated to the reset - so you see the wall coming.
  • 04Per-session attributionEach agent run becomes a session with its own peak, so you can compare work periods.
  • 05Cross-quota correlationWhich quotas spike together, and what 1% of weekly costs you in 5-hour terms.
  • 06One unified viewEvery configured provider side by side, with live countdowns to each reset.
04 / Instrumentation

Everything it does,
on your machine.

A background agent polls, a local database remembers, and a Material Design 3 dashboard renders it. No account, no cloud, no build step.

3.01

Live dashboard

Per-quota cards with progress, live countdown, status badge and consumption rate. Dark and light themes, auto-detected from your system on first visit.

3.02

Time-series charts

Every quota as a percentage of its limit across 1h, 6h, 24h, 7d and 30d windows, with gap-aware rendering so downtime does not draw a fake line.

3.03

Insights

Burn-rate forecasting, billing-period averages, usage variance, trend detection and cross-quota ratio analysis such as "1% weekly is about 24% of a 5-hour sprint".

3.04

Cycle overview

A correlation table showing where every quota stood at the peak moment of each billing period, so you can see which limits move together.

3.05

Sessions

Each agent run is recorded as a session with its own peak consumption, which turns "that refactor was expensive" into a number you can point at.

3.06

Email alerts Beta

SMTP notifications on warning, critical and reset events, with per-quota threshold overrides. Credentials encrypted at rest with AES-GCM.

3.07

Push notifications Beta

Browser push over the Web Push protocol with VAPID and no external service. onWatch is an installable PWA, so it can behave like a native app.

3.08

Prometheus endpoint Beta

A /metrics endpoint with quota utilization, reset timestamps and scrape health per provider, for Grafana and Alertmanager. Optional bearer-token protection.

3.09

Menubar and tray

A companion in the macOS menubar and in the Linux and Windows tray - quota meters, sparkline trends, provider ordering you control, and a quick view a click away.

3.10

VS Code extension

The tightest quota in your status bar, a hover breakdown per provider and the quick view in an onWatch sidebar. On the Marketplace.

3.11

GNOME extension

A GNOME Shell extension surfaces the same tray panel on Linux, sharing the dashboard's menubar view rather than reimplementing it.

3.12

Reverse-proxy auth

Run behind Authelia, Authentik or any SSO that sets a trusted user header, scoped to CIDR ranges you nominate. Or keep the built-in login.

3.13

Runs as a service

launchd on macOS, systemd on Linux, Docker and Kubernetes with an Alpine variant. Self-update built in, and it starts at login if you want it to.

05 / Architecture

Four moving parts.

Deliberately boring. A poll loop, a file, a server, and whatever you choose to point at it.

STAGE 01

Poll

A background agent per provider polls on your interval, backing off on rate limits and refreshing OAuth tokens before they expire.

STAGE 02

Store

Every reading lands in ~/.onwatch/data/onwatch.db - a single SQLite file, pure-Go driver, one connection, bounded queries.

STAGE 03

Track

Trackers detect resets, close cycles with peak and delta, compute rates, and attribute consumption to the session that caused it.

STAGE 04

Serve

A local server renders the dashboard and exposes a REST API and Prometheus metrics. Templates and assets are embedded in the binary.

POLLSQLITETRACKSERVEYOU
06 / Install

One binary.
No runtime.

Pick your platform. The installer drops the binary in ~/.onwatch/, writes a config, and optionally registers a service.

curl -fsSL https://raw.githubusercontent.com/onllm-dev/onwatch/main/install.sh | bash

Sets up a systemd user service on Linux, or offers a launchd agent on macOS. The macOS build includes menubar support.

brew install onllm-dev/tap/onwatch
onwatch setup    # interactive wizard for keys and config

Works on both macOS and Linuxbrew.

irm https://raw.githubusercontent.com/onllm-dev/onwatch/main/install.ps1 | iex

Or download install.bat from Releases and double-click it.

docker run -d --name onwatch \
  -p 9191:9191 \
  -v onwatch-data:/data \
  --env-file .env \
  ghcr.io/onllm-dev/onwatch:latest

An Alpine variant with a shell is available for debugging. Containers run in the foreground and are detected automatically.

nix run github:onllm-dev/onwatch#onwatch

A pure-Go static build. nix develop gives you the dev shell.

# then
onwatch setup      # add provider keys (most auto-detect existing CLI sessions)
onwatch start      # background agent + dashboard on :9191
Also / in your editor

VS Code extension

Your tightest quota in the status bar - 82%, with the time to reset once it turns critical - a hover table with every provider, and the quick view in its own onWatch sidebar. It is a thin client: the daemon does the polling, the extension finds it on its own and follows the same provider order, visibility and thresholds you set in the dashboard. Zero telemetry, same as the rest.

code --install-extension onllm-dev.onwatch

Every release also ships it as onwatch-vscode-<version>.vsix for editors without Marketplace access.

07 / Interface

What you actually get.

Screens follow the theme you picked in the header. Click any of them to open it full size.

08 / Questions

Reasonable doubts.

The things worth asking before you leave a background agent running against your provider accounts.

Does onWatch send any data anywhere?
No. onWatch talks only to the provider APIs you configure. There is no analytics, no phone-home, no external database and no account to create. Usage history lives in a local SQLite file at ~/.onwatch/data/onwatch.db, and the source is GPL-3.0, so you can verify that claim rather than take it. It works air-gapped apart from the provider calls themselves.
How heavy is it to leave running?
Under 50 MB resident with every provider polling in parallel. It is a single static Go binary with a pure-Go SQLite driver - no runtime to install, no CGO, no sidecar services. The default poll interval is two minutes and is configurable per install.
Does it work with Claude Code, Cline, Roo Code or Kilo Code?
Yes. onWatch watches the provider account, not the editor. Anything using the same API key or OAuth session - Claude Code, Codex CLI, Cline, Roo Code, Kilo Code, Cursor, GitHub Copilot, Antigravity and others - shows up automatically, because it is the same quota.
Do I have to paste API keys for everything?
Mostly no. Anthropic, Codex, Cursor, Kimi Code, Grok, Gemini and Antigravity are auto-detected from the CLI sessions already on your machine - onWatch reads the credential store the tool itself wrote. Balance-based providers such as Moonshot, DeepSeek and OpenRouter need a key, which stays in your local .env.
Can I plug it into Prometheus or Grafana?
Yes. The /metrics endpoint is in beta and exposes quota utilization, reset timestamps and scrape health labelled by provider and account, optionally behind a bearer token set with ONWATCH_METRICS_TOKEN. There is also a REST API, and the SQLite file can be used directly as a Grafana data source.
Can a team share one instance?
Yes. Run it on a shared host and reach it over the network. Authentication is either the built-in login with a hashed password in SQLite, or a trusted reverse-proxy mode where an SSO layer such as Authelia or Authentik sets a user header, restricted to CIDR ranges you nominate.
What is the catch on price?
There isn't one. It is free and GPL-3.0 licensed, with no paid tier, no telemetry and nothing gated. If it saves you from a throttle mid-refactor, a star is genuinely the whole ask.
How stable is it?
onWatch is in active development and features marked Beta may change. The core - polling, storage, cycle detection and the dashboard - is what most people run daily. Releases are cut from CI with cross-compiled binaries for five platforms, and issues get triaged on GitHub.
09 / Start watching

Stop finding out
the hard way.

Install takes about thirty seconds and most providers configure themselves from sessions you already have.

curl -fsSL https://raw.githubusercontent.com/onllm-dev/onwatch/main/install.sh | bash