Your Postgres data in ClickHouse, kept in sync, with proof both sides agree.
chlift takes a snapshot of your Postgres tables into ClickHouse, keeps them current with live change data capture, and checks that both sides hold the same data. It is for teams that run their own Postgres and need analytics without hurting it.
chlift is free and MIT licensed. The only paid offers are installation, support and training: io@deemwar.com
What we measured
One end-to-end run on our dev setup (2026-10-03): a 2 GB Postgres (user_events 8.1M rows, request_logs 4M, system_logs 2M) moved by chlift into two ClickHouse replicas, then kept in sync with live inserts, updates and deletes.
Snapshot of 14,048,000 rows
Copied from Postgres into ClickHouse by migrate start. Then migrate check compared both sides day by day: every day equal on both replicas.
Before they reached a dashboard
Both were found by chlift's own checks in our test runs, and migrate plan now flags every table exposed to them. Details below.
Query speed-ups
We measured large gains on analytics queries, but the published table and the raw benchmark files do not match yet. Until they do, we show no query timings here.
- A dev environment on one shared 8-core box, not a vendor benchmark. Your data and queries are the real test.
Two silent data bugs we caught, and what chlift does about them
Replication that fails loudly is annoying. Replication that quietly gives you wrong numbers is worse. Both of these produced no error anywhere.
Long text blanked on updates
With Postgres's default replica identity, unchanged long text/JSON columns were written as empty strings on every UPDATE that did not touch them. In a soak run: 374 rows with empty notes in ClickHouse, 0 in Postgres.
Deleted rows that stayed alive
On a table sorted by time first, delete markers landed under a different key, so deleted rows stayed visible in ClickHouse. migrate check caught it: 1,998,000 rows in Postgres, 2,000,000 in ClickHouse.
What chlift does
migrate plan finds every table at risk (updated tables with long text/JSON columns, and tables whose sort key does not start with the primary key) and gives you the ALTER TABLE … REPLICA IDENTITY FULL to run before anything is copied. migrate check then compares both sides.
What works today, and what doesn't yet
Built and verified on our dev setup
Install on a ClickHouse cluster; migrate plan, start, status and check (with checksums); and the bench.
Being verified now
Cutover (switching readers over to ClickHouse) is written and being verified. A longer replication reliability run is in progress; this page stays marked preview until it passes.
Install today
There are no public binaries yet. Until there are, deemwar installs chlift with you: tell us about your setup below.
Talk to us
Tell us about your Postgres and what you want in ClickHouse. A person replies, usually within a working day. Or email io@deemwar.com.