
Preserve presence across generations.
A private place for the voice, photographs, and letters someone wanted to leave behind. Held on a device the family owns. Spoken in the words they actually said.
The original recording, kept. A voice clone that only reads what was actually written. Opt-in, recorded once.
Faces are matched on the device. Photos are captioned in the archival third person, using the names the creator chose.
Write something for a date, a moment, a feeling. The letter stays sealed until the right one arrives.
A few minutes inside the archive.
The screens a creator opens to leave something behind, and the ones a nominee opens to find it.
Hold what was said. Find it later. Pass it on.
Speak, write, or photograph. Save once.
A note titled in your own hand. A voice memo transcribed by Whisper, embedded for retrieval, and the original recording preserved for playback. A photo captioned by Gemma 4 in the archival third person — if a face matches someone you've named, the caption uses that name.
Ask the archive. Never get fiction back.
Every question is embedded and matched against the archive's vector index. The model isn't invoked until retrieval has produced something to point at. When it has, every claim is validated against the cited captures — and every answer carries the original next to it, in the words it actually came from.
Sealed letters wait for the right moment.
Write a letter "for when Sam feels lost" or "the morning after Sam's wedding." Five triggers: an absolute date, a life event, a mood the nominee taps, a Reflection that matches the letter's intent, or simply a first visit. The body stays sealed until then.
The work happens on your device, not somewhere else.
Their voice, cloned locally.
Fifteen seconds of speech, once. The clone reads notes and letters in their cadence — never inventing words, only voicing what was actually written.
A daily prompt that listens.
Each morning the archive offers a single line drawn from the creator's own register and what they've already captured. Not a streak. Not a nudge. Just a place to begin.
Photos that know their people.
Faces are recognised in the browser and matched to people the creator named. Captions use those names — and revise themselves quietly when a match later changes.
Sealed letters that wait.
Write a letter for a date, a life event, a feeling, or a first visit. The body stays closed until the right moment, then surfaces with the wax-seal ceremony it deserves.
Install to home screen.
Heirloom is a progressive web app. Add to home on a phone for a full-screen, offline-capable companion that lives next to the family photo album.
Letters that whisper.
Notifications arrive only when a real moment does — a date, a release, a letter unsealing. The contents stay inside the archive.
The system refuses to invent. By design.
Five checks run between a question and an answer. When any of them fails, the system says so plainly — in the same sentence, every time.
Retrieval before model.
The model isn't asked anything until the archive has found something to point at. If the archive is empty on a topic, the model never speaks.
A floor, not a hope.
Answers ground on either a strong vector match or a literal overlap with the question. One alone misses too much.
Every citation, checked.
Each claim in an answer must point at a capture that retrieval actually returned. A citation outside that set fails the whole answer.
No first person.
Any answer that says I or my outside a quote fails. The system describes what was said. It does not become the person who said it.
One refusal sentence.
When the contract fails, the answer collapses to one line, the same every time: "I don't have that in the archive. Try asking another way?"
Local-first. Visible, not just true.
Heirloom installs on your own laptop. The model runs there. Your archive lives there. No accounts, no analytics, no third parties — and the few times anything is sent to the network at all, the list is short and named.
- The modelDownloaded once, then runs on your device
- Your archiveStays on your device. Never sent anywhere
- NotificationsOpt-in. A title arrives; the content does not
- Anyone elseNo analytics. No tracking. No third parties
A real archive, pre-loaded for you.
Carl Sagan's writing, public photographs, and a single sealed letter — for when you feel insignificant. Open it the way someone who loved him would. Ask the archive what he said. Read what comes back.
Local everywhere. Nothing to sign up for.
macOS
AvailableA signed .app bundle that ships the model, the database, and the voice clone alongside it.
Progressive web app
AvailableOpen in any modern browser, add to home screen. Works fully offline once the page is cached.
iOS native
Coming soonOn the roadmap. The model will ship in the app itself, so the offline story stays intact.
Android native
Coming soonSame story as iOS — bundled model, no server in the loop, your archive on your phone.
The parts, for the curious.
You don't need to know any of this to use Heirloom. The list is here for the people who like to know what's underneath.
Everything below runs on the same device the archive lives on. The only model weights downloaded from the internet are from ollama.com, pulled once on first launch.
Gemma 4
Synthesis · vision · captions
Ollama
Local model runtime
EmbeddingGemma
Retrieval embeddings
Whisper.cpp
Speech to text
LuxTTS · ZipVoice
Opt-in voice cloning
face-api.js
Face match, browser only
Postgres + pgvector
Vector search at home
SQLite + sqlite-vec
Same shape, in the .app
One encrypted file holds your whole archive — and only your passphrase opens it.
Captures, transcripts, embeddings, photos, voice profile, sealed letters, the release schedule. Compressed, then sealed with argon2id + ChaCha20-Poly1305. Lose the passphrase, lose the archive. The format is open and lives in the source.
Open source, on GitHub.
The whole product, including the format your archive exports to. If we are not here tomorrow, what you have is still yours.