This page collects concrete examples for the surrounding guide area.
Use an LLM request intercept when a plugin needs to inject tenant or routing metadata into every provider request.
LLM request intercepts receive three arguments: name, request, and annotated. The request object is immutable, however it is possible to return a new instance of the request with edits, the exception to this is when the intercept is written in Rust.
This pattern is useful for:
Use a subscriber-oriented plugin when the component should watch the full lifecycle rather than rewrite requests.
This is the right pattern when the component:
A plugin can register more than one runtime surface when one configuration document controls a related behavior bundle.
For example, a policy bundle can install:
Use this pattern when the configured behavior is easier to reason about as one component than as several unrelated plugin components. Keep each registered surface small and make the component config explicit about which surfaces are enabled.
Plugins can stay framework-agnostic if they operate on the normalized runtime data rather than framework-specific objects.
Good examples: