Configuration
On this page
All tunables live on the single MemoryConfig dataclass (memory.core.config.MemoryConfig). Pass an instance to AIMemoryManager(config=...), or build one individual memory class at a time with its own constructor arguments (most classes don't read MemoryConfig directly — see the per-class API pages for which constructor args map to which config fields).
Full field reference
[!WARNING] Several fields are documented but unused As flagged inline above, a substantial number of
MemoryConfigfields (similarity_threshold,embedding_batch_size,normalize_text,preserve_case,remove_duplicates,auto_save_interval,enable_consolidation,consolidation_interval,log_level,enable_stats,max_short_term,max_episodic,max_semantic,max_procedral,enable_decay) are declared and validated but not read by any class in this source tree. This was confirmed by grepping every reference toconfig.<field>andself.config.<field>across the package. Don't assume setting them changes runtime behavior unless you've verified it against your actual installed version.
Validation rules
MemoryConfig.__post_init__ calls _validate(), which raises ValueError if:
max_short_term < 1importance_thresholdis outside[0, 1]similarity_thresholdis outside[0, 1]retrieval_limit < 1enable_decayisTrueanddecay_rateis outside[0, 1]
No other fields are validated — e.g. max_working, max_long_term, min_importance, and all string fields accept any value including negative numbers or empty strings without error.
Loading from environment variables
from zerda.memory import MemoryConfig
config = MemoryConfig.from_env()
from_env() only maps five environment variables — every other field falls back to its dataclass default even if you have other MEMORY_* variables set:
Serializing configuration
MemoryConfig.to_dict() returns only 10 of the 32 declared fields (max_short_term, max_long_term, max_working, max_episodic, importance_threshold, similarity_threshold, retrieval_limit, embedding_model, enable_persistence, enable_decay). If you need a complete snapshot for logging or persistence, use dataclasses.asdict(config) instead:
from dataclasses import asdict
from zerda.memory import MemoryConfig
config = MemoryConfig()
full_dict = asdict(config) # all 32 fields
partial_dict = config.to_dict() # only 10 fields