Domain

Memory

Every conversation I have with an AI assistant, kept as evidence and distilled into what is worth remembering.

I make a lot of decisions in conversations with AI assistants. Most of them used to vanish when the conversation ended, and the next session started from zero. Memory is the domain that keeps them.

It is the source of truth for what has been said and decided, whichever tool I was using. Any harness that talks to it holds only a copy, so changing harness loses nothing.

Two layers

Evidence: every session
Every conversation with an AI assistant, from every tool, kept as a transcript. Each one is sealed with a hash when it is written, and a session that no longer matches its seal counts for nothing. A long conversation is a chain of sessions, never one file that grows.
Knowledge: what was worth keeping
Decisions, preferences, open threads and facts, each citing the sessions it came from. Most sessions produce no knowledge at all, and that is correct.

From conversation to knowledge

A conversation with an AI assistant

sent by the runtime and the console, or converted from Claude Code

Evidence

Sessions

sealed with a hash when written; a session that no longer matches its seal counts for nothing

Compiler

a model reads the sessions nobody has read yet and proposes what is worth keeping

Review queue

proposals waiting for me

I approve or reject

nothing becomes knowledge until I say yes

Approved

moved into knowledge byte for byte, citing its sessions

Rejected

never becomes knowledge

Callers read through the interface

Search across sessions and knowledge

weighted fields and stable ordering, no model in the read path, every result with the exact citation to use

How a conversation becomes knowledge. A model can only propose, and nothing is kept as knowledge until I approve it.
  1. 01

    Sessions arrive

    The runtime and the console send each turn as a session. Claude Code sessions can be converted into the same format.

  2. 02

    A compiler reads them

    A model reads the sessions nobody has read yet and proposes knowledge. It writes only to a review queue, never to knowledge directly.

  3. 03

    I approve or reject

    Nothing becomes knowledge until I say yes. Approving moves the proposal across byte for byte, so what I read is exactly what is kept.

  4. 04

    Callers search it

    Other parts of AlanOS search sessions and knowledge through the domain's interface. Every result comes with the exact citation to use.

The boundaries

Transcripts never leave the machine
Reading a raw session is only possible on local interfaces. That is enforced in code, not left to a prompt.
A model never writes the record
The harness sends transcripts itself. The compiler proposes; only my approval writes knowledge.
Search is deterministic
Weighted fields and stable ordering, with no embeddings and no model in the read path, so the same question always finds the same things.

Where it goes next

Today the compiler runs when I start it. Next, the runtime should be able to schedule it, rejected proposals should teach it what I turned down, and search has to stay good as the sessions grow from tens to thousands without sending anything off the machine. Threads should stay current from the sessions that touch them, not by hand.

Memory is where AlanOS learns from how it was built. The conversations that shaped each decision are kept, and the decisions themselves are what the next session starts from.