Providers inject new data sources into Kwirth — from Kafka topics and OpenTelemetry collectors to any custom backend system. They run alongside Kwirth's core and feed data into the same channel and sender pipeline.
A provider is a backend-only extension that connects Kwirth to an external data source and streams data into the Kwirth pipeline. Unlike plugins (which add UI channels), providers are pure data adapters: they receive messages from an external system and forward them to Kwirth channels, senders, or both.
Providers run in the same Node.js process as the Kwirth backend. They are hot-reloadable and packaged as a .tgz file containing a CJS bundle (back.js) and a package.json manifest.
Fires a periodic heartbeat event to all subscribing channels. Useful for time-driven logic, polling patterns, and testing channel subscriptions.
AvailableStreams a Kwirth event whenever a Kubernetes cluster event occurs — Pod created, Deployment scaled, node condition changed, and more.
AvailableIntercepts Kubernetes admission webhook calls and exposes them as Kwirth events, enabling channels to inspect or react to every resource creation and update in real time.
AvailablePolls the Kubernetes cAdvisor API on a configurable interval and distributes cluster-wide CPU, memory, network, and disk metrics to all subscribing channels.
AvailableConsume messages from one or more Kafka topics and stream them into Kwirth channels. Configurable topic list, consumer group, and Kafka broker URL.
AvailableReceive OTLP traces, metrics, and logs over gRPC or HTTP. Acts as a lightweight collector endpoint inside your cluster — no Collector sidecar needed.
AvailableA minimal reference implementation. Generates synthetic events on a configurable interval. Use it as a scaffold for building your own provider.
Dev / ReferenceIngests external business data via HTTP POST. Events carry a space and type label; channels subscribe to the combinations they need. Enables AI channels to react to business signals alongside Kubernetes events.
Expose an HTTP endpoint inside Kwirth that accepts inbound webhook payloads from any external service (GitHub, PagerDuty, Alertmanager, etc.).
PlannedPoll or stream change events from PostgreSQL, MySQL, or MongoDB. Surface slow queries, replication lag, and table-level metrics as Kwirth signals.
PlannedConnect any data source that has a Node.js SDK or HTTP API. The provider interface is intentionally simple: start, send, stop.
Build your ownEvery provider must implement the IProvider interface from @kwirthmagnify/kwirth-common-back:
"kafka", "otel")A provider is a single CJS bundle compiled with esbuild. The project structure mirrors the plugin layout:
providers/my-provider/
src/
back/index.ts ← implements IProvider, exports as default
build.mjs ← esbuild script (node platform, CJS format)
package.json ← includes id, displayName, version, descriptionMinimal scaffold — a provider that polls an HTTP endpoint and forwards data as sender messages:
import { IProvider, IProviderContext, ISenderAccess } from '@kwirthmagnify/kwirth-common-back'
export class MyProvider implements IProvider {
readonly id = 'my-provider'
private senders!: ISenderAccess
private timer?: NodeJS.Timeout
async startProvider(context: IProviderContext): Promise {
this.senders = context.senders
this.timer = setInterval(() => this.poll(), 30_000)
}
async stopProvider(): Promise {
clearInterval(this.timer)
}
private async poll(): Promise {
const data = await fetch('https://my-api/events').then(r => r.json())
await this.senders.send('console', 'default', { body: JSON.stringify(data) })
}
}
export default MyProvider Register it for local development in kwirth-dev.json:
{
"providers": {
"my-provider": "../providers/my-provider/dist"
}
}Full interface reference, context object documentation, and the sample provider source are in the developer docs.
Provider docs → Sample provider source