Self-hosting

Run it yourself, properly

One image, three processes: the app, a worker and a websocket server. A Postgres database, an S3-compatible bucket, an SMTP server. Nothing here assumes a particular cloud.

What runs where

Same image, three commands. Background jobs queue in Postgres itself, so there's no separate queue server to run.

Your VPS · ghcr.io/…/slate:[version]

AppNext.js server. Agency, portal and platform surfaces.node apps/web/server.js
WorkerPDFs, emails, reminders, the overdue sweep, reconciliation.node apps/worker/dist/index.cjs
WebsocketThe live board and portal updates, authorised per connection.node apps/realtime/dist/server.cjs

Yours to choose

PostgresData and the job queue
S3-compatible bucketFiles and PDFs
SMTP serverInvitations, invoices, reminders
Payment providerOnline invoice payment
Everything on the left is Slate. Everything on the right is yours to choose.
01 The seams

Swap the parts, keep the app

Each outside service is reached through one interface in the code. Changing provider is configuration, not a fork.

SeamWhat it needsWorks with
StorageAn S3-compatible APIAny S3-compatible bucket, including MinIO on the same box
EmailA transportSMTP, or Resend
PaymentsA payment providerStripe or GoCardless
QueuePostgresThe database you already run
02 Your data

Your clients' files, on your disk

When you run it, the database and the bucket are yours. Backups are whatever you already trust, and nothing leaves the box unless you point a seam at a service outside it.

The fonts ship inside the image and the build doesn't fetch from Google, so it works behind a restrictive egress policy.

03 The trade

What you take on

Self-hosting means you own the backups, the upgrades and the 3am page. If that's not a trade you want, the managed version is the same software with us holding the pager.

Self-hosted
You run the box, the backups and the upgrades
Managed
We run it; same software, same data model
Upgrades
A new tagged image
Moving between them
Your data exports either way

Slate is nearly ready

Leave your email and we'll tell you once, when you can actually use it.