January 16, 2026
LSN to the moon
Show HN: pgwire-replication - pure rust client for Postgres CDC
Rust dev drops a bare‑metal Postgres change streamer, fans cheer while skeptics reach for seatbelts
TLDR: A new Rust client streams Postgres changes directly, letting users control start/stop points for precise replays. The community split: Rust fans love the speed and control, while skeptics warn missing features like exactly-once and decoding mean it’s powerful but not beginner-friendly. Why it matters: faster, finer-grained CDC power
Show HN lit up over a new Rust-made client that streams database changes straight from Postgres’s “change log,” skipping the usual comfort tools. The creator says it talks directly to the server’s wire protocol, giving explicit control over where you start and stop, aka LSNs—think: bookmarks in the change stream. Rust diehards cheered the “no training wheels” vibe, loving the speed, control, and zero C dependencies. But the caution crew showed up fast: some warned that no exactly-once guarantees and no built-in row decoding means this isn’t a plug-and-play magic wand. One commenter asked if this is “CDC or just a very fast hose,” sparking drama over what belongs in the client vs. higher layers. The dev defended the minimalist take: replication is a stateful stream; this crate keeps it lean so bigger systems can make the reliability promises. Meanwhile, meme lords joked about “LSN to the moon” and called it “WAL CrossFit”—you do the heavy lifting yourself. The hot debate: direct wire control vs. “reinventing wheels” like libpq. The vibe? Power-users excited, ops folks cautious, and everyone agreeing it’s a bold, nerdy flex
Key Points
- •pgwire-replication is a pure Rust client for PostgreSQL logical replication over the pgwire protocol.
- •It targets CDC, change streaming, and WAL replay, emphasizing explicit LSN control and deterministic restart behavior.
- •Features include explicit LSN seek, bounded replay with stop_at_lsn, standby status updates, keepalive handling, Tokio-based async, authentication (SCRAM-SHA-256/MD5), and TLS/mTLS via rustls.
- •Progress is explicitly reported via update_applied_lsn; replication sessions can cleanly stop at a specified LSN and terminate with CopyDone.
- •The crate avoids higher-level SQL clients (libpq, tokio-postgres) and does not implement schema management, checkpoint persistence, or full pgoutput decoding.