Skip to content

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:

shell
dotnet add package Tayra.Core
powershell
Install-Package Tayra.Core

Key Store Packages

Tayra.Core includes a built-in InMemoryKeyStore for unit tests and throwaway demos - no additional package is needed to get started.

PackageUse Case
(built into Tayra.Core)Unit tests and throwaway demos (InMemoryKeyStore - keys lost on restart)
Tayra.KeyStore.SqliteLocal development - zero-config, file-based, persistent across restarts
Tayra.KeyStore.PostgreSqlLocal development, or self-managed production (with hardening)
Tayra.KeyStore.VaultProduction - HashiCorp Vault KV v2
Tayra.KeyStore.AzureKeyVaultProduction - Azure Key Vault secrets
Tayra.KeyStore.AwsParameterStoreProduction - 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:

shell
dotnet add package Tayra.KeyStore.Vault
shell
dotnet add package Tayra.KeyStore.AzureKeyVault
shell
dotnet add package Tayra.KeyStore.AwsParameterStore

For local development with persistent keys:

shell
dotnet add package Tayra.KeyStore.Sqlite
shell
dotnet add package Tayra.KeyStore.PostgreSql

Compliance 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.

shell
dotnet add package Tayra.Compliance

See Licensing for edition details.

Integration Packages

Add framework integrations as needed:

PackageFramework
Tayra.EFCoreEntity Framework Core - transparent encrypt/decrypt via interceptors
Tayra.Marten8 / Tayra.Marten9Marten - document and event store encryption (pick by your Marten major)
Tayra.Wolverine5 / Tayra.Wolverine6Wolverine - message bus PII encryption (pick by your Wolverine major)
Tayra.SerilogSerilog - automatic PII log scrubbing
Tayra.JsonSystem.Text.Json - encrypt/decrypt during JSON serialization
Tayra.MongoDBMongoDB - collection-level PII encryption wrapper
Tayra.AspNetCoreASP.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 frameworkTayra packageTargets
Marten 8.xTayra.Marten8net8.0 / net9.0 / net10.0
Marten 9.xTayra.Marten9net9.0 / net10.0
Wolverine 5.xTayra.Wolverine5net8.0 / net9.0 / net10.0
Wolverine 6.xTayra.Wolverine6net9.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.

shell
dotnet add package Tayra.EFCore
shell
dotnet add package Tayra.Marten8
shell
dotnet add package Tayra.Marten9
shell
dotnet add package Tayra.Wolverine5
shell
dotnet add package Tayra.Wolverine6
shell
dotnet add package Tayra.Serilog
shell
dotnet add package Tayra.Json
shell
dotnet add package Tayra.MongoDB
shell
dotnet add package Tayra.AspNetCore

Target Frameworks

Most Tayra packages target .NET 8, 9, and 10:

TargetStatus
net8.0Supported (LTS)
net9.0Supported (STS)
net10.0Supported (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.

RuleDescription
TAYRA001Entity 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:

PackageFramework versionEF CoreASP.NET CoreSerilogMongoDB Driver
Tayra.Marten8Marten 8.x----
Tayra.Marten9Marten 9.x----
Tayra.Wolverine5Wolverine 5.x----
Tayra.Wolverine6Wolverine 6.x----
Tayra.EFCore / Tayra.AspNetCore / Tayra.Serilog / Tayra.MongoDB-9.x9.x4.x3.x

CLI Tool

Tayra includes a .NET global tool for operational tasks:

shell
dotnet tool install --global Tayra.Cli

See 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.