Plugins
A plugin packages one or more hooks (plus any migrations) and installs them into a BitRouter pipeline in a single call.
A plugin is the unit that packages one or more hooks — plus any database migrations they need — and installs them into the router in a single call. It's how a capability like guardrails, observability, or attestation ships as one installable piece instead of a loose set of callbacks.
Pipelines
Every plugin targets one of three pipelines, depending on what kind of traffic it acts on:
language_model— the main LLM pipeline, with the full set of hooks.mcp— Model Context Protocol routing.acp— Agent Client Protocol routing.
A convenience, not the atomic unit
A plugin is a convenience package: it bundles a related set of hooks and migrations and installs them together. It is not the atomic unit — every plugin can be reproduced by registering its hooks one by one. Bundling them just makes a capability reproducible and installable in one step. The core ships several this way, including bitrouter-guardrails, bitrouter-observe, and bitrouter-attestation.
To write one against the Rust SDK, see Build a plugin.
How is this guide?