Solutions · Feature flags & entitlements
Put every feature
behind a flag.
Rollouts, betas, and kill switches in the same policy that decides plan access and bills the usage. Flip one, and every engine has it on the next call.
await limitr.check(org, 'ai_assistant')Only the beta orgs, picked in customer metadata.The problem
Your flags don't know
what a feature costs.
The flag tool says the AI assistant is on. Billing says the customer never paid for it. Three systems, three answers.
With AI, every feature spends money on every call. Its switch should know the plan, the price, and the bill.
How it works
A plan is a set
of switches.
In Limitr Cloud, every feature is a row and every plan a column. Turn one on, roll it out, give it a limit, or kill it, then publish. Your code asks the same question either way.
ai_assistantAI assistantrolloutbeta_canvasNew canvasbetassoSingle sign-onflagapiAPI callslimitexport_csvCSV exportsflaglegacy_editorThe old editorkill switchShip AI safely
Ship AI features dark,
then turn them up.
Launch to the beta, then 5%, then 25%. Every call is metered against the plan from the first one, so you see what each step costs before you take the next.
Rollouts that hold
Raise the number and everyone already in stays in. Each feature buckets on its own, so the same customers aren't first for everything.
A kill switch in one line
Turn a feature off in Cloud and it is off for everyone on the next call. Usage so far is kept.
Give and take per customer
Give a design partner SSO for 14 days, or pause exports on an unpaid invoice, without touching the plan.
Limitr Cloud
Every flip is a commit,
with history.
A rollout change is a policy change: tested on live traffic, published to every engine, and one click to roll back. Product can turn the dial without a deploy.
- v31ai_assistant rollout 5 → 25Priya · 2m agolive
- v30sso given to Dana for 14 daysSales · 1h ago
- v29ai_assistant rollout 0 → 5Priya · yesterday
- v28legacy_editor enabled → falseMarco · Mon
Under the hood
Every switch runs
in your app.
Each switch is a line in a policy that runs inside your app, in Limitr's open-source engine, on data you already have. No flag service to call, no extra hop.
How the engine works →pro: {entitlements: {ai_assistant: {rollout: 25 // percent of Profn enabled(c: Customer, e: str, ctx?: obj) -> bool {c.bucket(e) < self.rollout}}}}
await limitr.allow('ada', 'ai_assistant')