Skip to content

← Back to projects

LOUST

LOUST-PRO/LinkMarks

Period: Dec 2024 —

Shipped

The challenge

Browser bookmark sync was cloud-locked — Pocket, Raindrop, the rest — and required a central server. I wanted bookmarks that synced across my devices without a coordinating server and with no merge conflicts when I edited on two devices between syncs.

My role

I built a CRDT-backed bookmark manager in Rust with local-first storage, opportunistic sync, and a v2.2.0 release shipped across seven LOUST-PRO crates in August 2026.

What I did

  1. 01

    CRDT reconciliation across devices

    Why: Conflict-free merge means no merge-conflict recovery flow. Every device converges to the same bookmark set regardless of which edits arrived first.

    Trade-off: More storage per bookmark than a plain list, because the merge metadata is part of the record. Convergence is the prize — losing a bookmark on a sync conflict is worse than the storage cost.

  2. 02

    Local-first storage

    Why: Bookmarks live on disk in a portable format. Sync is opportunistic rather than authoritative, so the local copy stays usable even when the network is down.

    Trade-off: Larger local footprint than cloud-only bookmarks. The offline guarantee earns the disk space.

  3. 03

    Opportunistic sync

    Why: Devices on the same LAN sync fast over peer discovery; remote devices sync via an optional relay when one is available. The sync path is opportunistic, not mandatory.

    Trade-off: The relay is optional infrastructure to maintain. For a single-author project the relay is trivial; for a multi-user product it would be a real cost.

What changed

  • Sync conflicts

    Before: Occasional (cloud services with last-write-wins)

    After: None (CRDT guarantees deterministic merge)

  • Cross-device convergence

    Before: Minutes (cloud roundtrip)

    After: Under 1 second over LAN discovery

  • Storage portability

    Before: Cloud-only — no local copy

    After: On-disk portable format, sync is optional

Trade-offs

I gave up the convenience of cloud-only for the offline guarantee. For research-workflow substrate, the guarantee wins — losing bookmarks on a sync conflict would be worse than the local disk cost.

What I learned

Local-first is not just an architecture choice — it is an availability guarantee. Once the substrate works without the network, the network becomes a convenience instead of a dependency.

Stack

  • Rust
  • CRDT
  • bookmarks
  • local-first

Repository

https://github.com/LOUST-PRO/LinkMarks

Evidence

← Back to projects · curated 2026-09-20