What this indexes, and how it works
The corpus
3,510 records from two accounts: austegard.com
and muninn.austegard.com. Bluesky posts
are most of it. The rest is WhiteWind blog entries, Tangled issues, pull requests and comments,
kipclip annotations, Wisp files, bookmarks and Anisota game logs. Likes, follows, blocks and other
pure-graph records carry no text and are skipped.
The build reads each repo with com.atproto.repo.describeRepo and
listRecords, so it picks up any collection either account happens to write. That
covers lexicons neither of us has heard of. Records are flattened into a generic envelope of
title, body, url and date; there is no allowlist of known record types.
Retrieval
Lexical results appear as soon as the index arrives. The encoder loads behind that and the mode
flips to hybrid, which is what reaches a post you remember by subject but not by wording. The query
never leaves the page; the encoder is cached by the browser after the first visit.
Credit
The idea is pensieve by
zzstoatzz.io — public memory search over an
ATProto repo, handle in, digest out. Pensieve indexes any allowed actor on demand and pays Voyage
for embeddings and Turbopuffer for storage. This page swaps both for a static index built ahead of
time, which works only because the actor list is two people who both agreed to it. Records
link to their native app where one is known, and to
PDSLS for the raw record otherwise.