How It Works
General idea
Lasco is just a client-side app. All the logic happens on your device. It just pushes data to remote file servers (think S3 servers, NAS, usb harddrives). There's no code running, no Docker containers to manage, and no dependencies to keep updated.
What is stored on the server
The server stores encrypted blobs for media and operations, along with key material. There are three types of files stored in the remote:
Concrete example
When you import "IMG_4823.jpg" and name it "Beach Sunset" in the "Summer 2026" album, the server receives:
Operations are not stored one file per operation like in the example. They are aggregated dynamically into op files.
Remote concept
Lasco interacts with remote servers through two operations:
fetchDownloads operations and media blobs from a remote server to your device.pushUploads new operations and media blobs from your device to a remote server.
This allows you to push to multiple file servers to achieve replication, or back up to a hard drive by simply plugging in your USB drive and pushing to it.
The sync algorithm, and data representing the library, working with CRDT is such that there is no possible conflict. A correct state will always be reconstructed.