Postgres logical-replication slot, classified by an LLM, posted to your incident webhook.
Subscribes to a Postgres logical-replication slot and routes alert-worthy row changes through a small LLM that drafts a one-sentence summary. Routine churn drops at the conditional. The LLM is never invoked on noise.
No black box. Each step is a typed-frame node you can edit, monitor, and replace.
Postgres commits a row change. The logical-replication slot ships the pgoutput binary message to the streaming worker.
streaming-postgres-cdc decodes the message natively (no Debezium / Kafka layer required) and emits a TextFrame with the row JSON.
streaming-conditional matches an alert-worthy regex (status flips to critical / failed / breach / escalated, large amounts, severity high / critical). Routine changes drop at the default branch.
The LLM drafts a one-sentence summary. streaming-webhook-response POSTs to your incident receiver (Slack / PagerDuty / ServiceNow).
Streaming graph contract, observability, and cost discipline come standard. The agent ships with a full test suite that runs in CI on every node version bump.
psycopg2.LogicalReplicationConnection in an executor thread; the pgoutput v1 binary protocol is decoded natively (Begin / Relation / Insert / Update / Delete / Commit / Truncate / Type / Origin). Per-relation column metadata cached from Relation messages.
Standby Status feedback ACKs the LSN on every Commit so Postgres frees WAL in real time. A pod crash mid-event redelivers un-ACKed transactions on restart. Operators idempotency-key on pg_lsn + pg_table for exactly-once.
Routine row churn drops at the conditional before any LLM call. The LLM cost scales with alert rate, not commit rate. Default regex is conservative and operator-tunable.
Default emits PK columns on UPDATE/DELETE. REPLICA IDENTITY FULL ships the entire pre-update row. USING INDEX is also supported. TOAST handling: unchanged TOASTed columns surface as null per pgoutput spec.
PgOutputDecodeError / ConnectionError / SlotError / StopError all flow through the same webhook fan-in as the alerts. The on-call sees source failures on the same channel as production alerts — no separate runbook.
Each emitted row event writes a span tagged with pg_op / pg_schema / pg_table / pg_lsn / pg_xid / pg_commit_lsn. Filter the canvas overlay by table or by xid to debug enrichment behaviour.
Every dependency is a registered Strongly service or a model you control. Swap any one of them in the install wizard. The graph stays intact.
The marketplace template is the graph. Every customisation below is a config change or a single-node addition - never a rewrite.
Wire streaming-text-transformer between llm and webhook to prepend ':rotating_light: ' and bold the table name.
Replace the 2-port conditional with streaming-confidence-router branching critical → PagerDuty page, high → Slack warn, medium → email digest.
Fork the prompt with streaming-llm-router predicating on pg_table so orders / incidents / payments each get a domain-tuned summary prompt.
Replace per-event LLM with streaming-aggregator (max 10 events / 30s window) so a burst of changes summarises as one alert instead of ten.
Fan-out the LLM response to a streaming-conversation-store writing to your Mongo audit collection, so every alert has a queryable history.
We don't leave until it runs. Talk to a forward-deployed engineer about deploying Postgres CDC → LLM Alerts into your environment with your STT, your LLM, your TTS, your data.
Schedule a Demo