The open-source metering and billing platform for AI, agentic and DevTool monetization.
Docs | Hosted | Blog | Contributing
OpenMeter is a real-time metering and billing engine that helps you track usage, enforce limits, manage subscriptions, and automate invoicing — all in one platform. Ingest events via a simple API, define meters with flexible aggregations, and connect usage data to billing, entitlements, and customer-facing dashboards.
- Usage Metering — Ingest events in CloudEvents format, define meters with flexible aggregations (SUM, COUNT, AVG, MIN, MAX), and query usage in real time.
- Usage-Based Billing — Generate invoices from metered usage. Supports tiered, graduated, and flat-fee pricing with automated invoice lifecycle management.
- Usage Limits and Entitlements — Enforce usage quotas per feature with real-time balance tracking, boolean feature flags, and grace periods.
- Product Catalog — Define plans, add-ons, features, and rate cards. Manage subscriptions with mid-cycle changes, prorating, and alignment.
- Prepaid Credits — Support paid or promotional credit grants with priority-based burn-down and expiration.
- Customer Portal — Token-based self-service dashboards so your customers can see their own usage.
- Notifications — Webhook-based alerts with configurable rules and channels for usage thresholds and billing events.
- LLM Cost Tracking — First-class support for metering AI token usage and computing model-specific costs.
The fastest way to start. Start for free and begin metering and billing in minutes — no infrastructure to manage.
Run OpenMeter locally with Docker Compose:
git clone git@github.com:openmeterio/openmeter.git
cd openmeter/quickstart
docker compose up -dThen ingest your first event:
curl -X POST http://localhost:48888/api/v1/events \
-H 'Content-Type: application/cloudevents+json' \
--data-raw '{
"specversion": "1.0",
"type": "request",
"id": "00001",
"time": "2024-01-01T00:00:00.001Z",
"source": "my-service",
"subject": "customer-1",
"data": { "method": "GET", "route": "/api/hello" }
}'Query your usage:
curl 'http://localhost:48888/api/v1/meters/api_requests_total/query?windowSize=HOUR' | jqSee the full quickstart guide for more details.
Deploy to Kubernetes using our Helm chart.
| Language | Package | Source |
|---|---|---|
| Go | openmeter | api/client/go |
| JavaScript / Node.js | @openmeter/sdk | api/client/javascript |
| Python | openmeter | api/client/python |
Don't see your language? Use the OpenAPI spec directly or request an SDK.
OpenMeter is built in Go with a stack optimized for high-volume event ingestion and real-time aggregation:
| Component | Role |
|---|---|
| PostgreSQL (Ent ORM) | Billing, subscriptions, entitlements, product catalog |
| ClickHouse | Real-time usage aggregation and analytics |
| Kafka | Event streaming and ingestion pipeline |
| TypeSpec | API-first design — OpenAPI spec and SDKs from TypeSpec |
We'd love to have you involved:
- Contributing — Start here if you want to contribute code.
- Code of Conduct — Our community guidelines.
- Blog — Product updates and engineering deep dives.
Prerequisites: Nix and direnv are recommended. See CONTRIBUTING.md for detailed setup instructions.
make up # Start dependencies (Postgres, Kafka, ClickHouse)
make server # Run the API server with hot reload
make test # Run tests
make lint # Run lintersLicensed under Apache 2.0.
