The founding distinction: a memory vs. the place to put it
Everything in FaultLine hangs on one line. Get it right and the rest follows.
Most systems that call themselves "AI memory" blur two very different things together. FaultLine keeps them strictly apart, and that separation is the whole idea.
What the user told you
- e.g.
- Spot the dog · "my favourite colour is red" · a case date · an IP address · a person's name
- made by
- you — user truth, grounded, and never modified by the engine
- it is the
- content
Where a memory is filed
- e.g.
- dog → canine → mammal → animal
- made by
- the engine — the type-and-class hierarchy ("what a thing is"), built & grown automatically
- it is the
- structure
You file a memory at a place, and you walk the place to retrieve it. A name or a specific value never becomes a place; a place is never user content. The engine may grow and infer places freely — because a place is only an index, inferring one can never corrupt a memory.
The hard line is the truth-firewall. Because a memory is grounded user content filed at a place, and the hierarchy is only the place-index, the part of the system that reasons and grows structure is physically separated from the part that holds what is true. The engine can be clever about where things go without ever being clever about what they are.
Why a validated graph beats fuzzy vector search
The common pattern for AI memory is a vector store: embed everything, and at recall time return the nearest fuzzy match by cosine similarity. It is fast, and it is a genuinely useful tool — but "nearest" is a guess. It has no notion of truth, no types, no way to say "you never told me that." When the nearest neighbour is close-but-wrong, you get a confident hallucinated memory.
FaultLine takes the other road. Facts are typed, validated, and grounded as rows in a relational graph. Recall is a deterministic walk of real connections, not a similarity score. If a fact isn't there, the honest answer is "you haven't told me" — the system refuses to guess.
PostgreSQL holds the truth
The structured knowledge graph in PostgreSQL is the long-term, authoritative memory. Every answer resolves to a real row you could point at.
The vector index is a scratchpad
The vector store (Qdrant) is a derived, short-term lane for things not yet classified — a place to revisit, never the source of truth. It never overrides the graph.
This is a deliberate inversion of the usual arrangement. Most systems make the vector store the long-term library and keep a small working context as short-term. FaultLine flips it: the graph is long-term and authoritative; the vector is the short-term scratchpad. Truth lives in structure, not in a distance metric.
Less context, not more — return the fact, not the haystack
There's a second consequence, and it's a big one. The common approaches to giving a model memory all work by adding to the prompt: re-send the whole conversation history every turn, or retrieve a pile of similar-looking chunks and paste them in. Both stuff the model's context window — and that is expensive in tokens, slower to process, and, past a point, actively harmful to accuracy, because a model's ability to use what it's given degrades the longer and deeper the context gets.
FaultLine takes the opposite approach: it resolves the question against the graph and returns the precise, grounded fact(s) the answer needs — a sentence, not a haystack. The model receives the one true thing instead of a wall of maybe-relevant text to sift. The result is less context, lower token cost, lower latency, and better accuracy. For agents in particular — where every turn's tokens are a real cost and long-context degradation is a real failure mode — sending one grounded fact instead of a transcript is a direct, per-turn win.
Grounded, and correctable
User truth is sacred — but people also correct themselves, and the system honors that at every layer. If you say "that number is actually X, not Y," the correction deterministically grounds and supersedes the old value. Not just the values: the classification is correctable too. The user is the authority.