Regira packages use a split licensing model designed to stay out of your way: most packages are Apache-2.0, and the handful that fund the project carry a commercial license with a built-in free tier.
| Packages | License | Key needed? |
|---|---|---|
| Everything except the seven below | Apache License 2.0 | Never — these packages contain no license validation and no runtime limits |
Regira.Licensing, Regira.Entities.EFcore, Regira.Entities.DependencyInjection, Regira.Entities.Web, Regira.Entities.Mapping.Mapster, Regira.Entities.Mapping.AutoMapper, Regira.Office.Clients |
Regira Commercial License | Only beyond the free tier |
The front-end library @regira/modules (npm) is also Apache-2.0. The hosted services (services.regira.com) and the MCP server follow the commercial model with rate-limited free tiers.
The free tier applies automatically — no payment, no registration, no key:
| Product | Free-tier limit |
|---|---|
regira.entities |
5 simple + 2 complex entity registrations per application |
regira.services |
5 requests per 60 seconds |
regira.mcp |
30 requests per 60 seconds |
A registration is simple when it is made without custom sort or include type parameters (For<Product>(), For<Product, int, ProductSearchObject>(...)), and complex when it specifies them (For<Order, int, OrderSearchObject, OrderSortBy, OrderIncludes>(...)).
For any given released version, the free tier as shipped in that version remains available without time limit.
A license key removes the free-tier limits. Keys are validated fully offline with an RSA-signed token — no phone-home, no telemetry (the validation code is public: Regira.Licensing).
One key can cover multiple products; when several keys are registered, the best license per product wins (paid always beats free).
Register once, before module setup:
services.UseRegira(configuration); // reads Regira:LicenseKeys from configuration
// or
services.UseRegira(licenseKey); // pass keys explicitly
{
"Regira": {
"LicenseKeys": [ "<your-license-key>" ]
}
}
LicenseException naming the expiry date. A short grace period softens the cut-over; its length is not part of the license terms and may change between versions, so do not plan on it. UseRegira reminds you on the console from two weeks before the date, so renew at regira.com/licensing before it passes.get_license_status on the MCP server, or GET /license/status on the hosted Office API (ILicenseStatusClient in Regira.Office.Clients). Both answer for any key — missing, expired or valid — with the customer, expiry date, whether the key is accepted and a one-line reason.Questions: b2b@regira.com or the contact form.