multimind.memory, what state each one is actually in, and how to use the ones that work. Every class below is importable from multimind.memory; the lightweight ones are imported eagerly and the rest resolve lazily on first access.
All memory classes derive from BaseMemory, whose contract is five async methods: add_message(message), get_messages(), clear(), save() and load(). A class that does not implement all five is abstract and raises TypeError: Can't instantiate abstract class ... when constructed. Those classes are listed separately below as scaffolds; their constructor signatures and helper methods exist, but you cannot use them without subclassing.
For the authoritative stable/beta/planned status, see feature-status.md.
Extras
Implemented Memory Types
These classes implement the fullBaseMemory contract and can be instantiated directly. Most of the LLM-backed ones take a BaseLLM instance (for example OpenAIModel) as their first argument and call it for summarization, routing or extraction.
Conversation buffers (no LLM required)
BufferMemory(memory_key="chat_history", max_tokens=2000, max_messages=None, strategy="sliding", ...)- stores conversation history with sliding/FIFO/LRU pruningBufferWindowMemory(window_size=10, window_type="count", ...)- sliding window of recent messagesSummaryBufferMemory(max_messages=None, max_tokens=None, summary_interval=10, ...)- buffer plus periodic summariesTokenAwareMemory- token-budgeted historyTimeWeightedMemory(decay_rate=0.1, ...)- time-decayed relevanceEntityMemory(entity_types=None, relationship_types=None, ...)- entity and relationship trackingChatMemory,SimpleMemory,CombinedMemory,ReadOnlyMemory- small utility memoriesSQLAlchemyMemory,RedisMemory- persistence-backed buffers (RedisMemoryneeds thememoryextra)
LLM-backed memories (llm is the first constructor argument)
SummaryMemory(llm, ...)- summarized conversation historyVectorStoreMemory(llm, vector_store_config=None, similarity_threshold=0.7, ...)- embedding-based similarity retrieval over a FAISS store by defaultKnowledgeGraphMemory(llm, ...)- graph of entities and relations (needs networkx)HybridMemory(llm, memory_types=None, routing_threshold=0.7, ...)- routes each message to the best of several child memoriesHierarchicalMemory(llm, ...),ContextualMemory(llm, ...),EpisodicMemory(llm, ...),SemanticMemory(llm, ...),ProceduralMemory(llm, ...),WorkingMemory(llm, ...),AssociativeMemory(llm, ...),EmotionalMemory(llm, ...),DeclarativeMemory(llm, ...),SpatialMemory(llm, ...),TemporalMemory(llm, ...),SensoryMemory(llm, ...),ForgettingCurveMemory(llm, ...),NoveltyMemory(llm, ...),VersionedMemory(llm, ...),EventSourcedMemory(llm, ...),CognitiveScratchpadMemory(llm, ...),ActiveLearningMemory(llm, ...),DNCMemory(llm, ...)
Other implemented memories
ImplicitMemory(skill_decay=0.95, max_skills=1000, ...)- skill tracking with prerequisite graphConsensusMemory(node_id, nodes=None, ...)- local in-process replication with majority-vote reads; networked RAFT (elections, RPCs) is not implemented and raisesNotImplementedErrorReinforcementMemory(total_budget=1000, ...)- tabular Q-learning for keep/evict/compress budgetingPlanningMemory(similarity_threshold=0.8, ...)- plan-step recording with success-weighted next-step suggestionsGenerativeMemory- regeneration bookkeeping with a caller-supplied generator
Scaffolds (abstract, cannot be instantiated)
The following classes exist and expose their own methods (for exampleadd_memory / get_memory on the quantum classes), but they do not implement add_message, get_messages, clear, save and/or load from BaseMemory. Constructing them raises TypeError. Treat them as starting points for a subclass, not as usable memories.
Nothing in the package implements holographic, DNA or neuromorphic-quantum memory. There are no
ShortTermMemory or LongTermMemory classes; use BufferMemory / BufferWindowMemory for short-term history and VectorStoreMemory or SQLAlchemyMemory for durable storage.
Usage Examples
multimind.agents.AgentMemory(max_history=100) for task/response history; see rag.md.
Best Practices
-
Memory Selection
- Start with
BufferMemory; addSummaryMemoryorVectorStoreMemoryonly when history outgrows the context window - Check the extras table above before importing a memory type
- Do not rely on the scaffold classes in production code
- Start with
-
Memory Configuration
VectorStoreMemorydefaults to a FAISS backend; the FAISS backend ignoresfilter_criteria, soget(memory_id)is not reliable once more than one vector is stored- Set
storage_pathwhen you needsave()/load()persistence
-
Memory Management
- Call
clear()between unrelated conversations - LLM-backed memories make model calls on
add_message; budget for that cost
- Call
Contributing
To contribute new memory implementations (or to finish one of the scaffolds):- Create or edit a file in the
multimind/memorydirectory - Implement all five
BaseMemorymethods:add_message,get_messages,clear,save,load - Register the class in
multimind/memory/__init__.py(_LAZY_ATTRS, with the extra it needs) - Update this document and feature-status.md
- Add tests
- Submit a pull request
