Standalone engines cannot be administered with
ventstreamctl. The same public
image runs managed when given a deployment agent key — to
gain CLI lifecycle and managed-configuration operations, install a
managed engine with a key instead of a
local ConfigMap.Standalone CDC
The following Postgres example is a current baseline StatefulSet. Adapt the source section using the relevant connector guide for Neo4j, MongoDB, MySQL, or Kafka. Create the workload namespace once:Create connector secrets
Use External Secrets, Secrets Store CSI, SOPS, or another approved secret workflow in production. The resulting Secret must expose the environment variables referenced byventstream.yaml:
Create canonical configuration
specs.joins section is optional. Without it the engine runs flat CDC:
every source stamps deterministic document ids ({table}:["pk"]), so updates,
deletes, and primary-key changes are exact in the sink with no joins spec. Add
a joins spec only when you want composed parent+children documents, as this
example does. The example uses Postgres SQL denormalization mode; add related
tables and the required source indexes before production use, or use memory
when you intentionally want the persisted in-process join engine instead.
Run the engine
10001; the pod-level
fsGroup makes a newly provisioned PVC writable without a root init container.
If you replace the runtime stage or user in a custom image, change all three IDs
to that image’s fixed non-root UID/GID.
Apply the namespace, Secret, ConfigMap, Service, and StatefulSet through your
normal deployment repository, then verify:
Standalone realtime gateways
The publishedventstream-gateway chart runs the horizontally scalable
ws, graphql, or combined roles without VentStream Cloud:
infra/helm/ventstream-gateway for local installs. This chart currently
configures NATS. JetStream (--set ws.jetstream.enabled=true, the chart
default) is required for GraphQL subscriptions and resumable native WebSocket
delivery; the stream name is ws.jetstream.stream (default ventstream). The
engine also supports Redis Streams
through canonical configuration when you deploy it without this chart. Use a
Service or ingress appropriate for long-lived WebSocket connections, and
validate client authorization before exposing either listener outside a trusted
network.