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
<PackageReference Include="EthisysCore.Plugin.Sdk.Host" Version="1.4.0" />
<PackageVersion Include="EthisysCore.Plugin.Sdk.Host" Version="1.4.0" />
<PackageReference Include="EthisysCore.Plugin.Sdk.Host" />
paket add EthisysCore.Plugin.Sdk.Host --version 1.4.0
#r "nuget: EthisysCore.Plugin.Sdk.Host, 1.4.0"
#:package EthisysCore.Plugin.Sdk.Host@1.4.0
#addin nuget:?package=EthisysCore.Plugin.Sdk.Host&version=1.4.0
#tool nuget:?package=EthisysCore.Plugin.Sdk.Host&version=1.4.0
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_TOKENis 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-idheader; 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
PermissionDeniedon 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 callshost_services.proto— plugin → host callbacksdatastore.proto,mcp.proto, andcommon.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
Related Packages
EthisysCore.Plugin.Sdkfor authoring .NET pluginsEthisysCore.Protocolfor transport-neutral contracts
| Product | Versions 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. |
-
net10.0
- EthisysCore.Plugin.Sdk (>= 1.4.0)
- EthisysCore.Plugin.Sdk.Cache (>= 1.4.0)
- EthisysCore.Protocol (>= 0.3.9)
- Google.Protobuf (>= 3.34.1)
- Grpc.AspNetCore (>= 2.80.0)
- Grpc.Net.Client (>= 2.80.0)
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 |