After months of work, I've released Ensembles 3, a complete rewrite of the framework in Swift.
Ensembles is a local-first sync framework for Core Data and SwiftData. It syncs your app's data across devices through services your users already have (iCloud/CloudKit, Dropbox, Google Drive, OneDrive, S3, WebDAV, and more), or peer-to-peer over a local network. There's no server to run and no cloud bill, and you're not locked in to any one provider. It usually takes only a handful of lines to set up, because Ensembles integrates with your existing Core Data or SwiftData stack through public APIs to capture changes and merge conflicts for you. Cloud data can be end-to-end encrypted if you want it to be.
A bit of background: I originally built Ensembles years ago, in a time when most apps lived on a single device and syncing was a problem each developer solved on their own. Then the industry moved to the cloud, and I more or less assumed Ensembles had seen its best days. Over the last few years, though, local-first has had a real resurgence, and it felt like the right moment to bring Ensembles up to date. So I rewrote it in Swift, with async/await throughout, and added several new backends.
What's in 3.0:
- Pure Swift, async/await, strict concurrency
- SwiftData support (sync your @Model types) alongside Core Data
- 15 cloud backends, plus the option to write your own for practically any storage
- End-to-end encryption wrapper for any backend
- Peer-to-peer sync over the local network
- Backwards compatible with Ensembles 2 cloud data
- Ships as a binary Swift package (XCFrameworks): macOS, iOS, iPadOS, tvOS, watchOS, visionOS
On the sales model: it's free to use with CloudKit and local file sync. A subscription unlocks all the other backends and the ability to write custom ones ($99/year, unlimited apps), and there's a tier with full source access ($499/year). The license only restricts which versions you can build with โ there is no runtime check, so an app you ship keeps syncing forever, even if a subscription lapses.
Links:
- Site and docs: https://ensembles.io
- GitHub: GitHub - mentalfaculty/Ensembles3: Ensembles 3 โ Core Data and SwiftData sync framework for Apple platforms ยท GitHub
I'd welcome feedback, questions, and criticism from this community โ especially from anyone who has wrestled with Core Data / SwiftData sync, or who has been following the local-first space.