Skip to content

DotBoxD

Contract-first plugin development for .NET hosts. Three interaction modes - call (typed RPC), react (server-filtered events), extend (plugin-shipped batches) - and one validated, fuel-metered sandbox for plugin logic that runs inside the host. Never loaded C#/IL.

A complete plugin system for .NET hosts. Untrusted plugins live in a sidecar process behind IPC (because AssemblyLoadContext is not a security boundary), while plugin-authored logic - filters, projections, batches - runs inside the host as a validated, fuel-metered sandbox that executes restricted IR, never loaded C#/IL. Everything you author is contract-first C# that source generators turn into wiring.

Why DotBoxD? The isolation-vs-latency dilemma, in three diagrams ›

Every plugin interaction is one of three shapes - pick per call site:

1 · Call the host - Services (RPC)

The host implements the contract; clients call it through a generated typed proxy. Proxy and implementation come from the same interface, so they cannot drift - and it is all generated at compile time.

Tutorial: your first service ›

2 · React to the host - event pipelines

A plugin subscribes with an ordinary Where/Select chain. The filter runs inside the host as sandboxed IR, so only matching, projected data ever crosses the wire, pushed one way (result terminals can return a reply per match).

Walkthrough: event pipelines ›

3 · Extend the host - Pushdown

A plugin ships its own batch operation that runs server-side over the host’s existing bindings, collapsing N round-trips into one validated submission - without recompiling the host.

Walkthrough: pushdown server extension ›

Modes 2 and 3 are powered by the same engine - the kernel sandbox: validated, capability-gated, fuel-metered IR. Mode 1 is a trusted, hand-written host implementation.

Terminal window
# Full net10.0 stack - Services, the kernel sandbox, and Pushdown:
dotnet add package DotBoxD --prerelease
# Unity / netstandard2.1 service bundle:
dotnet add package DotBoxD.Services.All --prerelease

The Services and channel libraries target netstandard2.1. Unity/IL2CPP consumers must additionally use generated/static MessagePack formatters, root the generated registry, and validate their build. The Kernels and Pushdown stack targets net10.0.


DotBoxD merges the former standalone ShaRPC (RPC) and Safe-IR (kernel sandbox) projects into one contract-first runtime. It is MIT licensed.