Helm.NET 1.0.0-alpha.6

This is a prerelease version of Helm.NET.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Helm.NET --version 1.0.0-alpha.6
                    
NuGet\Install-Package Helm.NET -Version 1.0.0-alpha.6
                    
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="Helm.NET" Version="1.0.0-alpha.6" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Helm.NET" Version="1.0.0-alpha.6" />
                    
Directory.Packages.props
<PackageReference Include="Helm.NET" />
                    
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 Helm.NET --version 1.0.0-alpha.6
                    
#r "nuget: Helm.NET, 1.0.0-alpha.6"
                    
#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 Helm.NET@1.0.0-alpha.6
                    
#: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=Helm.NET&version=1.0.0-alpha.6&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Helm.NET&version=1.0.0-alpha.6&prerelease
                    
Install as a Cake Tool

Helm.NET

Nuget Nuget codecov

What is this?

Helm.NET provides a .NET client backed by Helm's Go action library. The managed API calls a native library through a small C ABI shim and does not launch the Helm command-line executable.

Supported platforms

Helm.NET includes native libraries for Windows, Linux, and macOS on both x64 and ARM64:

Operating system x64 ARM64
Windows win-x64 win-arm64
Linux linux-x64 linux-arm64
macOS osx-x64 osx-arm64

Install a chart

using Helm.NET;

var helm = new HelmClient(new HelmClientOptions { Namespace = "apps" });

helm.AddRepository("bitnami", "https://charts.bitnami.com/bitnami");

helm.UpdateRepositories();

var release = helm.Install("my-release", "bitnami/nginx", createNamespace: true, wait: true);

// Search indexes return resolvable references and one result per version.
var charts = helm.SearchCharts("cilium");
// ListCharts reads the cached indexes without requiring a search term or refreshing them.
var bitnamiCharts = helm.ListCharts("bitnami");
var rendered = helm.Template("preview", "cilium/cilium", version: "1.20.3");

// Render the chart and values from a stored release revision without resolving a repository reference.
var installedChart = helm.TemplateRelease("my-release");

// Retrieve the manifest saved by Helm for the deployed revision.
var deployedManifest = helm.GetManifest("my-release");

List releases

IReadOnlyList<HelmRelease> releases = helm.ListReleases();
foreach (var release in releases)
    Console.WriteLine($"{release.Name}: {release.Status} ({release.Chart})");

The action API supports ListReleases, ListRepositories, ListCharts, SearchCharts, Template, TemplateRelease, GetManifest, Install, Upgrade, Uninstall, Status, History, Rollback, GetValues, and chart repository operations. HelmRelease.ChartName and ChartVersion expose the chart metadata separately from the display string in Chart. Configure kubeconfig, context, namespace, repository paths, registry config, and the release storage driver with HelmClientOptions.

List repository charts

ListCharts() returns one result per chart version across configured Helm chart repositories. Pass an exact repository name to list a single repository; references remain repository-qualified, even when different repositories contain a chart with the same name:

var repositories = helm.ListRepositories();
var charts = helm.ListCharts(repositoryName: "bitnami");
var nginxVersions = charts
    .Where(chart => chart.Reference == "bitnami/nginx")
    .Select(chart => chart.Version);

Chart catalogs are read only from the indexes already present in Helm's repository cache. ListCharts performs no network requests and does not update indexes; call UpdateRepositories() when you want to refresh them. With no configured repositories, an unfiltered listing is empty. An unknown repository name, or a configured repository with a missing or malformed cached index, throws HelmActionException identifying the repository. This API enumerates indexed chart repositories only; it does not enumerate OCI registries. Use SearchCharts(searchTerm) when substring search across configured repository indexes is desired.

Select a chart version

Template, Install, and Upgrade accept an optional version using the same Helm chart-resolution options:

var selected = helm.SearchCharts("nginx").First();
var preview = helm.Template("my-release", selected.Reference, version: selected.Version);
var installed = helm.Install("my-release", selected.Reference, createNamespace: true, version: selected.Version);
var upgraded = helm.Upgrade("my-release", selected.Reference, installIfMissing: true, version: selected.Version);

The version is also honored when Upgrade installs a missing release. Omitting it (or passing null) preserves Helm's default resolution, which may select the latest version. Invalid or unavailable repository/OCI versions throw HelmActionException without falling back to another version. Values files, inline values, namespace creation, wait, and timeout options remain independent of chart version selection.

Chart references follow Helm semantics, including repository references and OCI references such as oci://registry.example.com/charts/nginx. OCI credentials use HelmClientOptions.RegistryConfig. Helm does not use version to select or validate the version of an already resolved local chart directory/archive or a direct chart archive URL.

HelmRelease.ChartVersion reports chart metadata; HelmRelease.Revision is the separate release history revision. The original Install and Upgrade signatures remain as forwarding overloads for existing compiled callers; new calls can append the optional version argument.

Stored release rendering limitation

TemplateRelease renders only chart contents available in the stored release; it does not download charts or dependencies. Helm's release JSON retains dependency metadata but omits dependency chart objects and their templates. Consequently, a stored chart that includes a helper defined by a subchart can fail with no template ... associated with template "gotpl" (as observed with Authentik's remote-cluster helper). Those dependency contents cannot be reconstructed from metadata alone.

Use GetManifest to retrieve the exact deployed manifest without re-rendering, or Template with the original chart reference, explicit chart version, and appropriate values to render a chart with its packaged dependencies. TemplateRelease surfaces rendering failures rather than silently substituting a saved manifest or fetching potentially different dependencies.

The Go shim source and pinned Helm dependency are in native/helm-shim. Native libraries are packaged under runtimes/<rid>/native.

Test organization and scenario coverage

tests/Helm.NET.Tests contains managed unit tests for request serialization, response mapping, and interop error handling. Reusable end-to-end scenarios live in tests/Helm.NET.Tests.E2E.Shared; both the managed Kind host (tests/Helm.NET.Tests.E2E) and the xUnit v3 NativeAOT host (tests/Helm.NET.Tests.E2E.AOT) run those same public-API scenarios.

The shared chart-version fixture serves three real packaged chart versions with a library subchart; no external repository is needed. Scenarios cover repository search and cached chart listing, explicit/default/constrained template versions, archive and direct-URL semantics, values merging, invalid/unavailable versions, selected/default/constrained Install and Upgrade versions, upgrade-to-older-version, install-if-missing, compatibility overloads, returned and stored chart metadata versus release revisions, preview/deployment equality, flags, release operations, and failed upgrades leaving the installed revision unchanged. They also verify stored subchart helper behavior and historical manifests.

The managed E2E workflow and NativeAOT workflow run the shared cluster scenarios against Kind. NativeAOT also runs the no-cluster scenarios across both target frameworks and all supported runtime identifiers. Native-only tests retain Helm internals and the local OCI protocol fixture, which requires a custom plain-HTTP registry client unavailable through the managed API.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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.  net11.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.
  • net11.0

    • No dependencies.

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.0-alpha.10 52 10/22/2026
1.0.0-alpha.9 49 10/21/2026
1.0.0-alpha.8 35 10/21/2026
1.0.0-alpha.7 34 10/21/2026
1.0.0-alpha.6 38 10/21/2026
1.0.0-alpha.5 39 10/21/2026
1.0.0-alpha.4 67 10/20/2026
1.0.0-alpha.3 47 10/20/2026
1.0.0-alpha.2 42 10/20/2026
1.0.0-alpha.1 44 10/20/2026