Navigation and Layout
The dashboard opens on the Projects tab. Across the top you'll see the primary navigation: Projects, Analytics, Services, API Keys, and Settings.
The header includes the QuotaKit logo and a Sign out action. Everything below the tab bar is the active panel for the selected tab.
Projects, Paths, and Quota Granularity
Paths form a hierarchy. The first segment is the project root, and below it you add paths representing features, teams, or modules. Each path can carry multiple quota policiesat different scopes — any service, per service, or per service/model — and each policy's spend window rolls up all requests on that path and every descendant path below it.
Live tree view — demo data
This is the same tree component the dashboard uses. Each node previews the most severe quota (the one closest to 100%) — open the inspector to see every policy on a path.
How quota scoping works
acmeSet an any-service USD cap here and it acts as a project-wide budget ceiling. Every request logged to any path below counts toward this cap.
acme/searchAssign a service (e.g. openai) to a path. Then stack multiple policies — a total-service cap, plus per-model caps for gpt-4o and gpt-4o-mini. Spend from descendant paths rolls up.
acme/search/query-rewriteA leaf can have its own per-service and per-model caps that are independent of the parent's. When both parent and leaf have a cap, both are enforced — whichever trips first wins.
Key concepts
- Each path has one permanently-assigned service (or none for project roots acting as umbrella caps). The ingest hard-rejects
track()calls that don't match the assigned service. - Up to 10 policies per path.Each policy scopes to a service, a service+model, or "any service." You can mix: one global cap + three model-specific caps + a request-count cap — all enforced independently.
- Spend rolls up. A policy on
acme/searchcounts spend fromacme/search/query-rewriteandacme/search/reranktoo. The parent doesn't just cap its own logs — it caps the subtree. - Node cards preview the worst-of. The color (green → yellow → red) and the headline spend figure on each node come from whichever policy is closest to 100%. Click any node to open the inspector and see every policy with its own progress bar.
- Three enforcement modes. Open (record only), Block (reject after the next SDK flush), and Strict (pre-reserve before spend). You can mix modes across policies on the same path.
- Alerts fire per-policy. Set an alert at 80% on a model-specific cap and a separate alert at 90% on the service-wide cap. Both fire independently when their thresholds are crossed.
- Quota editor — set USD, credit, request, or token limits and choose an enforcement mode.
- Alerts — email notifications when spend crosses a threshold you define.
- Notes and tags — document what a path is for, filterable in analytics.
- Archive and restore — preserve history while removing paths from active use.
Dashboard Tabs
Projects
Hierarchy view for paths, quotas, alerts, and notes.
Analytics
Spend, request, and token trends with filters and breakdowns.
Services
Price tables for providers and custom services.
API Keys
Generate or revoke account-wide keys.
Settings
Account profile and billing configuration.
API Keys
Keys authenticate SDK calls. For the MVP, every key is account-wide and the full key is shown only once when created.
quotakit.init(api_key="aisc_...")Analytics Overview
Analytics supports time windows such as Today, 7d, 30d, and Custom, along with filters for path, service, and model.
The dashboard includes summary cards, trend charts, and breakdowns so you can identify the highest-cost paths and services quickly.
Alerts and Enforcement
Alerts notify when spend crosses a threshold. Notifications go to your account email by default, and you can add external email recipients.
Quotas can run in Open, Block, or Strict mode. Strict mode coordinates concurrency across pods and is the strongest enforcement option.
Services and Pricing
The Services tab controls how QuotaKit prices each provider and model. Add custom APIs here so request costs can be computed reliably.