Sync: your notes on every device

Alexandria sync keeps a workspace available on multiple devices. It is end-to-end encrypted and zero-knowledge: the server stores ciphertext, an encrypted manifest, and a non-reversible token hash. Your passphrase and keys never leave your devices.

Sync v1 is file-level blob sync for a single user on a trusted LAN or self-hosted network. Conflicts use last-write-wins by modification time.

Run the server

Run akb-sync-server on an always-on machine:

akb-sync-server --bind 0.0.0.0:4000 --data-dir /var/lib/akb-sync

The server stores encrypted workspace data under the data directory. It does not store plaintext notes, file names, keys, passphrases, or raw tokens.

If the server's data volume fills up, Alexandria reports sync server storage is full. Free space on that volume, then retry the sync.

Clone a workspace

On the first device, create the vault and register the workspace:

akb --root ~/akb/mykb sync clone mykb http://HOST:4000

Sync takes its key from the vault, so encryption comes first. On the first device:

akb --root ~/akb/mykb vault create --name mykb
akb --root ~/akb/mykb sync clone mykb http://HOST:4000

Use a strong passphrase. On every other device, use the same vault name (mykb) and the same passphrase:

akb --root ~/akb/mykb vault create --name mykb
akb --root ~/akb/mykb sync clone mykb http://HOST:4000

The key is derived locally from the vault name and the passphrase, so every device reaches the same key without ever sending it anywhere.

Sync day to day

Push local changes and pull remote changes:

akb --root ~/akb/mykb sync

Continuously sync on changes and poll for remote changes:

akb --root ~/akb/mykb sync watch

Preview what sync would do without transferring data:

akb --root ~/akb/mykb sync status

List configured workspaces and what sync would do for each:

akb sync list

Encryption and the vault

Encryption is a separate feature and works without a server: akb vault create, unlock, lock and status manage it, and the desktop app exposes the same thing under Settings, Encryption. Sync simply borrows the key from the unlocked vault, which is why the vault name must match the workspace name you sync under.

The passphrase is the only secret you share between your own devices. Unlocking caches the key for five days so repeated syncs do not prompt every time; after that, or after an explicit lock, enter the passphrase again. Change how long with akb vault ttl 12h, or in Settings → Encryption — it is stored per workspace and syncs to every device. While the vault is locked sync refuses to run rather than falling back to anything weaker.

What sync includes

Sync transfers only the workspace layout: regular files under notes/, media/, and trash/, any relative in-workspace symlinks within those trees, and the top-level preferences.json and secrets.akb (the encrypted vault envelope, so secrets follow you to every device). Caches (including the derived index/), .git/, dotfiles, and stray files are ignored.

v1 caveats