Kogoshvili.Temporal.Cloud 1.0.3

dotnet add package Kogoshvili.Temporal.Cloud --version 1.0.3
                    
NuGet\Install-Package Kogoshvili.Temporal.Cloud -Version 1.0.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Kogoshvili.Temporal.Cloud" Version="1.0.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Kogoshvili.Temporal.Cloud" Version="1.0.3" />
                    
Directory.Packages.props
<PackageReference Include="Kogoshvili.Temporal.Cloud" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Kogoshvili.Temporal.Cloud --version 1.0.3
                    
#r "nuget: Kogoshvili.Temporal.Cloud, 1.0.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Kogoshvili.Temporal.Cloud@1.0.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Kogoshvili.Temporal.Cloud&version=1.0.3
                    
Install as a Cake Addin
#tool nuget:?package=Kogoshvili.Temporal.Cloud&version=1.0.3
                    
Install as a Cake Tool

Kogoshvili.Temporal.Cloud

Azure and AWS integrations for the Temporal .NET SDK: credential resolution, Blob/S3 claim-check stores, Key Vault/Secrets Manager TLS certificate sources, and secret resolvers. Pair with Kogoshvili.Temporal.Codec to offload large workflow payloads to cloud storage or fetch codec keys from a vault.

Minimal setup

The smallest integration is a single claim-check store or a credential resolver. An Azure Blob store needs only a connection string and a container name (created if absent):

using Kogoshvili.Temporal.Cloud;

var store = new AzureBlobClaimCheckStore(
    "<connection-string>", "temporal-claim-check");

var key = await store.StoreAsync(new byte[] { 1, 2, 3 });
var bytes = await store.LoadAsync(key);

The S3 equivalent takes AWS credentials, a region endpoint, and a bucket name:

using Amazon;
using Kogoshvili.Temporal.Cloud;

var store = new S3ClaimCheckStore(
    AwsCredentialResolver.Resolve(),
    RegionEndpoint.USEast1,
    "temporal-claim-check");

Credential resolvers are also usable on their own: AzureCredentialResolver.Resolve() returns a TokenCredential from the default Azure chain (managed/workload identity, env vars, CLI, interactive login), and AwsCredentialResolver.Resolve() returns AWSCredentials from the AWS default fallback chain.

Configuration

This library is code-only: it has no configuration of its own. Instead it plugs into the hosting starter (Kogoshvili.Temporal.Hosting), which selects cloud services by name from the standard Temporal: section. Register a cloud TLS certificate source, then select it with Temporal:Tls:Source:

builder.Services.AddAzureKeyVaultCertificateSource();
// or: builder.Services.AddAwsSecretsManagerCertificateSource();
{
  "Temporal": {
    "Tls": {
      "Source": "azureKeyVault",
      "AzureKeyVault": {
        "VaultUri": "https://my-vault.vault.azure.net",
        "CertificateName": "temporal-client",
        "Password": null
      }
    }
  }
}

For claim-check offload, register a store factory and select it with Temporal:DataConverter:ClaimCheck:Store (azureBlob or s3):

builder.Services.AddAzureBlobClaimCheckStore();
// or: builder.Services.AddS3ClaimCheckStore();
{
  "Temporal": {
    "DataConverter": {
      "ClaimCheck": {
        "Enabled": true,
        "Store": "azureBlob",
        "AccountUri": "https://myaccount.blob.core.windows.net",
        "ContainerName": "temporal-claim-check"
      }
    }
  }
}

An Azure Blob store authenticates via managed identity when AccountUri is set, or via ConnectionString otherwise. For S3, set Region, BucketName, and optionally AccessKey/SecretKey/SessionToken or RoleArn.

Full configuration

The complete set of cloud integrations covers Azure and AWS symmetric features:

Claim-check stores. AzureBlobClaimCheckStore and S3ClaimCheckStore are IClaimCheckStore implementations for offloading large payloads. They accept pre-configured clients for flexibility:

using Azure.Storage.Blobs;
using Kogoshvili.Temporal.Cloud;

var container = new BlobContainerClient("<connection-string>", "temporal-claim-check");
var blobStore = new AzureBlobClaimCheckStore(container);

var s3Store = new S3ClaimCheckStore(
    new Amazon.S3.AmazonS3Client(
        AwsCredentialResolver.Resolve(),
        Amazon.RegionEndpoint.USEast1),
    "temporal-claim-check");

The managed-identity Blob constructor takes an account URI and a credential:

var store = new AzureBlobClaimCheckStore(
    new Uri("https://myaccount.blob.core.windows.net"),
    AzureCredentialResolver.Resolve(),
    "temporal-claim-check");

Secret resolvers. AzureKeyVaultSecretResolver and AwsSecretsManagerSecretResolver are ISecretResolver implementations for fetching arbitrary secrets (for example a codec key) from a vault:

using Kogoshvili.Temporal.Cloud;
using Kogoshvili.Temporal.Codec;

var resolver = new AzureKeyVaultSecretResolver(
    "https://my-vault.vault.azure.net",
    AzureCredentialResolver.Resolve());

var key = Convert.FromBase64String(await resolver.ResolveAsync("my-encryption-key"));
var resolver = new AwsSecretsManagerSecretResolver(
    AwsCredentialResolver.Resolve(),
    "us-east-1");

var key = Convert.FromBase64String(await resolver.ResolveAsync("my-encryption-key"));

Both resolvers also accept a pre-configured SDK client (SecretClient / an IAmazonSecretsManager).

TLS certificate sources. AzureKeyVaultCertificateSource and AwsSecretsManagerCertificateSource implement ITlsCertificateSource for Temporal Cloud mTLS. The Azure source fetches a PFX secret and converts it to PEM; PfxToPem is public for direct use:

using Kogoshvili.Temporal.Cloud;

var material = AzureKeyVaultCertificateSource.PfxToPem(
    pfxBytes, password: "pfx-password");

The AWS source reads the client certificate and private key as PEM (or base64 PEM) secrets, optionally including a server root CA:

{
  "Temporal": {
    "Tls": {
      "Source": "awsSecretsManager",
      "AwsSecretsManager": {
        "Region": "us-east-1",
        "CertificateSecretId": "temporal-client-cert",
        "PrivateKeySecretId": "temporal-client-key",
        "ServerRootCACertSecretId": null
      }
    }
  }
}

Dependency-injection wiring. Each feature exposes Add* extensions that register against the default credential chain; every one accepts an explicit credential for custom or test setups:

builder.Services.AddAzureKeyVaultSecretResolver(
    "https://my-vault.vault.azure.net", credential);
builder.Services.AddAwsSecretsManagerSecretResolver("us-east-1", credentials);
builder.Services.AddAzureKeyVaultCertificateSource(credential);
builder.Services.AddAwsSecretsManagerCertificateSource(credentials);
builder.Services.AddAzureBlobClaimCheckStore();
builder.Services.AddS3ClaimCheckStore();

The hosting starter discovers these by name: azureKeyVault / awsSecretsManager for TLS and secret resolution, and azureBlob / s3 for claim-check stores.

The cloud stores live in a separate package so the lightweight Kogoshvili.Temporal.Codec and Kogoshvili.Temporal.Hosting packages don't pull in the Azure/AWS SDKs.

Not affiliated with or endorsed by Temporal Technologies.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.3 106 9/4/2026
1.0.2 105 9/3/2026
1.0.1 103 9/1/2026
1.0.0 93 8/31/2026
1.0.0-beta.10 77 8/28/2026
1.0.0-beta.9 65 8/28/2026

Azure/AWS integrations for Temporal: credential resolution, Blob/S3 claim-check stores, and Key Vault/Secrets Manager TLS certificate sources.