We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
Free MIT core · Aurora Meter Pro from $149/mo
Aurora Meter
Laravel Cashier + OpenMeter, for Phoenix. Real-time usage metering, plan entitlements, and Stripe billing. Count, gate, and bill on the BEAM, with an ETS hot path that never touches your database on the write path.
# count usage: microseconds, no DB on the hot path
AuroraMeter.track(org, :ai_generations)
# gate + run + meter, atomically
AuroraMeter.with_quota(org, :ai_generations, fn ->
generate_report()
end)
Three jobs, one library
Every SaaS meters, gates, and bills. On Phoenix you hand-roll all of it.
Meter
Increments hit a lock-free ETS counter — microseconds, no database on the hot path. A flusher persists snapshots on an interval; a broadcaster fans live values over PubSub.
Entitle
Declare plans in a small compile-time DSL, then gate features by plan. `with_quota/4` reserves atomically, so hard limits stay correct under concurrency.
Bill
The free core ships a billing seam; Aurora Meter Pro closes the loop — Stripe checkout, webhook sync, and metered usage reported to Stripe Billing Meters.
Part 1 · The free core, MIT
Everything you need to count and gate. Free, forever.
The MIT core is the whole metering and entitlements engine: real-time counters on an ETS hot path (~8M increments/sec), the plan DSL and an atomic quota gate, drop-in LiveView usage components, Postgres persistence, and telemetry. No email gate, no trial, no expiry.
Real-time counters
ETS update_counter, ~8M/sec, nothing on your database write path.
Plan DSL + with_quota
Hard caps, metered overage and feature flags, gated atomically.
LiveView components
Drop-in usage meters that read the live counters over PubSub.
Postgres + telemetry
Durable snapshots and telemetry events, ready for your stack.
The showcase
Live usage, rendered where your team already looks.
Aurora Meter ships LiveView components that read the live ETS counters and update over PubSub. Drop them into an admin dashboard and every plan's usage is visible in real time. This is a mock of that surface.
Usage this period
Scale plan · resets in 12 days
The guide
From mix.exs to billed in four steps.
The free core does count, gate, and bill. Add Aurora Meter Pro when you want Stripe to charge for it.
Add the dependency
Pull in the free MIT core from Hex. Pro is a drop-in add-on when you need billing.
def deps do
[
{:aurora_meter, "~> 0.1"}
]
end
Declare your plans
A compile-time DSL, validated at compile time. Hard caps, metered overage, and boolean capabilities all live in one place.
defmodule MyApp.Plans do
use AuroraMeter.Plans
plan :free do
limit :ai_calls, 100, :hard
end
plan :pro do
metered :ai_calls, included: 10_000, unit_price: 1
feature :priority_support, true
end
end
Start it in your tree
One child. It validates config at boot and starts the metering runtime.
children = [
MyApp.Repo,
{Phoenix.PubSub, name: MyApp.PubSub},
AuroraMeter,
MyAppWeb.Endpoint
]
Count, gate and bill
Three calls. `track` counts, `with_quota` gates-runs-meters atomically, and the LiveView components render live usage.
# count usage
AuroraMeter.track(org, :ai_calls)
# gate + run + meter in one atomic step
AuroraMeter.with_quota(org, :ai_calls, fn ->
generate_report()
end)
Free vs Pro
Where the free core stops and Pro begins.
The core counts and gates for nothing, forever. Pro adds the revenue and operations layer: Stripe billing, reporting, dashboards, rollups, alerts, and reconciliation.
Part 2 · Aurora Meter Pro
From live counters to invoices, in one place.
The free core counts and gates. Pro is the revenue and operations layer on top: a hosted real-time dashboard, Stripe billing sync, metered-usage reporting, historical rollups with CSV export, quota alerts, and reconciliation. Here is what ships.
Usage & billing
Scale plan · billing period Jul 1 to Jul 31
Active subscriptions
128
▲ +6
MRR
$19,072
▲ +11%
Metered revenue
$4,210
▲ +23%
Events reported
1.24M
this period
Metered usage by month
AI generations (thousands)
Included allowances
Live meter events
streaming| Time | Customer | Feature | Qty | Stripe |
|---|---|---|---|---|
| 12:04:31 | Acme Corp | ai_generations | 3 | reported ✓ |
| 12:04:29 | Globex | api_calls | 128 | reported ✓ |
| 12:04:27 | Initech | exports | 1 | reported ✓ |
| 12:04:24 | Umbrella | ai_generations | 7 | reported ✓ |
| 12:04:21 | Hooli | api_calls | 64 | reported ✓ |
Stripe billing sync
Checkout and a self-contained webhook verifier keep subscriptions in lockstep. Metered overage lands on the invoice automatically.
Quota alerts
Threshold alerts fire once (deduplicated), so you can email the customer, throttle, or prompt an upgrade before they hit the wall.
Acme Corp at 90% of AI generations
9,000 / 10,000 this period
Globex exceeded the API calls hard cap
250,000 / 250,000, new calls blocked
Initech reached 75% of exports
38 / 50 this period
Historical rollups & export
Month and day rollups persist for reporting, with one-click CSV export for finance.
| Jul 2026 | 120,000 units |
| Jun 2026 | 94,000 units |
| May 2026 | 78,000 units |
| Apr 2026 | 61,000 units |
Reconciliation
A background pass compares local counters against the provider and repairs any drift, so your invoices never quietly diverge from reality.
Last run 2 minutes ago · 128 subscriptions · 1.24M events checked
Pricing
Start free. Upgrade when Stripe is charging.
Free · MIT
Aurora Meter
$0 forever
Metering, entitlements, plan DSL, LiveView components, Postgres persistence and telemetry. Everything you need to count and gate.
Get the free coreCommercial · Pro
Aurora Meter Pro
$149 / month · per app
Everything in the core, plus Stripe checkout + webhook sync, metered usage to Stripe Billing Meters, hosted dashboards, historical rollups with CSV export, and quota alerts.
- Stripe checkout + webhook sync
- Metered usage → Stripe Billing Meters
- Subscription-aligned periods
- Historical rollups + CSV export
- Hosted real-time dashboards
- Quota alerts + reconciliation
Billed monthly via Stripe · cancel anytime
Licensed per app, like Oban Pro. After checkout we email your private package access. Questions? Talk to us.