4.0 KiB
Source and compatibility notes
Imported from 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.pythroughplugin-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_charsand 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_idon 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,
release v0.21.3 / 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/subdirectoryand copies only that subtree. All runtime imports must stay within this directory or use Hermes/declared Python dependencies. - Main installs dependencies from
[project].dependenciesand reapplies them after updates; v0.21.3 does not. Install dependencies explicitly in the Hermes environment on that release. register(ctx)registers aMemoryProviderinstance. Hermes dispatches tool schemas and lifecycle hooks; no general-plugin hook registration is required. Background work retains context variables throughspawn_context_thread, including profile and secret scope.- Hermes supports the existing
sync_turn(user, assistant, *, session_id="")signature. New optionalmessages/turn_authorarguments 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):
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.