Licensing
A valid license key is required to use Tayra in all environments. Request a free trial key at tayra.dev or purchase a production license - see pricing for details.
Setting Your License Key
Set the LicenseKey property in TayraOptions:
services.AddTayra(opts =>
{
opts.LicenseKey = Environment.GetEnvironmentVariable("TAYRA_LICENSE_KEY");
});Without a valid license key, resolving ITayra from the DI container will throw a TayraLicenseException.
Environment Variables
Store your license key in an environment variable or secrets manager rather than hard-coding it. This prevents accidental exposure in source control.
Trial Licenses
Trial licenses are free, fully-functional signed keys with a time limit (typically 15 days). Request one at tayra.dev or by emailing hello@tayra.dev. Trial keys work identically to production keys - there are no artificial limitations, watermarks, or feature gates.
Production Licenses
Production keys give you perpetual fallback use: every Tayra release published on or before your key's MaintenanceUntil date keeps working forever, even after maintenance lapses - regardless of version, including across major versions. Releases published after MaintenanceUntil are not activated by the lapsed key - to install those you renew maintenance and receive an updated key with a later MaintenanceUntil. Maintenance is a single time-based window (12 months from purchase, extended by each renewal). Activation is governed solely by comparing a release's publish date to MaintenanceUntil, with no reference to the current clock - so a deployment your key activates never stops working. See the License for the binding text.
Validation
Tayra validates the license key entirely offline - no network calls, no phone-home, no telemetry. Your application can run in air-gapped environments, private networks, or anywhere without internet access. Validation happens once at startup, not on every encrypt/decrypt call.
Editions
Tayra is available in two editions. Both editions fully support GDPR-compliant data protection - the Compliance edition adds reporting and tooling, not the protection itself.
| Edition | Package | What You Get |
|---|---|---|
| Essentials | Tayra.Core | Field-level encryption, crypto-shredding, key rotation, blind indexes, observability-grade audit logging, all framework integrations, CLI tool - everything needed to protect personal data and comply with GDPR |
| Compliance | Tayra.Core + Tayra.Compliance | Everything in Essentials, plus the regulator-facing artifact suite: PII data maps (Art. 30), data subject access exports (Art. 15/20), breach notification reports (Art. 33/34), formatted HTML compliance reports, ECDSA-signed reports, scheduled report runs with pluggable archive, persistent hash-chained audit trail, and the curated Grafana dashboard |
One license = one legal entity
A purchased Tayra license covers a single named legal entity (the "Licensee" identified on the license key or purchase record). It does not extend to parent companies, subsidiaries, sister companies, joint ventures, or other affiliates - even when they share common ownership or control. Each separate legal entity that uses Tayra in production must obtain its own license. See the License for the binding text.
TIP
The Essentials edition already provides the technical foundation for GDPR compliance. The Compliance edition automates the reporting that GDPR requires - the kind of work that would otherwise take weeks of custom development.
The Compliance reporting features are distributed in a separate Tayra.Compliance NuGet package. Install it alongside Tayra.Core:
dotnet add package Tayra.ComplianceAttempting to resolve a Compliance service (e.g., ITayraCompliance) with an Essentials license will throw a TayraLicenseException.
Pricing & Tiers
For license tiers, pricing, and eligibility details, see tayra.dev/#pricing.
To obtain a license key, contact hello@tayra.dev.
Validating Your License
You can check whether a license is valid by resolving the LicenseChecker from the DI container:
var checker = provider.GetRequiredService<LicenseChecker>();
if (!checker.IsLicensed)
{
// handle missing / invalid / expired license
}See Also
- Dependency Injection - Service registration
- Options - All configuration options
