Free MIT core · Aurora Meter Pro from $99/mo per app
Aurora Meter
Real-time credits, quotas and usage billing for Phoenix,
on the Stripe billing you already have.
Charging for LLM tokens? Sell prepaid credits that burn down as each call settles,
with Stripe top-ups and auto-recharge when a balance runs low. Running B2B SaaS? Gate
plans with quotas and usage limits, and report overage to Stripe Billing Meters.
Count, gate, and bill
on the BEAM: an ETS hot path that flushes to Postgres and adds up across every node
in your cluster.
Free MIT core · track/2
lib/my_app/reports.ex
Live
# count usage: an ETS increment, flushed to PostgresAuroraMeter.track(org, :ai_generations)
# read it back, live, for the UIAuroraMeter.usage(org, :ai_generations)
#=> %{used: 7_420, limit: 10_000}
org_acmeupgrade_prompt→ shown · plan :pro → :scale
Metered events
12:04:31Acme Corpai_generations+3
12:04:29Globexapi_calls+128
12:04:27Initechexports+1
12:04:24Umbrellaai_generations+7
stripe Billing Meters
Synced with Stripe
1,240,318
events reported this period
ai_generations✓ meter_event
api_calls✓ meter_event
exports✓ meter_event
MRR
$19,072
▲ +11% this month
Metered revenue
$4,210
▲ +23% overage
Invoices paid
312
Stripe, this period
Metered usage by month
Feb
Mar
Apr
May
Jun
Jul
Invoice paid · Acme Corp · $412.00
ETS hot pathPersisted to PostgresCluster-wide totalsMIT core
Counting
In ETS
Off the database path.
Flushed to Postgres
On your interval
Five seconds by default, and configurable.
Across your cluster
Totals converge
Within a broadcast interval; a hard cap can overshoot by what the other nodes
admitted in it.
Core licence
MIT
Built on
Phoenix
Elixir
LVLiveView
PostgreSQL
Stripe
Tailwind
How it works
From mix.exs
to billed in four steps.
The free core counts and gates, persists to Postgres and sums across nodes. Add Aurora
Meter Pro when you want Stripe to charge for it.
01
Add the dependency
Pull in the free MIT core from Hex. Pro is a drop-in add-on when you need billing.
step 01
def deps do
[
{:aurora_meter, "~> 1.0"}
]
end
02
Declare your plans
A compile-time DSL, validated at compile time. Hard caps, metered overage, and boolean capabilities all live in one place.
step 02
defmoduleMyApp.PlansdouseAuroraMeter.Plans
plan :freedo
limit :ai_calls, 100, :hardend
plan :prodo
metered :ai_calls, included: 10_000, unit_price: 1
feature :priority_support, trueendend
03
Start it in your tree
One child. It validates config at boot and starts the metering runtime.
step 03
children = [
MyApp.Repo,
{Phoenix.PubSub, name: MyApp.PubSub},
AuroraMeter,
MyAppWeb.Endpoint
]
04
Count, gate and bill
Three calls. `track` counts, `with_quota` gates-runs-meters atomically, and the LiveView components render live usage. `org` is your tenant: any string or id for the customer, or your own struct via a small `AuroraMeter.Tenant` module.
step 04
# count usageAuroraMeter.track(org, :ai_calls)
# gate + run + meter in one atomic stepAuroraMeter.with_quota(org, :ai_calls, fn ->
generate_report()
end)
step 01 · Add the dependency
def deps do
[
{:aurora_meter, "~> 1.0"}
]
end
step 02 · Declare your plans
defmoduleMyApp.PlansdouseAuroraMeter.Plans
plan :freedo
limit :ai_calls, 100, :hardend
plan :prodo
metered :ai_calls, included: 10_000, unit_price: 1
feature :priority_support, trueendend
step 03 · Start it in your tree
children = [
MyApp.Repo,
{Phoenix.PubSub, name: MyApp.PubSub},
AuroraMeter,
MyAppWeb.Endpoint
]
step 04 · Count, gate and bill
# count usageAuroraMeter.track(org, :ai_calls)
# gate + run + meter in one atomic stepAuroraMeter.with_quota(org, :ai_calls, fn ->
generate_report()
end)
The free core counts, gates and holds prepaid credit. Pro is the revenue and
operations layer on top: prepaid credit sold through Stripe with top-ups and
auto-recharge, metered usage reported to Stripe Billing Meters, Stripe billing sync,
self-hosted LiveView dashboards showing balance and spend, historical rollups, quota
alerts and reconciliation.
7
complete Phoenix codebases extracted from products that already shipped: accounts,
Stripe payments, email, admin and SEO built in. Buy one outright or take the whole
catalogue with the Builder Pass. Full source, commercial licence, no subscription.
A fully-featured blog template with admin panel, markdown support, SEO optimization, and responsive design. Legacy shelf: stable, maintained for security fixes, honestly priced.
Agentic data-analysis starter: chat with your PostgreSQL data through a policy-enforced, read-only SQL boundary with adversarial tests, MCP integration, and local-model support via Ollama (boots fine without it). Built for teams shipping AI features on their own data.
AI document workspace starter: upload PDFs (10 MB free / 80 MB pro in the demo plans) and chat with them through a provider-agnostic AI boundary (OpenAI or deterministic fake for dev), with tenant-isolated storage, a tested deletion lifecycle, and an interactive viewer. AI answers vary by model and need human validation. The consolidated successor to AI Template and PDFAi.
The whole catalogue plus everything we release next, with lifetime updates and
commercial use on unlimited projects. Downloads land in your account instantly.
The free core installs in one dependency. Pro starts with a 14-day trial and bills through Stripe when you are ready. Need the
rest of the app too? Start from a template.