Deterministic merge behavior
State is stored in SQLite and resolved with explicit last-write-wins logic, so decisions are reproducible and auditable.
Open Source • MIT • Node 22+
reflect-sync keeps two trees in sync over SSH using rsync + SQLite state. No black-box daemon behavior, no hidden conflict files, and clear logs for every decision.
pnpm install -g reflect-sync
# or
npm i -g reflect-sync
reflect --help
reflect create ~/alpha user@server:/srv/alpha
reflect sync 1
State is stored in SQLite and resolved with explicit last-write-wins logic, so decisions are reproducible and auditable.
Uses familiar endpoints like user@host:/path, persistent ControlMaster
connections, and rsync transfer efficiency.
Structured logs, progress streams, query commands, and inspectable DB files make it easy to understand exactly what changed and why.
| Criteria | reflect-sync |
|---|---|
| Two-way sync between two roots | Built for this directly |
| Deterministic conflict policy | Last-write-wins + explicit side preference |
| Debuggability | SQLite state + structured logs + query CLI |
| Transport and compatibility | SSH + rsync with Linux and macOS focus |
If your workflow is laptop ↔ server, container ↔ host, or staging ↔ prod, reflect-sync is designed for exactly that shape.
Read The Quick Start