Why OpenLimiter
When you hold several AI coding subscriptions, the scarce resource stops being money and becomes quota. You already paid. The question that decides your afternoon is which of those plans still has room left.
The problem
A developer running two or three coding agents ends the week with the same recurring interruption. One plan hits its window, the agent stops mid task, and the work pauses while a human goes hunting through dashboards to find out which other subscription is still usable.
The information exists. It is scattered across a statusline payload, a local usage file, a billing page, and a credit balance, in four different shapes, none of which the agent can see.
What OpenLimiter does about it
OpenLimiter reads quota for supported AI subscriptions on your own machine, normalises every reading into one schema, and feeds bounded budget state plus routing advice into the coding agents' own context. The first adapter is a Claude Code statusline and prompt hook.
- Read. Connectors parse shapes that a provider or a local tool already produced. They perform no network access in this release.
- Normalise. One snapshot schema with closed enums, bounded percentages, and derived freshness. Unknown stays unknown and never becomes a fabricated zero.
- Advise. A compact statusline for you, and a bounded context block for your agent that carries enum codes, numbers, and timestamps only.
What it deliberately is not
- It is not a proxy. Your requests keep going straight to your provider.
- It is not a dashboard service. There is no OpenLimiter server, no account, and no telemetry.
- It is not a billing tool. It reports how much of a window you have consumed, not what you will be charged.
The rules the code follows
Unknown stays unknown
Missing, expired, malformed, and unrecognised input all resolve to unknown. A connector that cannot read something says so. Nothing in the codebase turns an absent reading into a zero, because a fake zero would make an agent behave as though a plan were exhausted.
Percentages are truncated, never rounded up
A meter at 99.99 percent renders as 99.9 percent. A cap is only ever claimed once it has actually been reached.
One bad row does not lose a provider
A row that fails validation is dropped and the remaining rows still count. One expired window is not a reason to forget a whole subscription.
Local first, with no server to trust
Everything is written to a local state directory under your own user account. See configuration for where that is, and security and privacy for what that buys you. The licence is Apache 2.0 and the whole thing is UNVERIFIED by its own labels until a verifier exists.