pgstream
Real-time change data capture for Postgres
About
pgstream listens to your Postgres WAL and emits structured change events over WebSocket or NATS. Zero polling, sub-millisecond latency, and it handles schema changes gracefully. Built in Rust, runs as a single binary.
Features
Logical replication with automatic slot management, WebSocket and NATS output adapters, Schema migration tracking, Exactly-once delivery guarantees, Prometheus metrics built in
Installation
curl -sSL https://example.com/install.sh | sh, pgstream init --db postgres://localhost/mydb, pgstream start
<div style="font-family:'SF Mono','Fira Code',monospace;max-width:760px;margin:0 auto;padding:60px 32px;color:#24292f;background:#fff">
<header style="margin-bottom:40px;padding-bottom:20px;border-bottom:1px solid #d1d9e0">
<h1 style="font-size:1.6rem;font-weight:700;margin:0 0 8px;font-family:-apple-system,sans-serif">{{project_name:string}}</h1>
<p style="font-size:0.95rem;color:#656d76;margin:0 0 16px;font-family:-apple-system,sans-serif">{{one_liner:string}}</p>
<div style="display:flex;gap:12px">
<a href="{{repo_url:link}}" style="font-size:0.75rem;color:#fff;background:#24292f;padding:6px 14px;text-decoration:none;border-radius:6px;font-family:-apple-system,sans-serif">Repository</a>
<a href="{{docs_url:link}}" style="font-size:0.75rem;color:#24292f;background:#f6f8fa;padding:6px 14px;text-decoration:none;border:1px solid #d1d9e0;border-radius:6px;font-family:-apple-system,sans-serif">Documentation</a>
<span style="font-size:0.7rem;color:#656d76;background:#f6f8fa;padding:6px 14px;border:1px solid #d1d9e0;border-radius:6px">{{license:string}}</span>
</div>
</header>
<section style="margin-bottom:32px">
<h2 style="font-size:1rem;font-weight:600;margin:0 0 12px;font-family:-apple-system,sans-serif">About</h2>
<p style="font-size:0.9rem;line-height:1.8;color:#333;font-family:-apple-system,sans-serif">{{description:text}}</p>
</section>
<section style="margin-bottom:32px">
<h2 style="font-size:1rem;font-weight:600;margin:0 0 12px;font-family:-apple-system,sans-serif">Features</h2>
<p style="font-size:0.85rem;line-height:2;color:#333;font-family:-apple-system,sans-serif">{{features:list<string>}}</p>
</section>
<section style="margin-bottom:32px">
<h2 style="font-size:1rem;font-weight:600;margin:0 0 12px;font-family:-apple-system,sans-serif">Installation</h2>
<div style="background:#f6f8fa;border:1px solid #d1d9e0;border-radius:6px;padding:16px;font-size:0.82rem;line-height:2;color:#24292f">
{{install_steps:list<string>}}
</div>
</section>
</div>