Skip to main content
BuzzKit is open source and runs on your own Cloudflare account. Multi-tenancy, workflows, segments and the event stream are all in the repository, and a self-hosted deployment serves the same API as buzzkit.dev.

buzzkit-dev/buzzkit

The repository, and the current setup instructions in its README.

What it runs on

What you need to bring

  • A Cloudflare account for the two Workers, plus KV, Queues, Durable Objects and Hyperdrive.
  • A PostgreSQL database.
  • A Tinybird workspace for the event stream. A free workspace is enough to start.
  • Provider credentials for the channels you use, such as an Apple Developer key or a Firebase service account. These are uploaded through the dashboard, never configured as environment variables.
GitHub sign-in, Axiom logging and OTLP tracing are optional. Leaving them unset turns the feature off rather than breaking anything, and email and password sign-in is always available.
Cloudflare Queues are not created for you on deploy. The repository’s instructions list the queues to create by name before the first deployment.

Where configuration lives

Non-secret values live in each app’s wrangler.jsonc under vars and are overridden per environment at deploy time. Secrets live in .dev.vars locally, copied from .dev.vars.example and git-ignored, and in wrangler secret put once deployed. The full table of every variable, secret and binding, with a column saying whether a self-hoster actually needs it, is docs/configuration.md in the repository. Three of them are worth knowing about before you start, because they are not the kind of value you change later:
  • CREDENTIAL_MASTER_KEY_V1 wraps every provider credential you upload. Rotation is additive: you add the next version, deploy, wait for the sweep to re-wrap, then drop the old one. Losing every version that still wraps a row means re-uploading that credential.
  • SQIDS_ALPHABET derives your public ids. Generate one per deployment and never change it.
  • BETTER_AUTH_SECRET signs sessions. Rotating it signs everyone out.
Rate limiting is not built into the API. Put Cloudflare WAF rate-limit rules on the sign-in, sign-up and /v1/client/* paths at deploy time.

Licensing

The core is AGPL-3.0: the API, the dashboard, the marketing site and the internal packages. The SDKs your customers embed are MIT, both the buzzkit server package and the iOS SDK, so shipping them inside a closed-source application carries no copyleft obligation.

Next

Quickstart

Connect a channel, create keys and send, against your own deployment.

Authentication

Keys and scopes, identical whether hosted or self-hosted.

Tenants

The isolation boundary, the tenant header and per-tenant settings.

Webhooks

Endpoints, signing, the retry schedule and replays.