Documentation menu
Documentation
Overview
Overview
MoliSync is a self-hosted control plane and two clients for moving text, images and files between devices you control. Identity comes from client certificates; transfers prefer a direct LAN/VPN link and fall back to a zero-disk relay.
What runs where
Three components share one versioned protocol:
| Component | Stack | Role |
|---|---|---|
| Control plane | Go · Docker | Trusted-proxy authentication, device registry, WebSocket presence, records and blob storage. |
| Windows client | .NET 8 · Avalonia | Three-tab cloud sync, certificate-store access, Range downloads, P2P send and receive. |
| Android client | Kotlin · Compose | KeyChain mTLS, share intents, a foreground sync service and MediaStore archiving. |
How a transfer works
- Your reverse proxy verifies the client certificate and overwrites the identity headers.
- The control plane maps the certificate fingerprint to a stable
DeviceIDand issues a single-use32-bytesession ticket. - Both peers race LAN and VPN candidates in
300 mssteps. - A direct link completes mTLS and streams
49-byteframes. If nothing answers by1.2 s, the server relays the same session withio.Copy. - Text and threshold-sized files can also be stored durably: SQLite metadata plus a blob directory.
Current limits
- Records never expire automatically, and there is no quota.
- End-to-end P2P still needs real-network regression testing.
- Client auto-update is deferred.
- No repository-wide license has been declared yet.
Status
Version 0.5.x, under active development. Treat the deployment notes as a working baseline, not a production guarantee.
Start here
- Deploy the control plane behind your own proxy.
- Choose a Windows or Android client.
- Read the wire protocol before writing another client.