Self-hosting
palumb’s runtime is open source: palumb-core (triggers, delivery, channels,
audience, digests) is AGPL-3.0 and @palumb/sdk is MIT. If you’d rather run it on
your own infrastructure, you can — it’s the same SDK and the same API as managed,
just pointed at a stack you operate.
The short version
Section titled “The short version”Everything runs from one Docker Compose (palumb-localenv): PostgreSQL, Restate,
a dev SMTP sink, palumb-core, and palumb-engine (the durable runtime).
git clone <the palumb repos>cd palumb-localenvdocker compose up -d --build # start the stackdocker compose exec palumb-core npm run seed # create a tenant + print an API keyThat gives you a palumb-core at http://localhost:3000, a Restate runtime at
http://localhost:8080 (ingress) / http://localhost:9070 (admin), and
palumb-engine.
Pointing your app at it
Section titled “Pointing your app at it”It’s the Quickstart, with two differences:
-
Base URL — point your app’s API calls (triggers,
PUT /v1/bridge, channels) at your own palumb-core (http://localhost:3000) instead of the managed endpoint. The Bridge SDK itself takes no base URL — palumb calls it. -
Register the engine with Restate — a one-time platform step managed palumb does for you: tell your Restate where
palumb-enginelives.Terminal window curl -sS http://localhost:9070/deployments \-H 'Content-Type: application/json' \-d '{ "uri": "http://palumb-engine:9090" }'
From there, configuring a channel, adding subscribers, connecting your Bridge
(PUT /v1/bridge), and firing triggers are exactly the same API calls as the
Quickstart — just against your own base URL.
Going further
Section titled “Going further”The repos (palumb-core, palumb-engine, palumb-localenv, palumb-sdk) carry
the deployment detail — environment variables, the encryption key for channel
credentials, migrations, and how each service is built. For a production
self-host you run and own the runtime and all of that infrastructure — but not the
managed control plane (dashboard, provisioning, billing), which stays hosted-only.
…which is exactly why most teams pick managed. 🙂