EN
Back to the archive

The archive · Product Ideas · Product decision · 2019–2022

Muse 2.0 puts local-first sync in a commercial whiteboard app, taking CRDTs out of the lab

Adam Wiggins and his small team shipped Muse 2.0 in 2022 with client-side CRDT sync as the core feature — 178 HN points.

Muse

The ideaMake local-first sync the core 2.0 feature: canonical data stays on-device, offline edits merge automatically via a Swift CRDT; the generic Go server only moves bytes.incremental

What it had to solve

Adam Wiggins co-authored the 2019 essay Local-first software at Ink & Switch, arguing that users lost ownership of their data when files moved from disks to cloud SaaS. He wanted to take CRDT technology out of the lab and prove its value in a commercial product people use every day.

How it works

Adam Wiggins is one of the authors of the 2019 essay Local-first software, which argued that moving from filesystems to cloud SaaS made users tenants of their own data. In 2022 he wanted to take the essay's core technology — conflict-free replicated data types, or CRDTs — 'out of the lab' and into a commercial product as a way to prove local-first in real-world usage.

That product was Muse, a whiteboarding and notes app for Mac and iPad, and the 2.0 release made local-first sync its flagship feature. The client sync engine is a CRDT written in Swift; the streaming sync server is generic Go with no knowledge of Muse's cards, boards or ink. One single state system manages transactional, blob and ephemeral data, so even ephemeral gestures like wiggling a card are only transmitted when another client is actually listening in real time.

For users, the payoff is behavioral. Edits made offline or on an unstable network merge automatically when devices reconnect, no matter how long the disconnect lasted. The canonical copy of every document stays on the device, with the sync server acting as a second-tier backup, and lapsed subscriptions revert to an 'alumni mode' where members can still navigate, copy and export everything.

The launch thread drew 178 points and 153 comments. Wiggins and engineer Adam Wulf explained schema versioning — every write carries a version and old values are coerced at read time — described encryption as a designed-for phase two, and absorbed a long user debate over whether subscriptions are acceptable for personal software at all.

Why it lands

  • Wiggins treated 2.0 as a field test: CRDTs had to work at production scale in a shipping app, not just in papers and prototypes.
  • Keeping the sync server generic — it shuffles bytes and knows nothing about cards or ink — made the architecture a step toward the generic sync services the local-first movement argues for.
  • Because canonical data lives on each device, a sync outage or even total shutdown never stops work, which flipped the usual lock-in objection on its head.
  • Persisting every write with a schema version answered the hardest CRDT objection, schema evolution, with read-time interpretation rather than painful migrations.

What it did

Posted as a Show HN on 2022-05-24, Muse 2.0 drew 178 points and 153 comments. Wiggins and teammate Adam Wulf answered technical questions in-thread — schema versioning, data access if the company disappears, deferred end-to-end encryption — while users called the iPad app 'finally better than paper', and the thread turned into a long, substantive debate about subscriptions and data ownership.

Write-upShow HN thread: Muse 2.0 with local-first sync

What you can take

Put research-grade infrastructure into a shipping product as the headline feature: real users, real data and production pressure are the only convincing proof a big idea works.

Since then

The Show HN read like a public roadmap: team members said end-to-end encryption was deliberately deferred to phase two and designed for from the start, described web publishing and better search as 2.x plans, and confirmed existing accounts kept full sync after the app was pulled from the Russian App Store. The thread's most heated argument was pricing — free up to 100 cards, with read, copy and export rights for lapsed members — which Wiggins defended as storage-based rather than feature-based, borrowing the model from Notion, Dropbox and GitHub.

Sources

spotted an error? The archive wants to know.

Your turn

You just read one. Describe the brief you are staring at, and see who has been given the same problem.

Free account · 3 free questions · no card

Related cases