Hello everyone,
I'm Yousef Genedy and I'm interested in the LAN-based synchronization between Joplin devices idea, allowing devices on the same local network to synchronize directly without relying on an external sync target.
I’ve been contributing small improvements and fixes to the codebase:
- PR #14574: Start sync when app opens or resumes
- PR #14360: Make notebook search accent-insensitive in GotoAnything
I want to reuse the existing synchronization architecture as much as possible, rather than introducing a completely separate system.
The main approach I’m exploring is a host-based LAN sync model, where:
- One device on the local network acts as a LAN sync host
- Other devices connect to it and sync through it
- The implementation integrates with the existing architecture:
Synchronizer → SyncTarget → FileApi → backend
I'm proposing a host-based LAN sync approach where a user can enable LAN Host Mode from the settings UI. This device would expose a lightweight local sync service on the network, while other devices can select LAN Sync as a sync target and connect to the host using its address. On the backend side, this would integrate with the existing sync architecture by introducing a new SyncTargetLan and FileApiDriverLan that translate the normal sync operations into network requests to the LAN host, allowing the current synchronizer to operate without major changes.
A few areas I’m currently researching and experimenting with:
- LAN discovery mechanisms
- Security considerations
- UI/UX design for enabling host mode and connecting devices
- Integration with the existing synchronization architecture
I'm currently proving some concepts with small POCs to validate parts of the design and better understand the trade-offs.
I’d also appreciate feedback on whether the host-based approach seems like a reasonable starting point, or if there are other architectural considerations I should explore.
Thanks!
May I ask, what would be the benefit of adding a host based LAN sync to Joplin? You could just host any open source WebDAV server on the local network (not exposed to the internet) and it would essentially offer the same?
My guess is that this proposal is intended to be hostless device to device sync
I think your point about using a local WebDAV server is valid and could provide similar functionality. My idea with the host-based approach was mainly about simpler UX, instead of installing and configuring WebDAV, a user could just enable something like “LAN Host Mode” in Joplin and other devices could connect to it directly, and this approach work without internet as well.
Regarding this comment, I wanted to ask: is the idea expected to be true P2P sync between devices? And if so, should this be another sync target option, or should it work alongside existing sync targets (for example syncing to cloud and LAN when available)?
Just keep in mind we already have the File System sync target which many people already use to perform LAN syncing. What does a host based sync model provide over using that existing target?
Also, I appreciate that this was made before the guidance post was pinned here but could you make sure update the draft to the template - GSoC 2026: How to Submit Your Proposal Draft
1 Like
So what this proposal is about is device-to-device synchronisation, without going through a third device. Maybe investigate what already exists? How is it usually implemented? Isn't SyncThing working like this?
2 Likes
Yes, Syncthing is a good example. I believe it has both a host mode and peer to peer mode. Technically Syncthing will allow peer to peer sync with Joplin via file system sync, but support for file system sync on mobile has severe performance issues on Android. So a built in peer to peer LAN sync would enable a smooth experience across both the desktop and mobile apps, and without the need to run any kind of background / foreground service on the mobile app
2 Likes
My approach with Host-Based LAN Sync is that it is easier to set up and provides better UX. It would be built directly into Joplin with integrated device discovery, built-in pairing, and a simple way to enable something like “LAN Host Mode”, without any external tools. And it also fits well with the current sync architecture which assumes that there is a sync target.
Based on your comments, it seems the intention of the project is closer to true device-to-device (P2P) synchronization.
I’ll look more into Syncthing and similar approaches and refine my proposal.
2 Likes