Plugin Store

Everything you can plug into Busbar.

Busbar ships small and complete: a memory store, token auth, and env/file secrets in the box. Everything heavier is a plugin you add without recompiling the core: where state lives (stores), how requests are trusted (auth), where a config secret value resolves from (secrets), and your own code on the request path (hooks). As of busbar 1.5.0 that is a working system, not a roadmap: a plugin is one signed archive you download, drop in a directory, and the binary you already run verifies and loads it. How it works is below the grid. Browse the plugins, and vote for what you want built next.

Store Yours

Your store

Have a backend Busbar should speak?

The store is a small, sync contract: keys, budgets, usage, metering. If you want Busbar’s state in DynamoDB, Mongo, or your own service, the contract is the whole job. Tell us what you need and we’ll help you build it.

Contact us, or open a PR against the repo.

Auth Yours

Your auth

Trust requests your own way?

HMAC-signed requests, a bespoke token service, a SASO scheme of your own: the auth contract is small and stackable. Tell us how you need requests trusted and we’ll help you wire it in.

Contact us, or open a PR against the repo.

Secret Yours

Your secret backend

Have a secrets manager Busbar should speak?

AWS Secrets Manager, GCP Secret Manager, Azure Key Vault, 1Password: the secret contract is one method, resolve a reference to bytes. Tell us what you need and we’ll help you build it.

Contact us, or open a PR against the repo.

Hook Gate Yours

Your hook

Built something worth sharing?

A guardrail, a router, a cost meter, an audit sink: anything that runs on the path. Tell us what it does and where it lives, and we’ll list it here and link straight to your repo.

Contact us, or open a PR against the repo.

How a plugin loads

A plugin is a plugin. Stores, auth modules, and hooks share one format, one loader, and one trust model; the kind field in the manifest is the only thing that tells them apart. Distribution is one signed .tar.gz per plugin and architecture: download it, drop it in plugins/, done. Busbar unpacks and verifies the archive entirely in memory (on Linux the library loads from an anonymous memfd, so nothing ever touches disk), and the bytes that were verified are exactly the bytes that load.

It is safe by default. The loader is off until you set plugins.enabled: true, so a tarball dropped next to a gateway that hasn't opted in is inert. Busbar's own plugins verify against a release key embedded in the binary: trusted with zero configuration. Unsigned or third-party plugins are logged and skipped unless you explicitly allow them (allow_unsigned, allow_third_party, and a per-publisher key allowlist), and version floors stop an old plugin from being loaded beside a newer binary.

And it is inspectable before it carries traffic. busbar --list-plugins prints every plugin in the directory with its signature state and exactly why it will or won't load, without executing any of them. busbar --validate checks the config and every plugin manifest through the same path a real boot uses: if it passes, boot succeeds; if anything is wrong (a bad config, a malformed manifest, two plugins claiming one name), Busbar names it and refuses to start rather than booting degraded.

The point of the whole design: the default binary stays lean (~11 MB, with the memory store and token auth built in), and durable governance (SQLite, Postgres, Valkey, and MySQL) is a download you drop in, not a recompile.

New to the request path? Start with the hooks docs for the config shape, the tap/gate lifecycle, and how a hook falls back safely without ever blocking a request. Stores and auth are set in configuration.