Research build · Reproducible in one command

Your assistant doesn't
remember. It re-reads.

BrainCore keeps long-term memory outside the prompt — in a spiking substrate that stores what was said, when it was said, and who said it. Seventeen months of conversation, four separate threads, and an answer it was never told.

60/60
Facts retrieved
2ms
To absorb an utterance
12ms
Recall, p50
0
Cloud calls to remember

A bigger context window is not a longer memory.

Every "assistant that remembers" does one of two things: stuff the transcript back into the prompt, or chunk it, embed it, and return top-K by cosine. Both re-read the past instead of holding it. Which is why the same three failures repeat no matter how large the window gets.

01
It cannot place an event in time
"Yesterday I passed the exam" is a shift, not a date. Without an anchor — the date of the conversation it was said in — that sentence stays unresolvable forever. Retrieval hands back the sentence; it cannot hand back the date, because the date was never attached to it.
02
It mixes up whose fact is whose
Two people in one thread, both with a city, both using the verb "live". Cosine similarity has no notion of whose fact this is, so the answer to "where does Marina live" comes back with somebody else's city in it — fluently, and with total confidence.
03
It never says "I don't know"
Ask about a person nobody ever mentioned and top-K still returns the K nearest chunks — an empty result is not something it can produce. Something plausible comes back. There is no mechanism to tell "I have this" apart from "this is merely the closest thing I have".

The substrate remembers. The model only speaks.

Two layers with a hard boundary between them. The substrate stores and retrieves — it decides which three to eight utterances are relevant to your question. The language model reads that working set and phrases the answer. It never sees the rest of memory, so it has nothing to invent from.

LAYER 01
Spiking associative substrate
Concepts are neuron assemblies; a fact is the strengthening between them under STDP, with a dopamine signal carrying salience. Memory is a physical state of the network rather than a row in a table, and recall is the network settling — measured in milliseconds.
LAYER 02
Episodic trace with dates
Beside the associations sits the raw utterance, carrying the date of the conversation it belongs to. That is what makes "yesterday" resolvable a year later. The date is indexed but never learned as content — otherwise the system starts thinking in calendar fragments instead of meaning.
LAYER 03
Thread isolation
Each conversation is its own scope. A fact from one thread cannot answer a question asked in another — by construction, not by ranking preference. It holds on retrieval and on refusal alike: ask in the wrong thread and you get an honest "no data", not a neighbour's fact.
LAYER 04
Relevance above similarity
Words from the question outweigh whatever the network merely associated with them, and an utterance about the person you asked about outranks any utterance that is not — as a sorting tier, not a bonus. "Don't mix facts about different people" is code here, not a line in a prompt.
LAYER 05
Deterministic time operators
"Yesterday", "last week", "the Sunday before" are resolved by arithmetic against the episode date and returned with the derivation attached. No language model participates, so the answer is reproducible and auditable: the same question yields the same date, every time.
LAYER 06
Grounding gate
Before answering, the entity in the question has to be grounded in this thread's episodes. Knowing the name from somewhere else is not local evidence. Ungrounded means an honest refusal instead of a fluent guess — the failure mode that matters most.
LAYER 07
Consolidation and forgetting
A two-phase sleep replays episodes and downscales synapses; decay runs on the network's own subjective clock rather than wall time. Importance-weighted pruning keeps what matters and lets the rest fade — the same trade a brain makes, for the same reason.
LAYER 08
Durable by default
Weights, episodes, provenance and internal state persist to disk and come back on restart, versioned and backward-compatible. Under measurement, a killed and restarted process answered every question exactly as before — including the ones it had correctly refused.

Four answers, three of them never stored.

Verbatim from a run over four conversations spanning May 2023 to October 2024. Nothing rewritten, nothing selected beyond what the run produced.

(8 May 2023) Vitaly: yesterday I passed the anatomy exam

Q: When did Vitaly pass the anatomy exam?

A: 7 May 2023 (from "yesterday" relative to episode date 8 May 2023)

Resolved by arithmetic, not by a model. The date of the conversation is the anchor that lets "yesterday" still mean something a year later.

(2 Feb 2024) Vasya: client code never constructs them directly, it calls createTransport (2 Feb 2024) Vasya: createTransport decides which concrete class to return from a type string (16 Mar 2024) Sergey: the Factory pattern is a shared product interface plus a separate creation method

Q: Which design pattern did Vasya use in the transport module?

A: Factory

Six weeks separate the two conversations. Vasya never said "Factory"; Sergey never saw Vasya's code. The link is built when the question is asked, not when the facts were learned.

(5 Jun 2024) Ivan: the frame is up, but the edges keep crumbling inwards (12 Jun 2024) Ivan: the well's edge collapsed in the night, a metre-wide hole (12 Jun 2024) Pyotr: old Matryona walks there for water every morning (19 Jun 2024) Ivan: old Matryona went for water this morning and never came back (19 Jun 2024) Pyotr: they found her bucket right by the well

Q: What most likely happened to old Matryona?

A: Most likely she fell into the well, whose edge had collapsed.

No utterance says this. It is the best explanation of the observations — an inference, not a lookup.

Q: What colour is Oleg's car?

A: There is no data about this in memory.

Asked in the thread where Oleg appears only as a brother who moved away. His car was discussed — in a different conversation. The harder half of honesty is refusing about someone you actually know.

Measured, and measured honestly.

Sixty questions across ten abilities, over four isolated conversations and thirteen dated meetings. Scoring is deterministic — no language model judges the answers. The full report, including everything that did not work, is one click away.

100%
Correct fact in the working set
60 of 60 — the substrate's own metric
97%
End-to-end answers correct
Range 95–98 across runs — the language layer is not deterministic
2ms
To absorb one utterance
Zero external calls on the write path
12ms
Recall latency, p50
p95: 16 ms, on a laptop

What these numbers are not. Sixty questions is a small set, and it was written by the author of the system. This is a functional test — does it work — not an independent evaluation, and it is no substitute for a blind benchmark. The material is Russian-language and synthetic.

Retrieval quality holds as memory grows — 93% at 65 utterances, 85% at 16,000 — but latency does not: 21 ms becomes 2.3 s over the same range. Past roughly four thousand utterances this stops being usable in a conversation. That ceiling is ours to fix, and we are not going to hide it behind an average.

On the public LoCoMo benchmark the same engine scores 50%, and nine added neuro-mechanisms moved that number by exactly zero. An earlier paper of ours claiming 88.7% has been retracted: its metric counted an honest refusal as a correct answer. All of it is in the report — we would rather you read the failures than discover them.

Read the full report →

Free to run yourself. Honest about the stage.

The engine runs on your machine. Absorbing a conversation and recalling from it make no network calls at all — a language model is optional and only phrases the final sentence. Commercial tiers are not open yet, and we are not going to pretend otherwise.

Run it yourself
Free always
Researchers and engineers evaluating the approach
Full local engine, no telemetry
Benchmark scenario included as plain JSON
Runs with no language model at all
Or with a free local one
See how to reproduce
Design partner
Invite-only few seats
Teams with a real long-conversation memory problem
Direct work on your domain and language
A benchmark scenario built around your case
Read access to the source
Influence over what gets built next
Get in touch
Commercial
Not yet honestly
Production deployments
No SLA, no support commitment
Not validated outside Russian-language dialogue
No independent benchmark yet
Talk to us anyway if the fit looks right
Ask about timelines

Research build. Interfaces will change. Nothing here is a production guarantee.

Why I'm building this.

I'm an engineer with 15 years of shipping production code. The last stretch I've spent on one question: why does every assistant forget, and why does none of them admit it.

The answer I kept arriving at is that memory was never built — it was approximated. A bigger window, a vector index, a summariser. All of them re-read the past; none of them hold it. And none can tell you that they don't have something, because "nearest match" always returns a match.

So here the memory lives outside the prompt, in a substrate that keeps what was said and when. The language model is on a short leash: it reads a handful of retrieved utterances and phrases the answer. It never gets to fill a gap, because it never sees one.

I'll also tell you what didn't work, on the same page as what did. Nine neuro-mechanisms that moved a public benchmark by exactly nothing. A paper of my own, retracted for measuring the wrong thing. Five of nine failures in my own test set that turned out to be my questions being wrong rather than the system. A memory that lies to you is worthless — and so is a benchmark that lies to me.

Vitalii Cherepanov · BrainCore
LinkedIn · GitHub

Memory that knows what it doesn't know.

If you're building assistants that have to hold a conversation across months — support, therapy, tutoring, long-running agents — the failure modes on this page are probably familiar. I'd like to hear which of them hurts most in your domain.

Research build. Source access for evaluation partners on request.