Sync Engine
Sync Engine is the next-generation plugin for Obsidian that syncs your vault with your own infrastructure. It is the first Obsidian plugin that allows custom modules to extend its core functionality.
Sync Engine is the next-generation plugin for Obsidian that syncs your vault with your own infrastructure. It is the first Obsidian plugin that allows custom modules to extend its core functionality.
Sync Engine is a revolutionary solution for vault syncing. Its not only a syncing plugin, it is a modular platform that everyone can build upon.
The core ships the infrastructure, and all backends (WebDAV, S3, GDrive) and features (i18n, optimization, sync strategy) come from composable modules. You and your AI agents can build your own modules via convenient SDK, extend the plugin, contribute to community, all without modifying the source code.
Access Sync Engine documentation at sync.consensia.cc, which contains usage guides, existing modules, permission claims, benchmarking, and documentation on how to build a module.
As an Obsidian user working across multiple devices, I've personally encountered the sync dilemma: finding a solution that's reliable, flexible, and doesn't compromise data integrity. After trying nearly every syncing plugin in the community, I found that each came with trade-offs that frustrated my daily workflow:
Then I developed Sync Engine: you want to choose your own storage, you want the plugin to stay small because unused features aren't bundled in, and you want a highly optimized syncing that is no slower than a self-hosted server.
To sync an Obsidian vault to a WebDAV server is a typical distributed coordination problem, where each client has their own copy and changes of the vault and there's no centralized resolver between. The goal is to synchronize the vaults between clients for maximum data integrity.
To address this, this plugin keeps a record of the last known sync state of local and remote files. During syncing evaluates three states (current local, current remote, recorded local and remote in last sync) for each file path and decides the sync action accordingly:
✅ = Exists, ❌ = Doesn't Exist, ✏️ = Changed Compared to Record
| Cases | Local File | Remote File | Sync Record | Action |
|---|---|---|---|---|
| 1 | ✅ | ✅ | ✅ | ⏭️ Skip (already synced) |
| 2 | ✏️ | ✏️ | ✅ | ⚠️ Resolve Conflict (apply strategy) |
| 3 | ✅ | ✏️ | ✅ | ⬇️ Pull (download remote) |
| 4 | ✏️ | ✅ | ✅ | ⬆️ Push (upload local) |
| 5 | ✅ | ❌ | ✅ | 🗑️ Delete Local (cleanup) |
| 6 | ❌ | ✅ | ✅ | 🗑️ Delete Remote (cleanup) |
| 7 | ❌ | ✏️ | ✅ | ⬇️ Pull (restore from remote) |
| 8 | ✏️ | ❌ | ✅ | ⬆️ Push (restore to remote) |
| 9 | ✅ | ✅ (compared with local) | ❌ | 📝 Record (capture unrecorded file) |
| 10 | ✅ | ✏️ (compared with local) | ❌ | ⚠️ Resolve Conflict (first sync) |
| 11 | ❌ | ✅ | ❌ | ⬇️ Pull (new remote file) |
| 12 | ✅ | ❌ | ❌ | ⬆️ Push (new local file) |
| 13 | ❌ | ❌ | ✅ | 🧹 Clean Record (database cleanup) |
Sync Engine from Obsidian plugin store.Sync Engine welcomes everyone that would like to develop and contribute a module. The detailed module development documentation can be found in Sync Engine website.
Sync Engine is licensed under the MIT License.