What it takes off you is re-establishing context: a person, a project and the relationship between them are stored as a graph rather than as loose notes, so a later question about one of them can walk to the other. Separating databases by context is what keeps that useful — work and personal memory do not have to share a namespace, and both live in files you can open.
A knowledge graph store for assistant memory. Entries have a name, a type and a set of facts; links between them are directed and named, and the whole thing lives in JSONL databases you can split by context.
- Memories stored with a name, a type — person, project, concept and so on — and the facts observed about them
- Directed links between memories, written as subject, verb, object, in active voice
- Facts appended to a memory that already exists, with duplicates ignored and a report of what was actually added
- Selective removal: specific facts dropped while the memory stays, or links removed while both ends stay
- Memories forgotten entirely, together with the links that pointed at them
- Keyword search across names, types and facts, for when you do not know the exact name
- Exact-name retrieval of several memories at once, returning the relations between them, with unknown names ignored rather than raising
- A full read of one database, as JSON or as human-readable text
- Separate databases by context, and a list of what exists in both the project and the global location
Npx on your PATH. Storage lands in one of two places — a project `.aim` directory or the configured global directory — chosen automatically unless a call forces one, and the master database is the one used when no context is named.
One command — npx -y mcp-knowledge-graph
