Zero plugins to start
import { Walcast } from "walcast" and for-await your database changes. Your code is the sink — no daemon, no broker, no config file.
A hand-written pgoutput decoder speaking the streaming replication protocol directly — an async iterator with explicit acks, and a plugin engine when you want a daemon.
import { Walcast } from 'walcast'
const tr = new Walcast({ connection: process.env.DATABASE_URL! })
await tr.setup() // create publication + slot, idempotent
for await (const event of tr.changes()) {
console.log(event.op, event.table, event.after)
tr.ack(event) // the slot only advances past what you ack
}