Two memories
PartialOne for how it decides, one for what your code is. The first is running; the second is stale.
Most agent tooling forgets everything between tasks. Vibemind keeps two memories, deliberately separate, because conflating them makes both worse. One of them is running; the other has not been updated since early September.
The routing graph
This holds how decisions got made: episodic traces of individual routes, semantic associations, procedures, state, recorded decisions and a self-model of the system’s own behaviour. The code defines nine logical collections plus archives; the vector store holds 13 collections in total, two of which are currently empty. A separate plan log records each executed plan.
It answers questions like: when someone says this, where does it usually belong, and did that work last time.
The code graph
This is a semantic index over a codebase, chunked and embedded, meant to re-index as commits land. It answers a completely different question: what is in this repository, and where.
Keeping it separate matters because it has a different lifecycle. The routing graph should persist and compound across everything you ever do. The code index is disposable and rebuildable from the repository at any time.
Why not one store
| Routing graph | Code graph | |
|---|---|---|
| Question | How do I decide? | What is this code? |
| Lifecycle | Compounds indefinitely | Rebuilt from source |
| Loss impact | System gets worse at routing | Re-index and continue |
| Scope | Global | Per repository |
| Written by | Executed plans and decisions | Commit hooks (currently failing) |
The practical argument: if you put them together, a repository re-index churns the store that holds your routing history, and a routing update invalidates cache for code lookups. They have no reason to share anything and several reasons not to.