Anytype

anytype.io

ALMOST

A weekend of work, and real gaps remain.

A local-first notes and objects application: everything is stored on your own device, encrypted, with peer-to-peer sync between them and a paid tier for a hosted relay and a name.

Promptfree, for everyone, and the only version there is
Build the local-first notes application I actually need instead of Anytype — and understand what makes this ALMOST, because the hard part is not the notes.

**It is convergence.** Two devices editing offline, then meeting, and agreeing on a result without losing anything — with no server in the middle to arbitrate. That is a conflict-free replicated data type problem, and writing one yourself is a research project.

STACK
- An existing CRDT library. Do not write one — getting it subtly wrong loses people's writing, quietly, months later
- A PWA or a native application, with SQLite on device
- An optional relay: Node 20+ with Fastify, storing ciphertext only
- Caddy in front

THE SIMPLER SHAPE THAT USUALLY WINS
- Files on disk, in Markdown, with an existing sync tool between devices. Syncthing does peer-to-peer sync of a directory for nothing, and a conflict becomes a second file rather than a lost paragraph
- That covers the great majority of what people want from this, and it is an afternoon
- Build the CRDT version when several people edit the same note at once, which is a different requirement

THE DATA MODEL, IF YOU BUILD IT
- objects: id, type_id, created_at, updated_at, deleted_at — a page, a task, a person and a bookmark are all objects
- types: id, name, icon, layout, relation_ids_json — defined by the user, which is the idea worth copying
- relations: id, key, name, format — text, number, date, checkbox, object reference, file
- values: object_id, relation_id, value_json
- blocks: id, object_id, parent_id, position, kind, content_json — the page content
- devices, keys, and a change feed per object
- Everything encrypted on the device before it is stored or sent

ENCRYPTION AND SYNC
- Content encrypted with a key derived from a recovery phrase, on the device. The relay stores ciphertext and can read nothing
- **The recovery phrase is the whole security and the whole risk.** Lose it and the data is gone with no reset. Say so at setup, in plain words, and make the user write it down and confirm it
- Sync as an ordered change feed per object, applied through the CRDT. Never last-write-wins on a document
- A conflict that the type cannot merge produces both versions and says so, rather than choosing

WHAT LOCAL-FIRST ACTUALLY REQUIRES
- The application works fully with no network, forever. Not degraded — fully
- Search, filtering and every view run against the local store
- Sync status visible: what has not reached which device, and when the last successful sync was. A sync you cannot verify is a sync you do not trust
- Export everything as Markdown and JSON in one command, and test that the export is complete rather than assuming

OPERATIONS
- If there is a relay: .env with DATABASE_PATH, STORAGE_PATH, BASE_URL, SESSION_SECRET; migrations on boot; nightly backup of ciphertext
- No analytics in the application. Not one event

WHAT MATTERS MOST
Use an existing CRDT library, and check first whether files plus Syncthing answers the question. If they do, that is the build — and it is an afternoon rather than a year.

What you lose

  • Peer-to-peer sync that converges without a server, which is a genuinely hard distributed problem
  • A relay for the case where two devices are never online at once
  • Applications on every platform with the same local database
  • An object model where a page, a task and a person are the same kind of thing

If you would rather not build

  • Syncthing plus a directory of Markdown, which is the cheap answer to the same question
  • Logseq — local Markdown files with an outliner on top

The escape hatch

open source · no votes, no paid placement

Anytype

$0

The application itself, open source, with self-hostable sync.

anyproto/anytype-tsfree · open source

Yjs

$0

A mature CRDT implementation for shared editing.

yjs/yjsfree · open source

Why this verdict

our own opinion · changed only by a person

52/100

Verdict kinda at 52: the object model is a schema and the editor is ordinary, but offline convergence between devices is a research problem, and the honest first move is files plus an existing sync tool.

History

tracked since 14 Aug 2026 · nothing is ever overwritten

Interest · last 30 days

Nothing recorded yet. This chart fills in once the page has visitors, votes or prompt copies — it will not draw a flat line to look busy.

Questions about Anytype

answered from the record above

Is Anytype free?

No — the plan we track is $8.33 a month. Builder from around $99/year, which is about $8.33/month; the application is free to use with local storage and self-hosted sync.

Can you replace Anytype by building your own?

ALMOST. A weekend of work, and real gaps remain. Replacement score 52 out of 100, build time a weekend. Read what you lose before you decide.

How much does Anytype cost?

$8.33 a month on Builder — $99.96 a year. Recorded 14 Aug 2026.

What do you lose by replacing Anytype?

Peer-to-peer sync that converges without a server, which is a genuinely hard distributed problem; A relay for the case where two devices are never online at once; Applications on every platform with the same local database; An object model where a page, a task and a person are the same kind of thing. If any of those carry weight for you, keep paying.

Is there an open-source alternative to Anytype?

Yes: Anytype, Yjs. The prompt on this page is for when you want it your way instead.

Related entries

same category first, most replaced first

All 32 in Notes, docs & writing

Not sending yet

Every week, something stops being worth paying for.

New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.

free forever · no tracking pixel · stored here, never passed to anyone

Esc