Agentics.Extensions.Aspire.Registry 0.2.6

dotnet add package Agentics.Extensions.Aspire.Registry --version 0.2.6
                    
NuGet\Install-Package Agentics.Extensions.Aspire.Registry -Version 0.2.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="Agentics.Extensions.Aspire.Registry" Version="0.2.6" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Agentics.Extensions.Aspire.Registry" Version="0.2.6" />
                    
Directory.Packages.props
<PackageReference Include="Agentics.Extensions.Aspire.Registry" />
                    
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 Agentics.Extensions.Aspire.Registry --version 0.2.6
                    
#r "nuget: Agentics.Extensions.Aspire.Registry, 0.2.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 Agentics.Extensions.Aspire.Registry@0.2.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=Agentics.Extensions.Aspire.Registry&version=0.2.6
                    
Install as a Cake Addin
#tool nuget:?package=Agentics.Extensions.Aspire.Registry&version=0.2.6
                    
Install as a Cake Tool

Agentics.Extensions.Aspire.Registry

UseAgenticsRegistry() — check, before startup, whether this machine can actually pull the private container images the AppHost uses, and put the sign-in steps at the top of the dashboard when it cannot.

The failure it removes

A resource whose image lives on registry.agentics.dk fails several seconds into startup with:

error from registry: unauthorized

That line lands in one resource's console log, where it reads like the resource is broken. It isn't — the machine is not signed in, and every other resource from that registry is about to fail the same way.

Usage

var builder = DistributedApplication.CreateBuilder(args);

builder.UseAgenticsRegistry();

That is the whole integration. It walks the app model for container images on registry.agentics.dk, and if there are any, probes one of them in the background. Nothing waits on it.

When the probe comes back unauthorized, a warning appears in the dashboard's message bar naming the resources that will fail, with a Show me how button that opens the sign-in steps.

Add a per-resource retry button so a failed resource can recover without restarting the AppHost:

var doorman = builder.AddDoorman("doorman")
                     .WithRegistryAccessCheck();

Pressing Check registry access re-probes and starts the resource when the answer has changed.

Options

builder.UseAgenticsRegistry(options =>
{
    options.Registry = "registry.agentics.dk";   // images from anywhere else are ignored
    options.AdditionalImages.Add("registry.agentics.dk/agentics/pks-agent-git:latest");
    options.Timeout = TimeSpan.FromSeconds(20);
    options.ContainerRuntime = "docker";
    options.SignInCommand = "agent-registry login";
    options.Notify = true;                        // false: log only, no dashboard banner
});

AdditionalImages is for images the AppHost pulls without declaring them as resources — a build script's base image, for instance.

How the check works, and what it will not claim

The probe is docker manifest inspect <image>. That exercises docker's real credential chain — config.json, credHelpers, the credential store — and stops at the manifest, so it costs one request and downloads no layers. Reading a config file instead would answer a different and less useful question: what decides whether the pull works is docker's own resolution order, not what a file looks like.

Only unauthorized raises the banner. A missing daemon, a dropped network, a timeout, or an image that simply does not exist are all reported as unknown and stay in the AppHost log at debug level. An AppHost that tells someone to sign in because their wifi went down is worse than one that says nothing.

Signing in

Docker has no OAuth for third-party registries — docker login takes a username and a password and nothing else. The browser flow therefore lives in the registry's own CLI, which then answers Docker's credential-helper protocol on the user's behalf:

agent-registry login

See pks-agent-registry — ADR 0004 for the design.

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. 
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
0.2.6 93 9/3/2026