Skip to main content

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.

Device and server roles

Lasco app (on mobile / desktop)
LogicEncrypt/decrypt, apply operations, build local state
upload / download
Server
StorageStores encrypted photos and videos.

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:

Media Blobs
Your photos and videos, encrypted at rest
media/YYYY/MM/{UUID}.dataEncrypted original media
media/YYYY/MM/{UUID}.thumbEncrypted thumbnail
Operation Log
Tracks every change you made, for example photo names, albums etc. Works in a CRDT way to prevent conflicts
operations/{op_uuid}.opEncrypted, immutable operation
Key Material
Encrypted keys used to unlock your library
salt.binArgon2id salt
vkk_{user}.encEncrypted VKK
lmk.encEncrypted LMK keychain

Concrete example

When you import "IMG_4823.jpg" and name it "Beach Sunset" in the "Summer 2026" album, the server receives:

📁media/
📁2026/
📁04/
🔒3f2a1b4c-9d8e-4f7a-b2c3-1d5e6f7a8b9c.dataencrypted media
🔒3f2a1b4c-9d8e-4f7a-b2c3-1d5e6f7a8b9c.thumbencrypted thumbnail
📁operations/
🔒9a11c2d3-4e5f-6a7b-8c9d-0e1f2a3b4c5d.opMediaCreation
🔒9a12d3e4-5f6a-7b8c-9d0e-1f2a3b4c5d6e.opMediaPropsUpdate: name="Beach Sunset"
🔒9a14e5f6-7a8b-9c0d-1e2f-3a4b5c6d7e8f.opAlbumMediaAdd: album="Summer 2026"
note

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:

  • fetch — Downloads operations and media blobs from a remote server to your device.
  • push — Uploads new operations and media blobs from your device to a remote server.

This allows you to:

  • Push to multiple file servers to achieve replication.
  • Back up to a hard drive by simply plugging in your USB drive and pushing to it.