This guide is specifically for macOS and Homebrew. On Linux or Windows, use
the Docker Quickstart, or adapt the same environment variables to
your local services.
Install or build the engine
Install the release binary without a Rust toolchain:rust-toolchain.toml), then build the single binary:
ventstream. When building from source, replace it with
./target/release/ventstream.
A standalone engine needs no control plane. Lifecycle is restart-based: stop
the process to pause it, then start it again to resume from retained state.
Pick a mode:
Mode A — Postgres CDC → OpenSearch
Stream a Postgres database into denormalized OpenSearch documents. Uses the demoshop schema (orders + customers + line items) and the orders
projection spec.
1. Postgres (logical replication needs wal_level=logical + a restart):
trust auth, so no VS_PG_PASSWORD is needed.)
4. Watch it work — the snapshot lands, then live changes flow in ~a second:
Mode B — Real-time subscriptions (WebSocket + Apollo)
Run the real-time gateways (no source DB, no sink) and watch typed GraphQL subscriptions update live. This path needs only NATS. 1. NATS with JetStream (in its own terminal —-js is required for the
resumable per-connection mode the graphql role consumes):
ventstream stream, GraphiQL on):
orderId;
id must be a valid ULID):
seq (the resume
cursor) and the playground tracks it, so reloading and reconnecting replays
what you missed. For the Apollo Client wiring (graphql-transport-ws link +
resume_from_seq), see
Real-time subscriptions and the
real-time demo.
Clean up
Stop the engine (andnats-server) with Ctrl-C first, then remove whatever
you created.
Mode A — Postgres + OpenSearch: