Entitlements for AI products & agents

Entitlements without the engineering debt

Define what each plan unlocks for your app, your AI features, or your agents. Kelviq enforces access instantly, without touching your codebase every time a plan changes.

Dashboard Products Screenshot

Define it once. Enforce it everywhere

One dashboard. One SDK call. No webhooks, no mirroring, no desyncing.

[FEATURE ACCESS]

Check access in one line

  • Toggle access per customer. No code.
  • Trials, overrides, and promotions built in.
  • No deploy required.
1
const { granted } = await kelviq.hasAccess(
2
  'advanced-analytics'
3
);
4
 
5
if (!granted) {
6
  return res.status(403).json({
7
    error: "Upgrade to access this feature"
8
  });
9
}
[USAGE LIMITS]

Limits that actually hold

  • Hard limit: access stops at the quota.
  • Soft limit: warn, upsell, grace period.
  • Reset on schedule or on demand.
  • Override any customer from the dashboard.
1
const { granted, usage, limit } = await kelviq.hasAccess(
2
  'ai-tokens',
3
  { consume: 1000 } // tokens to consume
4
);
5
 
6
if (!granted) {
7
  return res.status(429).json({
8
    error: "Monthly AI usage limit reached",
9
    usage,
10
    limit
11
  });
12
}
[PLAN CONFIGURATION]

One product. Different access by plan

  • Model access by plan.
  • Retention windows and export limits.
  • Run limits for premium workflows.
  • Advanced features only on paid tiers.
  • No feature forks in your codebase.
1
const { value: model } = await kelviq.getConfig('model-tier');
2
 
3
const response = await llm.complete({ model, prompt });
[AGENT CONTROLS]

Control agent access before spending

  • Token budgets by plan with hard stops.
  • Gate tools by tier: browse, email, code exec.
  • Lock background runs and scheduled agents behind higher plans.
  • Concurrency limits per workspace or customer.
  • Require human approval for sensitive actions.
1
const tool = await kelviq.hasAccess('agent-tool:web-browse');
2
if (!tool.granted) {
3
  throw new Error('Upgrade to enable web browsing');
4
}
5
 
6
const tokens = await kelviq.hasAccess('ai-tokens', {
7
  consume: tokensUsed
8
});
9
if (!tokens.granted) {
10
  throw new Error('Token limit reached');
11
}
COMPARISON

Entitlements vs feature flags vs Stripe: why you need a dedicated layer

Kelviq knows both: what the customer paid for and what that means for their access. One layer. No mirroring. No desyncing.

Feature flags

Great for rollouts. Weak for monetization. No billing context, usage limits, or permissions. Plan logic stays in code.

Stripe

Great for payments. Weak for entitlements. It tracks payments, not feature access, usage caps, or agent permissions.

Hardcoded plan checks

Fast to launch. Hard to maintain. Every new tier, add-on, or exception expands code paths, QA load, and support risk.

Mor Details Image
Inherit features across plans
Grandfather legacy customers
Metered, configuration features
Per-customer overrides
Token & credit tracking
Model routing rules
Multiple subscriptions per customer
Tool-level gating for agents
Usage reset, Real-time sync

IDEAL USERS

Who should choose Kelviq

Teams that want Merchant of Record, pricing control, checkout, entitlements, AI billing, and global monetization in one place.

AI agents & Infra companies

Token budgets, model routing by tier, per-agent run limits, tool-level gating. One SDK call before every LLM call or agent action. Check agent billing

SaaS teams

Seat limits, feature tiers, data retention windows, export caps. Update a plan from the dashboard. GTM owns it, engineering doesn't have to.

Indie hackers

Ship a free tier and a paid tier on day one. No billing logic to build. Kelviq handles what each plan does so you can focus on what the product does.

FAQ

Common questions

Rules that define what a customer can do based on their plan. Feature gates, usage limits, and configuration values, enforced with one SDK call instead of hardcoded if/else checks.

Feature flags control rollouts. Entitlements control monetization. Flags have no billing awareness. Entitlements update access the moment a plan changes.

Stripe knows the plan name, not what it unlocks. You end up mirroring state with webhooks and writing custom gating logic that desyncs. Kelviq sits between billing and your app so access is always current.

Boolean: access or no access. Metered: a quota (API calls, tokens, seats) tracked and enforced in real-time. Configuration: same feature, different behavior by plan.

Authorization = who in the org can do what (roles). Entitlements = what the org has access to based on what they paid for. Both layers work together.

Agents burn tokens, call tools, and take actions. Entitlements let you set per-plan token budgets, gate which tools an agent can invoke, route to different models by tier, and cap concurrent runs. All enforced before the cost hits.

Yes. Define a metered entitlement, set a quota per plan, and Kelviq enforces it in real-time. Hard-stop or soft-limit with an upsell prompt. Reset on a schedule or let customers buy add-on packs.

Yes. Use a configuration entitlement. Change the mapping from the dashboard, not the inference code.

Yes. Define a boolean entitlement per tool (web browse, email send, code exec). Check access before the agent fires the tool. Upgrade prompts built in.

Combine a metered token entitlement with a hard limit. Kelviq stops the agent the moment the quota is hit. No runaway spend, no cron jobs.

Start your
software monetization.

Global tax, billing, metering, and entitlements. Ship your revenue stack in one deploy.