Installation
Tayra is distributed as a set of NuGet packages. Install only what you need - Tayra.Core is the only required package.
Core Package
Every Tayra project needs the core package:
dotnet add package Tayra.CoreInstall-Package Tayra.CoreKey Store Packages
Tayra.Core includes a built-in InMemoryKeyStore for unit tests and throwaway demos - no additional package is needed to get started.
| Package | Use Case |
|---|---|
| (built into Tayra.Core) | Unit tests and throwaway demos (InMemoryKeyStore - keys lost on restart) |
Tayra.KeyStore.Sqlite | Local development - zero-config, file-based, persistent across restarts |
Tayra.KeyStore.PostgreSql | Local development, or self-managed production (with hardening) |
Tayra.KeyStore.Vault | Production - HashiCorp Vault KV v2 |
Tayra.KeyStore.AzureKeyVault | Production - Azure Key Vault secrets |
Tayra.KeyStore.AwsParameterStore | Production - AWS Systems Manager Parameter Store |
Key Store Security
Tayra.KeyStore.Sqlite is for local development only. Tayra.KeyStore.PostgreSql can be used in production with proper hardening - see the Production Security Guide. For production without self-managed hardening, use a secrets manager (Vault, Azure Key Vault, or AWS KMS).
For production, choose a secrets manager:
dotnet add package Tayra.KeyStore.Vaultdotnet add package Tayra.KeyStore.AzureKeyVaultdotnet add package Tayra.KeyStore.AwsParameterStoreFor local development with persistent keys:
dotnet add package Tayra.KeyStore.Sqlitedotnet add package Tayra.KeyStore.PostgreSqlCompliance Reporting Package
Tayra.Core already provides the technical foundation for GDPR compliance - field-level encryption, crypto-shredding, key rotation, audit trail, and all framework integrations. No additional package is needed to protect personal data.
The optional Tayra.Compliance package adds reporting and tooling on top: PII data maps (Art. 30), data subject access exports (Art. 15/20), breach notification reports (Art. 33/34), and formatted HTML compliance reports. This requires a Compliance edition license.
dotnet add package Tayra.ComplianceSee Licensing for edition details.
Integration Packages
Add framework integrations as needed:
| Package | Framework |
|---|---|
Tayra.EFCore | Entity Framework Core - transparent encrypt/decrypt via interceptors |
Tayra.Marten8 / Tayra.Marten9 | Marten - document and event store encryption (pick by your Marten major) |
Tayra.Wolverine5 / Tayra.Wolverine6 | Wolverine - message bus PII encryption (pick by your Wolverine major) |
Tayra.Serilog | Serilog - automatic PII log scrubbing |
Tayra.Json | System.Text.Json - encrypt/decrypt during JSON serialization |
Tayra.MongoDB | MongoDB - collection-level PII encryption wrapper |
Tayra.AspNetCore | ASP.NET Core - response body PII scrubbing middleware |
Marten and Wolverine: pick the package for your framework major
Marten and Wolverine rework internals across major versions, so Tayra ships a package per major. The framework major is in the package name; the version number is Tayra's own (all Tayra packages share one suite version). Choose by what your app already uses:
| Your framework | Tayra package | Targets |
|---|---|---|
| Marten 8.x | Tayra.Marten8 | net8.0 / net9.0 / net10.0 |
| Marten 9.x | Tayra.Marten9 | net9.0 / net10.0 |
| Wolverine 5.x | Tayra.Wolverine5 | net8.0 / net9.0 / net10.0 |
| Wolverine 6.x | Tayra.Wolverine6 | net9.0 / net10.0 |
Upgrading your framework's major later means switching the Tayra package (for example Tayra.Marten8 -> Tayra.Marten9), which is a deliberate, one-line change alongside the framework upgrade itself.
dotnet add package Tayra.EFCoredotnet add package Tayra.Marten8dotnet add package Tayra.Marten9dotnet add package Tayra.Wolverine5dotnet add package Tayra.Wolverine6dotnet add package Tayra.Serilogdotnet add package Tayra.Jsondotnet add package Tayra.MongoDBdotnet add package Tayra.AspNetCoreTarget Frameworks
Most Tayra packages target .NET 8, 9, and 10:
| Target | Status |
|---|---|
net8.0 | Supported (LTS) |
net9.0 | Supported (STS) |
net10.0 | Supported (LTS) |
Marten and Wolverine on net8.0
The Tayra.Marten9 and Tayra.Wolverine6 packages require .NET 9 or later (Marten 9 and Wolverine 6 dropped net8.0). If you target net8.0, use Tayra.Marten8 / Tayra.Wolverine5, which keep net8.0 support. All other Tayra packages target net8.0/net9.0/net10.0.
Roslyn Analyzers
The Tayra.Core package automatically includes Roslyn analyzers that validate PII attribute usage at compile time. No separate installation is needed.
| Rule | Description |
|---|---|
| TAYRA001 | Entity with [PersonalData] must have a [DataSubjectId] property |
| TAYRA002 | [DataSubjectId] must be on a Guid or string property |
| TAYRA003 | [PersonalData] on non-string requires [SerializedPersonalData] |
| TAYRA004 | [DeepPersonalData] must be on a class type, not a primitive |
Framework Compatibility
All Tayra packages share one suite version. The Marten and Wolverine majors are selected by package name:
| Package | Framework version | EF Core | ASP.NET Core | Serilog | MongoDB Driver |
|---|---|---|---|---|---|
Tayra.Marten8 | Marten 8.x | - | - | - | - |
Tayra.Marten9 | Marten 9.x | - | - | - | - |
Tayra.Wolverine5 | Wolverine 5.x | - | - | - | - |
Tayra.Wolverine6 | Wolverine 6.x | - | - | - | - |
Tayra.EFCore / Tayra.AspNetCore / Tayra.Serilog / Tayra.MongoDB | - | 9.x | 9.x | 4.x | 3.x |
CLI Tool
Tayra includes a .NET global tool for operational tasks:
dotnet tool install --global Tayra.CliSee CLI documentation for available commands.
Package Dependencies
Tayra.Core (standalone, zero framework deps - includes InMemoryKeyStore)
├── Tayra.Compliance → GDPR compliance reporting (PII inventory, access exports, breach reports)
├── Tayra.KeyStore.Sqlite → Microsoft.Data.Sqlite
├── Tayra.KeyStore.PostgreSql → Npgsql
├── Tayra.KeyStore.Vault → VaultSharp
├── Tayra.KeyStore.AzureKeyVault → Azure.Security.KeyVault.Secrets
├── Tayra.KeyStore.AwsParameterStore → AWSSDK.SimpleSystemsManagement
├── Tayra.EFCore → Microsoft.EntityFrameworkCore
├── Tayra.Marten8 / Tayra.Marten9 → Marten 8.x / Marten 9.x
├── Tayra.Wolverine5 / Tayra.Wolverine6 → WolverineFx 5.x / 6.x
├── Tayra.Serilog → Serilog
├── Tayra.Json → System.Text.Json
├── Tayra.MongoDB → MongoDB.Driver
└── Tayra.AspNetCore → Microsoft.AspNetCore (SDK)Central Package Management
If you use multiple Tayra packages, consider Central Package Management to keep all Tayra package versions in sync from a single Directory.Packages.props file.
