Bardie.Logos.Channel 0.1.0

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

Bardie.Logos.Channel

Shared mTLS / gRPC channel helpers for Bardie module hosts and module participants (Bes, Magpie, …).

Package id: Bardie.Logos.Channel · Version: 0.1.0 · TFM: net10.0

Depends on Bardie.Logos.Contracts for RegisterRequest / ModuleRegistry stubs.

What it owns

Capability Notes
CA + server cert load/generate + persist Host: BARDIE_GRPC_TLS_DATA_PATH / TlsDataPath
Issue module client certs Host bootstrap mode auto
Validate inbound client cert → slug Heartbeat + privileged RPCs
Outbound GrpcChannel helpers Host harnesses dial modules
Kestrel bind helper Host HTTPS :5000 + allow client certificates
Bootstrap interceptor Register may omit client cert; other RPCs require it
ModuleManifest Static identity loader + BuildRegisterRequest
Participant APIs Persist Register PEMs, mTLS Heartbeat dial, work-port Kestrel, ModuleRegistrationHostedService

Consume

Context How
Multi-root / sibling kithara/libs ProjectReference to this project (see Bes Directory.Build.props)
Standalone CI / published consumers PackageReference to Bardie.Logos.Channel 0.1.0

Pack: dotnet pack libs/Bardie.Logos.Channel/Bardie.Logos.Channel.csproj -c Release (with Contracts).

Host DI

services.AddModuleChannel(options =>
{
    options.UseMtls = true; // default
    options.BootstrapMode = ModuleChannelBootstrapMode.Auto; // or Preshared
    options.TlsDataPath = "/data/grpc-tls";
});

AddAuthModuleHarness() / AddSourceModuleHarness() call this with mTLS on by default.

mTLS exemptions (bootstrap RPCs)

The bootstrap interceptor runs on every gRPC call shape. By default Module Registry Register may omit a client certificate — that RPC is the mesh join handshake.

Options bind caveat: assigning AllowWithoutClientCertificate from JSON or Configure replaces the whole list. Additive changes should use AllowMethodWithoutClientCertificate(...). IncludeRegisterWithoutClientCertificate (default true) re-adds ModuleRegistryMethodPaths.Register in a PostConfigure so a partial JSON list cannot accidentally drop mesh join.

services.AddModuleChannel(options =>
{
    // Additive (keeps Register):
    options.AllowMethodWithoutClientCertificate("myhost.v1", "Bootstrap", "Join");

    // Or replace, still keeping Register via PostConfigure unless opted out:
    options.SetAllowWithoutClientCertificate(
        GrpcMethodPath.Format("myhost.v1", "Bootstrap", "Join"));

    // Rare: require client cert even on Register
    // options.IncludeRegisterWithoutClientCertificate = false;
});

Paths for Module Registry RPCs come from the generated protobuf descriptor (ModuleRegistryMethodPaths), not hand-copied package strings. Proto package bardie.modules.v1 is the wire API version — bumping to v2 is a breaking contract change (clients must regenerate); it is not dead naming.

Well-known paths: ModuleRegistryMethodPaths.Register, ModuleRegistryMethodPaths.Heartbeat (Heartbeat still requires mTLS).

appsettings (optional — include Register yourself if you set this key, or rely on IncludeRegisterWithoutClientCertificate):

{
  "ModuleChannel": {
    "AllowWithoutClientCertificate": [
      "/bardie.modules.v1.ModuleRegistry/Register"
    ]
  }
}

Participant DI (modules)

services.AddModuleParticipant(builder.Configuration, contentRoot: builder.Environment.ContentRootPath);
// optional kind-specific Register oneof (JWKS, search fields, …):
services.AddSingleton<IModuleRegisterRequestCustomizer, MyRegisterCustomizer>();

Kestrel work port:

builder.WebHost.ConfigureKestrel(k =>
    k.ConfigureBardieModuleParticipantListeners(httpPort: 8080, workGrpcPort: 5001));

Static identity in ModuleChannel is generic (slug / kind / capabilities / OTel name). Kind bags may ship as opaque JSON (source.searchFields, auth.formFields, …) in the same file; Module.Source / Module.Auth helpers parse them, and Register oneofs that need runtime material (JWKS) stay in customizers.

Bootstrap modes (host)

Mode Env Wire behaviour
auto (default) BARDIE_MODULE_MTLS_BOOTSTRAP=auto After join-secret OK, Register may return client cert + private key PEMs. Private mesh / Compose only.
preshared BARDIE_MODULE_MTLS_BOOTSTRAP=preshared Operator pre-places CA + per-slug client cert/key under BARDIE_MODULE_MTLS_PRESHARED_DIR before start. Register never returns private keys. Use whenever gRPC may cross a public/untrusted network.

Steady-state after Register is always mTLS. Mode only changes how certs land on disk.

Private key handling: PEM key files under TlsDataPath are owner-only (0600 on Unix). In-memory keys use EphemeralKeySet. Host→module dials open a short-lived cert from PEM and dispose it with the channel — do not cache extra private-key handles.

Offline provision helper: IModuleCertificateIssuer.ProvisionPresharedClientCertificate(slug) writes files under the preshared directory (admin tooling / DummyRegistrar-style setup).

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 (3)

Showing the top 3 NuGet packages that depend on Bardie.Logos.Channel:

Package Downloads
Bardie.Module.Source

SourceModule base, search_fields Register customizer, FIFO sink, track-job registry, and Kithara BlobStorage/Library dial clients for Bardie source modules.

Bardie.Logos.Hosting

ASP.NET Core bootstrap kit for Bardie module participants (Compose env aliases, Kestrel ports, health endpoints, OTel).

Bardie.Module.Auth

JWT minting, JWKS Register customizer, and thin AuthAdapter base for Bardie auth modules.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0 213 7/26/2026