OpenEntitlement
Open source · v0.1 draft

Product entitlements.
A shared contract.

Define what a customer can use—and how much—in a model your application owns. Evaluate plans, overrides, and grants through a consistent API, independent of your billing vendor.

Apache-2.0Self-hostableTypeScript + Python
ONE CUSTOMER. A CLEAR ANSWER.
A
AcmeBusiness plan
Resolved
seats.max250 seats
Plan default100
Negotiated override250
Effective entitlement250
OVERRIDE / Every decision has a reason.
Your terms. Your infrastructure.Delivered through the open OEREP protocol.
Illustrative data from the included demo.
BUILT FOR THE ENTITLEMENT LAYERFeatures & limits✳Negotiated contracts✳Trials & grants✳Self-hosted products

DEFINED BEHAVIOR, ACROSS IMPLEMENTATIONS.

Define the agreement.
Keep the meaning.

Features and limits have explicit types. Resolution has a defined order. Implementations can be tested against the same requirements, so a change of backend does not have to change your product gates.

01Your applicationFeatures declared in code
02One SDK APITypeScript or Python
03OpenEntitlementOEREP · your service · your data

Write the gate.
Let the agreement change.

Check a feature. Read a limit. Inspect why a decision was made. Your application uses the same API whether a customer is on a standard plan or a negotiated contract.

Meet the SDK
your-application.tsTS
const client = createClient({
  catalog,
  provider: new RemoteProvider({
    baseUrl: 'https://entitlements.example.com',
  }),
});

await client.isEnabled('sso', { organizationId });
await client.getLimit('seats.max', { organizationId });

STANDARD PLANS. REAL-WORLD EXCEPTIONS.

Same product.
Different agreements.

A plan is the starting point. Overrides replace a value. Grants add quota. Switch between demo customers to see how the pieces fit.

EXPLORE THE MODEL

Illustrative examples, evaluated locally in this page. Run the quickstart to query the actual service.

Run the live demo →
A

Acme

Business plan
seats.maxNegotiated from 100 to 250
250OVERRIDE
projects.maxProjects the organization may create
50PLAN
api_calls.monthlyNo finite cap
UnlimitedPLAN
sso.enabledBoolean feature gate
EnabledPLAN

LESS COUPLING. MORE CLARITY.

Open contracts.
Inspectable decisions.

OpenEntitlement resolves what an organization may do. Authentication, permissions, release flags, and usage counting stay with the systems that own them.

01 / OPEN CONTRACT

A vendor-neutral contract.

The specification defines the model and evaluation semantics. OEREP carries those decisions over HTTP using generic SDK providers.

Read the protocol →
02 / EXPLAINABLE VALUES

More than yes or no.

Return the effective value, plan value, applied grants, stale overrides, and reason. Make decisions support teams can understand.

Understand resolution →
03 / YOUR INFRASTRUCTURE

Host it on your terms.

Run the service with Postgres, try it in memory, or embed a provider. No billing account is required.

Self-host the service →

START WITH ONE ENTITLEMENT.

Your first decision
is a curl away.

Run the reference service and inspect the value, source, and reason behind a decision.

Get started →
OPEN DEVELOPMENT

The specification, reference service, SDKs, and conformance suite are Apache-2.0 licensed. The draft and its implementation are available for inspection.

Review the source ↗