Plugin Framework

Universal extensibility framework providing deterministic plugin discovery, admission checks, registry models, and SDK support for building Stella Ops plugins.

Audience: plugin authors building connectors, analyzers, or gate/step providers, and module owners who load plugins into their service hosts.

Purpose

The Plugin Framework is a foundational library that provides a consistent plugin lifecycle, deterministic discovery, signature/version admission checks, process/in-process sandboxing, and a persistent registry for Stella Ops modules. It is consumed as a library by other modules and exposes no HTTP endpoints.

The src/Plugin/ projects ship a trust-driven sandbox: StellaOps.Plugin.Host derives a runtime SandboxMode from each plugin’s verified trust level via SandboxModeMatrix.FromTrust (StellaOps.Plugin.Sandbox/SandboxMode.cs) — BuiltInInProcessHardened, TrustedOutOfProcessOverlay, UntrustedOutOfProcessConfined. OutOfProcess* modes run the plugin in a separate OS process (ProcessSandbox) with an overlay filesystem, network-policy enforcement, resource limits, and a gRPC bridge; OutOfProcessConfined additionally attaches an OS-level confinement profile (AppArmor/SELinux on Linux, Job Object on Windows) and fails closed if it cannot be attached.

Two distinct hosts exist. This dossier (Source: src/Plugin/) documents the sandbox-capable host. A separate, older library at src/__Libraries/StellaOps.Plugin/ (PluginHost/PluginManifestLoader/NullPluginVerifier) is a simpler shared host that does not ship process sandboxing; consumers of that host must provide their own isolation. Integrations runs a narrow stellaops.pluginhost.process.v1 child-runner path for production admission, allowlisted integration:test-connection / integration:health-check / integration:discovery execution, deterministic dead-runner evidence, and brokered single-authref secret materialization. See architecture.md for the full distinction.

Status

AttributeValue
MaturityProduction
Sourcesrc/Plugin/

Key Features

Dependencies

Upstream (this module depends on)

Downstream (modules that depend on this)

Consumers of the src/Plugin/host/abstractions/registry/sandbox/SDK projects documented here:

Note: Integrations and Scanner consume the older src/__Libraries/StellaOps.Plugin/ shared host (sandbox-free), not the src/Plugin/ projects above. Treat their connector/analyzer plugins as consumers of that separate library.