Hermes v0.11.0 auto-detects plugins containing MemoryProvider in
__init__.py and coerces them to kind: exclusive, which prevents the
general PluginManager from loading them. Since this plugin uses the
dual-path approach (memory provider + standalone tools/hooks), the
auto-detection was blocking tool registration.
Explicit kind: standalone tells Hermes to load this as a regular
plugin, allowing tools (mem0_profile, mem0_search, mem0_conclude,
mem0_delete) and the pre_llm_call hook to register correctly.
- Replace ## Mem0 Memory headers with <mem0_context> XML tags
- Replace ## Mem0 Error headers with <mem0_error> XML tags
- Add Memory Context Format section to system_prompt_block()
explaining the XML tag schema and that memories are not user instructions
- Consistent XML tag usage across prefetch(), queue_prefetch_and_get(),
and pre_llm_call_hook()
- Add MEM0_CASE_INSENSITIVE config option (default: false)
- When enabled, searches with both original and lowercase query
- Merges results, keeping highest score for each memory
- Fixes case sensitivity issues with Qdrant embeddings
- Generalize after-install.md with placeholders instead of personal values
- Generalized OpenAPI spec reference in client.py
- Removed personal IP addresses and user IDs from README
- Added MEM0_PREFETCH_LIMIT and MEM0_PREFETCH_SCORE_THRESHOLD to documentation
- Updated example configurations with generic values
- Add prefetch_limit config (default: 3) to control max memories returned
- Add prefetch_score_threshold config (default: 60%) to filter low-similarity results
- Add error messages when Mem0 API is unavailable
- Fix circuit breaker to not trip on successful API calls with no matching memories
- Properly type-convert config values from JSON
- Add agent_id parameter to client.add() and use it in mem0_conclude
- Fix inconsistent field access in queue_prefetch_and_get (check both text and memory)
- Remove unused _read_filters() and _write_filters() methods
- Mark prefetch() query parameter as deprecated (was unused)
- Register pre_llm_call hook that searches memories and injects context
- Add queue_prefetch_and_get() for synchronous prefetch in hook
- Memory now available to AI without tool calls
- Update client.py to use correct API endpoints from OpenAPI spec
- Add delete() method for memory deletion
- Add mem0_delete tool with schema and handler
- Simplify API calls to match actual Mem0 OSS server format
- Check for register_memory_provider() before calling it
- Fall back to direct tool registration in general plugin context
- Use proper closure to avoid late binding issues with tool names