FWIW, the README.md says "the Phoenix server listens to PostgreSQL's replication functionality (streaming WAL)" - that makes it sound like you're actually parsing the WAL itself. But you seem to be looking at the already decoded data (using postgres' logical decoding). That's the right thing to do, please don't get me wrong. Just suggesting to clarify.