Database
Database
any is a document database that lives on your device, syncs through an end-to-end-encrypted network, and merges concurrent edits with CRDTs. This section covers the data model and the HTTP surface for reading and writing it.
The model in one picture
account
└── space encrypted, shared with members
├── objects collection one row per object: its property values
│ └── object carries types in any.types
│ ├── properties record[typeId][propId]
│ └── datasets chat_messages, editor_blocks, <runtime>…
└── types property definitions + dataset schemas
- A space is the unit of sharing and encryption. Every member holds the same data; every write is a change in a per-object DAG that syncs to everyone.
- An object is a document. It carries a list of types in
any.types, property values keyed by<typeId>.<propId>, and any number of per-object datasets (collections of records that belong to that object — chat messages, editor blocks, or a runtime dataset you declare). - A type declares properties (kind, format, scope) and optional dataset schemas. Built-in types (
chat,editor,page,nav) exist in every space.
One read path, many write paths
Reads always go through the windowed query primitive: POST /v1/spaces/:spaceId/objects/query for the cross-object collection and POST /v1/spaces/:spaceId/query for one object's dataset. Each has a /subscribe twin that returns the same snapshot plus a live stream of changes (see Subscribe). Writes go through purpose-built endpoints — object create, property set, generic /modify, and the built-in types' own handlers — and every one of them returns the same {versionId, changeId, recordIds} receipt.
Why it matters. There is no server between you and your data. Queries run against a local any-store database, so a read is a local disk read, a write is immediately visible, and both work offline. Sync and merge happen underneath — the query you ran a second ago keeps answering while peers catch up.
Where to start
- Spaces — create one, read its metadata, understand its lifecycle.
- Objects — create objects, place them in the tree, delete them.
- Types and properties — define the shape of your data.
- Reading data — the filter grammar, sort, paging.
- Writing data — property writes,
/modifyops, the write receipt.