The Infrastructure of Memory
Where your memory actually lives
Three storage layers, each with one job. The encryption key belongs to the person, not to us: content is sealed before it leaves our perimeter. The permanent layer is paid for upfront and does not depend on whether our company exists tomorrow.
The journey of one sentence, from Enter to permanent storage
What physically happens to a message while you are reading the reply to it.
The first milliseconds
You send a message. It lands in the working layer — a fast key-value store holding the context of the current session: the last few turns, who the other party is, the things already clarified that nobody should have to ask twice. This layer exists for one property: speed. An assistant that walks to long-term storage for every word turns a conversation into an exchange of letters.
That is why the first layer has a short memory in the literal sense. It is built for minutes and hours, not years. If the system consisted only of this, every morning would start with introductions again — which is precisely how most assistants you have used behave.
So the first layer is never the only one. It is a shop window, not an archive.
It is also the layer most easily mistaken for memory. What many products call “remembering you” is really this layer's window opened a little wider: the session ends, the window closes, and everything starts from zero again.
What moves to the second layer
In parallel, meaning is extracted from the conversation. Turns are converted into vectors — numeric fingerprints of significance — and stored in Postgres with the pgvector extension. This is not a summary and not a compression: a vector does not hold text, it holds the position of a thought among other thoughts.
This is where the ability to remember something six months later comes from. When you ask “we agreed about the doctor, didn't we”, the system does not grep for the word “doctor” across your files. It looks for conversations close in meaning to your question and lifts them into context.
The second layer is the only one that can answer “what do you know about me”. The first is too short-lived; the third is too still — it stores magnificently and is entirely unsuited to being rummaged through.
One more thing worth stating: a vector cannot be read back as speech. It is a string of coordinates that can tell you how close two pieces of content are, and it cannot be turned back into text. So even someone who got hold of this database would be holding a pile of numbers.
After an hour, or after ninety kilobytes
The permanent layer is not written after every message — the transaction count and the storage cost would grow for no benefit. Two rules run at once. First: once an hour, a copy of the personal folder goes up. Second: if the conversation file passes 90 KB, the upload starts immediately, without waiting out the hour.
The point of the second rule is protecting a long conversation. An hour of dense talk easily produces more than ninety kilobytes of text, and waiting for the full hour would mean leaving the richest part unsaved. The threshold fires ahead of the timer in exactly the cases where a loss would hurt most.
Neither rule requires the person to do anything. There is no save button — not because someone forgot to build it, but because any manual button eventually goes unpressed. Memory that depends on the owner's discipline is not memory, it is a habit.
This also fixes how much is lost in the worst case: at most the last hour, and only the part of it that has not yet reached ninety kilobytes. We put the number here because any claim of “zero loss” has to explain first how it was counted.
Encrypted before it leaves
Before upload, the package is sealed with AES-256-GCM. What matters is not the key length in itself but the order of operations: encryption happens before the data leaves the protected perimeter, not “on the storage side”. What travels to the network is an array of bytes and an integrity tag — nodes accept them without knowing what is inside.
GCM mode adds integrity checking to encryption. Change a single byte inside an encrypted package and decryption does not return slightly damaged text — it refuses to run. Tampering cannot disguise itself as a glitch, which is exactly the behaviour you want from an archive somebody will open in twenty years.
The key is not stored alongside the data and is not transmitted with it. That is the only reason we can honestly say we do not read your conversations: not “our policy forbids it”, but “we have nothing to read it with”.
It is worth marking the edge of that statement: encryption protects the copy that has already been packed and uploaded. A conversation happening right now has to reach the model in clear text, or the model cannot answer. We say so plainly instead of covering it with a blanket “encrypted end to end”.
Upload, receipt and the way back
The encrypted package goes into the permanent layer, and it is paid for once — upfront, for the whole storage term, rather than monthly. In return comes a transaction identifier, and a compressed NFT is written on Solana: a compact receipt stating that a given portion of memory exists, of a given size, with a given timestamp.
The receipt does not contain the conversation. It contains proof. The difference matters: proof can be shown to anyone — an heir, a lawyer, yourself twenty years from now — without revealing a single line of content.
The way back is shorter. The owner arrives with the key, the system pulls the package by its identifier, decrypts it and hands it over. If our dashboard is unavailable for any reason, the package can still be retrieved through a public gateway and decrypted locally, on your own machine.
The way back is deliberately built to route around us, for a plain reason: people come for their memory at the least convenient moments — a move, a change of country, an illness, a funeral to arrange. On days like that, every additional party you must contact is one more place where things get stuck.
Why it has to be three layers
Pushing three jobs into one store sounds simpler, and in practice each of them ends up done badly. To be fast, data has to sit next to the computation, and a place like that is volatile by definition. To be searchable by meaning, content has to become vectors with an index, and an index has to be rebuilt often. To last to the end, it has to be written to a medium that cannot be rewritten — and what cannot be rewritten cannot be reindexed.
The requirements fight each other, so they were separated: the first layer trades lifespan for speed, the second trades immutability for understanding, the third trades flexibility for immutability. None of them is enough on its own; together they make a memory.
The split has a by-product: the credentials split with it. The keys that run the fast cache do not open the vector database, and the vector database holds only numbers. Even if somebody gets through one door, a person's life does not add up from it. Security here is not a shell bolted on top but the natural result of a division of labour.
This is also why we do not say “we store your data in the cloud”. The cloud is a blanket word, whereas each of these layers has a specific way of failing and a specific remedy for it. Saying those out loud is more useful than offering a reassuring noun.
“Six in the morning, a building with no name in the middle of a field. It hums as if breathing, and inside is all of human memory that made it through the night.”
CODE: SYMPHONY, “First Light On A Server Farm”
“Memory cannot be promised. It can only be paid for in advance and built so that it outlives the person who built it.”
— Maksim Valentinovich Galatin, Architect
Why it cannot be switched off
Independence is not a slogan; it is a set of unglamorous engineering decisions.
One provider is one point of failure
Any service holding your memory is a contract with a legal entity. Contracts get terminated, entities go bankrupt, jurisdictions impose restrictions, and providers change storage terms retroactively. None of this requires anyone's bad intent: a change of ownership is enough.
That is why the third layer is deliberately placed where there is no single owner: a network where independent nodes hold copies of the record and the storage fee has already been paid. We are not a “partner with a guarantee” there — we are simply one more participant who wrote something into it.
The practical consequence is simple. To erase your memory it is not enough to close our company, revoke our licence or block our domain. You would have to switch off a distributed network, and that has no master switch and no office where the request could be filed.
None of this means we do not matter. The first two layers are still run by us, and how comfortably they work depends on how well we build them. The difference is only this: if we build badly, you are inconvenienced; if we are gone, you do not lose the memory.
Economics instead of a promise
Storage costs money, and “we will pay forever” is worth nothing without a source. So the source is built into the economics of the ecosystem: 65 % of everything passing through the Solana router goes to the treasury and is spent buying AR — the resource of the very network where the permanent layer lives.
The rest is split just as rigidly: 5 % to the Founder's Fund, 5 % to burn, and 15 %, 7 % and 3 % to partners at the first, second and third levels. If a level has no partner, that share does not settle with us — it goes to burn.
The ecosystem token is $GALATIN on Solana, with a hard-capped supply of 10 000 000 000 and not a single unit beyond. The point of the cap is not speculation: it is that the storage fund cannot be topped up by printing, only by real payment flow.
We spell the whole chain out on purpose: storage that calls itself permanent but cannot say who pays for it in ten years is permanent only for the length of the sentence. Here it can be said — where the money comes from, where it goes and in what proportions it is split.
If we disappear
Assume the worst: the service stops. The first layer vanishes instantly — it was built for minutes and there is nothing there to lose. The second, the semantic one, is a database that can be exported; it is reconstructible, because vectors can be recomputed from the source records.
The third does not change at all. Encrypted packages stay in the network, transaction identifiers stay public, and the receipts on Solana do not go anywhere. To recover the memory an heir needs two things: the key and the list of identifiers.
That is why we insist the key and the list are exported to the owner in advance, rather than “on request in a difficult moment”. A request assumes there is someone left to process it — and we are building a system that works when there is not.
The order matters too: hand over the ability to retrieve first, and only then talk about other features. In a system that ties people in first and promises to add an exit later, the exit usually never gets added.
What the person is left holding
The encryption key. We do not keep it, which means losing it is unrecoverable: without the key nobody restores the content, us included. That is the flip side of nobody reading the conversations, us included. The two are not sold separately.
The list of transaction identifiers. An ordinary text file with which anyone with an internet connection can locate the encrypted packages through a public gateway, bypassing our site and our dashboard entirely.
An export in open formats. Conversations remain text, not a proprietary database that “only the app knows how to open”. Portability is a property of the infrastructure too, not a courtesy from support.
Together these three make a very plain test: if we all disappeared tomorrow, would what you are holding be enough to read the memory back. The answer has to be yes — and if it is not, the fault is in our design, not in your failure to keep a backup.
A few things we do not do
We do not keep a backup of the key. From the outside that looks like a missing courtesy, but the moment we take it on, everything said above about “we cannot read it” is cancelled at a stroke: any mechanism that returns the key to you can be triggered by somebody else using the same words.
We do not promise “full deletion from the blockchain”. Nobody can erase bytes from an immutable network; what can be done is destroying the key, leaving the package as noise. A vague phrase looks like an extra guarantee, while in fact it is one honest sentence less.
We do not turn saving into something the user has to keep in mind. There is no sync button and no reminder to “export your archive this month”. A backup that depends on a person remembering is, statistically, no backup at all.
Nor do we intend to sell “memory” as an emotional promise. Everything here is checkable: the encryption algorithm, the writing rhythm, the place of storage, the source of the money, the method of verification. The rest — what those conversations actually meant — belongs to the people who had them, not to the infrastructure.