Microtoll Engine pre-1.0 · the locks, pre-built

Start here

One sitting, no questions: a working end-to-end-encrypted app in front of you, then the packages in the order they build on each other.

1. Run the notes example (ten minutes)

git clone https://github.com/microtoll/engine
cd engine/examples/notes-app
docker compose up

Open http://localhost:8088. Sign up with a recovery code, write a note, share it by link, open the link in a private window as a second person, join, then remove that person and watch their copy go stale. The notes example page walks through it and says, honestly, what the server learned.

Then read notes.js: about two hundred lines, the whole model.

2. The packages, in order

  1. **crypto-core** — one call gives you a cryptoCore bound to your app's namespace. Everything else takes it.
  2. **identity** — createIdentitySession with your screens as callbacks: boot, register, unlock, lock, delete.
  3. **access** — createAccess with your three choices (the fields in a pointer, what goes in the second tier, who is owed it), then objects, members, links and rotation.
  4. **blind-store** — the server, as a library you mount handlers on or as the reference binary the examples run.

The invite example adds the fifth, **mailbox**: inviting a known person with nothing to forward.

3. Your own app

Either scaffold it from inside your editor with the MCP server (microtoll_scaffold writes the notes starter into an empty directory), or copy examples/notes-app and change three things: the collection (BLIND_STORE_COLLECTIONS), the namespace (the same string in createCryptoCore and BLIND_STORE_NAMESPACE), and the origins the server accepts.

4. Before you ship