EthisysCore.Plugin.Sdk.Host 1.4.0

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

EthisysCore Plugin SDK Host

EthisysCore.Plugin.Sdk.Host is the runtime host used for .NET plugins that run out-of-process or in containers.

Supported Modes

Mode Transport How the host is started
OutOfProcess gRPC over loopback Kernel spawns the host via PluginHostRunner.Main with --address, --assembly, and --parent-pid args
Container gRPC over Dapr service invocation Plugin image self-hosts via PluginHostRunner.Run<TPlugin> on the port in ASPNETCORE_URLS

Both modes use the same gRPC protocol (plugin_runtime.proto). The only difference is the network path: loopback TCP in out-of-process mode versus Dapr sidecar-to-sidecar routing in container mode.

Dapr Security Posture (Container Mode)

When the DAPR_API_TOKEN environment variable is set, the host runs in Dapr-secured mode. Two interceptors enforce the identity contract:

DaprGrpcInterceptor (outbound)

Added to every outbound gRPC channel from the plugin to the kernel. Sets the Dapr Host header to the kernel's Dapr app-ID so the local sidecar routes the call correctly. The app-ID is supplied by the kernel in the HostServicesAddress field of the Initialize request.

DaprCallerAppIdInterceptor (inbound)

Added to the Kestrel gRPC server pipeline. On every inbound call it validates the dapr-caller-app-id metadata header that Dapr injects on every service-invocation request:

  • Disabled when DAPR_API_TOKEN is absent (local dev / out-of-process mode).
  • Pre-Initialize pass-through while the expected caller ID is not yet set; Dapr's own access-control policy acts as the perimeter guard for this window.
  • Header-stuffing protection — requires exactly one dapr-caller-app-id header; zero or more than one is rejected.
  • Case-sensitive value comparison — header key lookup is OrdinalIgnoreCase; value comparison is Ordinal (Dapr app-IDs are case-sensitive).
  • Rejects with PermissionDenied on any mismatch.

Contract Surface

The protocol is split into focused proto files under proto/pluginbridge/v1:

  • plugin_runtime.proto — host → plugin lifecycle, tool, and resource calls
  • host_services.proto — plugin → host callbacks
  • datastore.proto, mcp.proto, and common.proto — shared bridge contracts

Use the handwritten Protocol package contracts where available; treat generated gRPC types as transport details.

Package Contents

  • The SDK host executable and runtime files
  • Compiled proto-generated types used by the host
  • MSBuild targets required by consuming SDK-host scenarios

Usage

Plugin authors normally do not call this package directly. It is used by:

  • The platform process host for out-of-process plugins
  • Container entry points that run PluginHostRunner.Run<TPlugin>(args)
  • Build/package workflows that need the runtime assets present
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
1.4.0 97 5/2/2026
1.3.9 91 5/1/2026
1.3.8 94 5/1/2026
1.3.7 94 5/1/2026
1.3.6 103 4/29/2026
1.3.5 100 4/29/2026
1.3.4 95 4/29/2026
1.3.2 94 4/29/2026
1.3.1 94 4/29/2026
1.3.0 89 4/28/2026
1.2.16 91 4/28/2026
1.2.15 89 4/28/2026
1.2.13 96 4/28/2026
1.2.9 94 4/27/2026
1.2.8 86 4/26/2026
1.2.7 91 4/26/2026
1.2.6 100 4/26/2026
1.2.5 99 4/25/2026
1.2.4 99 4/23/2026
1.2.3 109 4/23/2026
Loading failed