One call.Every request.
Brume is a rate-limiting gateway built in Rust. Four algorithms, per-identifier overrides, quotas, and blocklists — one HTTP call, one flat-rate bill.
Rate limiting is a solved problem. Stop solving it.
Every team rebuilds the same counters, the same Lua scripts, the same edge cases. Brume runs them for you.
The whole rate-limiting surface.
Rules are the start. Overrides, quotas, blocklists, and analytics are built in, not bolted on.
One user needs a higher limit? Give that identifier its own cap without creating a second rule. The override shares the rule's counter and inherits whatever you leave unset.
Rate rules handle bursts; quotas handle budgets. Monthly, weekly, and daily caps with billing-cycle-aware resets, enforced alongside the rate rule.
Deny or admit IPs and keys before any rule runs. A blocked identifier never consumes capacity; an allowed one never gets denied.
See which identifiers are hitting limits, not just that limits were hit. Allowed, denied, and remaining, broken down per namespace.
A number you can put in a budget.
No per-request metering. No tier-jumping. Flat-rate caps on check volume — exceeding one rejects, it never invoices.
Built for teams that already run an API.
Atomic Lua evaluation, a dedicated Redis you never touch, and fail-open behavior you can see. Your infrastructure, your rules.
No garbage collector, no virtual machine, no runtime to install. The server is small, fast, and predictable under load.
Every check runs as one atomic script against a dedicated Redis. No race windows, no double-counting, no app-side locking.
If Redis goes down, checks return success with degraded: true. Availability over correctness, and you get to see it happened.
Questions, answered.
What is Brume?
Brume is a rate-limiting gateway built in Rust. You define rules, evaluate requests against them with one HTTP call, and read standard X-RateLimit headers. Overrides, quotas, blocklists, and per-identifier analytics are built in.
How is this different from running my own Redis counters?
You stop owning the hard parts: atomic evaluation, sliding-window math, cache invalidation across nodes, fail-open behavior, and the dashboard. Brume runs a dedicated Redis for you and exposes it as one HTTP call.
What happens when Redis is down?
Checks fail open: the gateway returns success with degraded: true so your traffic keeps moving. You decide the tradeoff — the SDK also supports a deny-on-error mode if correctness matters more than availability.
Is there a free tier?
Yes. 10,000 checks/day, 5 rules, all four algorithms, quotas, and blocklists. No credit card required, no time limit.
What is actually metered?
Nothing. Every tier is a flat rate with capacity caps. Exceeding a cap rejects new requests with a PLAN_LIMIT error — nothing is invoiced retroactively.