I once made a software distribution system for software with thousands of files in a huge directory tree using rclone. I'd upload it all to S3 and then clients could run an update script that used rclone to sync just the changed files. No server needed. A better solution probably exists but I couldn't find any other system at the time that could work directly from S3 or any other dumb file host and still selectively sync only changed files.
I recently noticed in the rclone source tree[0] that they are working on making “librclone”. I would love it if they exposed the rclone internals as a library as the only other solutions (e.g. bita, zsync, librsync) still require a fair bit of tedium to use as a generic application updater.