Would it be possible to extend syncthing to support more than just files? I am thinking about ways to do so, for example adding a lowlevel API / plugin interface to directly sync some blocks (not tied to files).
For an example application, consider building an Etherpad-like synced pad that uses syncthing to distribute the database among the peers. Just using syncthing to directly sync the db is of course going to result in conflicts, but if there was direct access to the block-level interface of syncthing then the pad could build it’s own conflict resolution using CRDTs on top of that.
Another application could be a syncing other structured data where you want to use CRDTs or OT to avoid conflicts such as passwords or configs.