A file is copied only if it matches at least one rule in .sync — gitignore-style bare lines, the inverse of gitignore: a line lists what to copy. No match means no copy.
Atomic copies
Temp file in the destination's own directory, then fsync + rename. A reader sees either the old file or the new one, never a partial copy.
Never deletes
A file removed or renamed at the source stays in the backup. The backup is copy-and-update only — history by construction.
fswatch + launchd / systemd
Native watching through fswatch (FSEvents on macOS, inotify on Linux), with a launchd agent or a systemd user unit that starts at boot and restarts the daemon if it dies.
Zero dependencies
The core is pure Python standard library — the only external pieces are fswatch and the OS init system, launchd on macOS, systemd on Linux.
S3-compatible destination
One S3-compatible bucket (MinIO, Silo, Ceph, Wasabi, Backblaze B2, AWS) alongside the filesystem destinations, via an optional extra. Upload only, metadata-based idempotency, and it never deletes anything.