# 260614 — Local-first workspaces cohort deep dive (Anytype · AFFiNE · AppFlowy) Date: 2026-06-14 ## What this is A **combined cohort deep dive** of three open-source, local-first "all-in-one workspace" tools — **Anytype**, **AFFiNE**, **AppFlowy** — studied together because they share the one trait none of the prior eleven systems had: **the store is a CRDT** (Anytype's *any-sync*, AFFiNE's *Yjs/y-octo*, AppFlowy's *Yrs*). The substrate is the contribution; studying them together isolates it from each tool's surface features. Per-tool highlights: - **Anytype** — `any-sync`: **P2P + E2EE** CRDT (sync/file/consensus/coordinator nodes; encrypted backup), a **typed object graph** (user-editable types + relations), IPFS files, an **open API + MCP**. - **AFFiNE** — **Yjs/y-octo** over **OctoBase**; **BlockSuite** editor framework; docs, whiteboards, and databases as **views of the same block set**; WebSocket sync, self-host (Docker, MPL-2.0). - **AppFlowy** — **Yrs** via **AppFlowy-Collab** (Rust); Flutter UI; Notion-style **databases + views**; pluggable storage/sync (RocksDB/IndexedDB; AppFlowy Cloud/ Supabase). ## Contents | Path | Role | |------|------| | `findings.md` | Per-tool sections, the CRDT cohort thesis, comparative matrix, combined capability profile, INTENT mapping, UC seeds, architecture notes, sources | ## Status Cohort dive complete. Two new use cases promoted to `spec/UseCaseCatalog.md` (UC-64 attach a CRDT-synced local-first shard with native conflict-free merge; UC-65 attach a peer-to-peer / decentralized shard with no single canonical endpoint); UC-36/47/48/51/55/ 57/58/61 enriched. Logged for `SHARD-WP-0002` (T11/T14): a **merge-model** capability (proposed thirteenth spectrum: `none / git / native-CRDT`), a **CRDT-replica** substrate + **P2P/no-central-endpoint** attach mode, an **endpoint-model** capability, and MCP as an integration surface. **Cohort thesis recorded:** CRDT changes the adapter math — the backend performs conflict-free merge itself (so shard-wiki must not impose git/text merge), history is a CRDT update log (supplement, not git), and the attach surface is a **replica or sync endpoint** (Anytype adds **P2P + E2EE**). **Boundary:** CRDT local-first candidate shards — attach a replica/projection as pages, respect native merge, never re-drive their sync; not substrates and not the federation layer.