# Source and compatibility notes Imported from [NousResearch/hermes-plugin-mem0](https://github.com/NousResearch/hermes-plugin-mem0) version 1.3.0 at commit `3fc36950b2b7c19cdd81c6de99f10d2cbed850af`. The original native provider MIT license is retained in `LICENSE`. Generated shared core is Apache-2.0, with its license in `LICENSE-APACHE-2.0`; package metadata records both. This Mem0-owned port is version 1.4.0. The source was a handoff of Hermes' bundled provider, with package-relative imports and standalone dependency declarations; its historical authors remain in the upstream repositories. ## Changes in this port - Generates only shared `core/message_utils.py` through `plugin-build.json`. - Uses shared secret redaction and token-aware batching for non-empty completed-turn text. - Preserves full message text after redaction; explicit `sync_max_chars` and the OSS default of 450 limit chunk size instead of discarding the tail. Platform/HTTP has no default character cap. - Attaches Hermes session IDs as top-level Mem0 `run_id` on writes; existing user recall remains unfiltered by session. The queue is in-memory, with bounded shutdown, logged failures, and no durable retry. - Keeps `mem0`, `memory.provider`, `mem0.json`, environment fallbacks, all four tool names, identity precedence, SDK backends, and the three setup modes. - Refuses OSS collection dimension mismatches without deleting existing vectors. ## Hermes contract review Reviewed the [official memory-provider documentation](https://hermes-agent.nousresearch.com/docs/developer-guide/memory-provider-plugin), release [v0.21.3 / v2026.9.14](https://github.com/NousResearch/hermes-agent/releases/tag/v2026.9.14) (commit `345cd2b057a452236de401d3534b8502a7465e8d`), and main at `c62bd9f2078a946108f1c9d9b24bf118963277ef` on September 18, 2026. - These Hermes revisions still bundle Mem0. Bundled providers take precedence over user directories. See README for an isolated preview; installation alone does not replace core. - The installer supports `owner/repo/subdirectory` and copies only that subtree. All runtime imports must stay within this directory or use Hermes/declared Python dependencies. - Main installs dependencies from `[project].dependencies` and reapplies them after updates; v0.21.3 does not. Install dependencies explicitly in the Hermes environment on that release. - `register(ctx)` registers a `MemoryProvider` instance. Hermes dispatches tool schemas and lifecycle hooks; no general-plugin hook registration is required. Background work retains context variables through `spawn_context_thread`, including profile and secret scope. - Hermes supports the existing `sync_turn(user, assistant, *, session_id="")` signature. New optional `messages`/`turn_author` arguments are passed only to providers accepting them. - `post_setup(hermes_home, config)` takes over setup and activation. The copied wizard already owns its prompt helpers; it still uses Hermes config, curses and credential utilities. - The handoff's original notes mentioned `config_schema.py`, but neither its actual directory nor the checked Hermes Mem0 directory contains it. This port preserves CLI setup and does not claim a provider-specific dashboard configuration panel. Older Hermes releases and live cloud/OSS services require additional validation; preserving configuration and tool names does not imply compatibility with every historical host API. Actual external-loader and `MemoryManager` smoke checks passed on both pinned host revisions: initialization, tool dispatch, optional sync arguments, full-turn tail capture, session ID forwarding and shutdown. SDK backends were mocked; no live service was contacted. Reproduce the host smoke from the repository root (use the Hermes environment or a test venv with its imported dependencies installed): ```bash HERMES_SOURCE=/path/to/hermes-agent python integrations/hermes-plugin/tests/smoke_hermes.py ``` The check confirms bundled precedence, then isolates external discovery by replacing the bundled search root with an empty temporary directory in the test process only.