Architecture guide

An open-source entitlement engine that runs with your application.

Subscrio runs in your application and stores entitlement data in your database. Feature checks do not call an outside Subscrio service.

How checks run

Your app checks entitlements without calling another service.

A hosted entitlement service adds an API call between your code and the access result. Subscrio resolves features directly from your application database.

If another vendor goes down, Subscrio checks still work. Your application and database still need to be available.

A fair comparison

Embedded and hosted systems give your team different work.

The choice is whether you want to run entitlement checks yourself or depend on a hosted service. Open source lets you inspect and change the engine, but your team still operates it.

DimensionSubscrio embedded engineHosted entitlement platform
How checks runRuns in the application against its database or cache.Often uses an external API, a synchronized SDK cache, or both.
Where data livesYour PostgreSQL database, or SQL Server with .NET.The vendor's service, sometimes with a local replica or cache.
What can stop a checkYour application, database, deployment, or cache.Your application, the vendor's service, or the network between them, unless a local cache handles the outage.
OperationsYou own versions, migrations, backups, and observability.The provider owns its service; you own integration and fallback behavior.
Commercial scopeFocused on features, values, limits, assignments, and overrides.May include pricing, metering, experimentation, and revenue workflows.
Cost modelMIT-licensed engine. Optional admin is a one-time purchase.Usually a recurring service fee based on the vendor's pricing model.

What your team runs

Your team maintains the database, migrations, and library version.

Because the engine runs in your application, your team installs the schema, applies migrations, handles caching, monitors query performance, and tests what happens when a dependency fails.

  1. Database healthEntitlement checks depend on the database or cache your application uses.
  2. Releases and migrationsYour deployment process updates the library and applies schema changes.
  3. Billing and contract updatesYour code turns billing or contract events into subscription assignments, dates, and overrides.
TypeScriptnpm package with PostgreSQL
.NETNuGet package with PostgreSQL or SQL Server
LicenseMIT open-source core
AdminOptional self-hosted workflow

Pros and tradeoffs

Why teams keep entitlement checks out of another vendor's service.

A hosted vendor can be convenient, but it also adds another service, network dependency, and pricing model to customer access. An embedded engine removes that dependency. In return, your team maintains the database, migrations, and integration code.

Advantages

  • Feature checks still work when an entitlement vendor or the connection to it is unavailable.
  • Entitlement data stays in the database, backups, and audit tools your team already uses.
  • Changing billing providers does not require moving product-access rules to another entitlement platform.
  • Your developers can inspect the engine and the exact data behind an access result.
  • The MIT-licensed engine has no recurring entitlement-platform fee.

What your team maintains

  • Keep the database or cache available and monitor entitlement-query performance.
  • Apply library updates and schema migrations through your deployment process.
  • Map billing and contract events to subscriptions, dates, and customer overrides.
  • Test retries, missed events, caching, and failure behavior.
  • Build management screens or add the self-hosted Web Admin.

See the feature entitlement model, then choose the .NET or TypeScript quickstart.

Common questions

Questions about embedded entitlement engines

What is an embedded entitlement engine?

An embedded entitlement engine runs as a library with your application and resolves product access from data in your database. It does not require a separate hosted entitlement service.

Does Subscrio call an external entitlement service?

No. Entitlement resolution does not call a Subscrio-hosted service. Your application may still use its own database or cache according to its architecture.

What happens if a billing provider or outside service is unavailable?

Existing entitlement data remains available from your database. New billing changes wait until event delivery or reconciliation resumes, according to the failure policy your application defines.

Who operates the database and migrations?

Your team does. TypeScript uses PostgreSQL. The .NET package supports PostgreSQL and SQL Server. Subscrio provides schema installation and migrations, but the database stays with the infrastructure your application already uses.

Is an embedded engine always better than a hosted platform?

No. A hosted platform may fit better if you want someone else to run the service or need billing, metering, and pricing tools together.

Can Subscrio work with Stripe or another billing provider?

Yes. Billing can stay in Stripe, Paddle, an internal commerce system, or another provider. Your integration maps verified commercial events to Subscrio assignments and subscriptions.

Next step

Inspect the engine before adding it to your application.

Review the MIT-licensed source, then follow the framework setup for your application and database.

View Subscrio on GitHub

Screenshot preview