iiRecord
Agentic AI Atlas · Hermes Memory Provider Plugin
knowledge-fabric-impl:hermes.memory-plugina5c.ai
II.
KnowledgeFabricImpl JSON

knowledge-fabric-impl:hermes.memory-plugin

Structured · live

Hermes Memory Provider Plugin json

Inspect the normalized record payload exactly as the atlas UI reads it.

File · agent-stack/hermes/hermes-memory-plugin.yamlCluster · agent-stack
Record JSON
{
  "id": "knowledge-fabric-impl:hermes.memory-plugin",
  "_kind": "KnowledgeFabricImpl",
  "_file": "agent-stack/hermes/hermes-memory-plugin.yaml",
  "_cluster": "agent-stack",
  "attributes": {
    "displayName": "Hermes Memory Provider Plugin",
    "agentVersionId": "agentVersion:hermes:ge-0-0-0",
    "fabricKind": "file-and-plugin",
    "description": "Pluggable memory provider architecture extending Hermes with persistent\ncross-session knowledge beyond built-in MEMORY.md and USER.md files.\nSingle-select provider model: only one external memory provider active\nat a time. Providers implement MemoryProvider ABC with rich lifecycle\nhooks for prefetch, sync, compression awareness, and session end.\n",
    "keyFiles": [
      "agent/memory_provider.py",
      "agent/memory_manager.py",
      "plugins/memory/"
    ],
    "builtInMemory": [
      "MEMORY.md (project-scoped persistent notes)",
      "USER.md (user profile, preferences, history)",
      "Session history with FTS5 full-text search",
      "Session lineage tracking across compression"
    ],
    "pluginLifecycleHooks": [
      "is_available() -- activation check, no network calls",
      "initialize(session_id, **kwargs) -- agent startup",
      "get_tool_schemas() -- tool injection",
      "handle_tool_call(tool_name, args) -- tool routing",
      "system_prompt_block() -- static provider info in prompt",
      "prefetch(query) -- recalled context before API call",
      "queue_prefetch(query) -- pre-warm for next turn",
      "sync_turn(user, assistant) -- persist conversation (non-blocking)",
      "on_session_end(messages) -- final extraction/flush",
      "on_pre_compress(messages) -- save insights before discard",
      "on_memory_write(action, target, content) -- mirror writes",
      "shutdown() -- clean up connections"
    ],
    "configSchema": "Providers declare config fields via get_config_schema() for interactive\nsetup. Secrets written to .env, non-secrets to provider-specific config\nfiles. Profile isolation enforced via hermes_home kwarg.\n",
    "threadingContract": "sync_turn() must be non-blocking; backend latency in daemon threads.",
    "singleProviderRule": "Only one external memory provider active at a time.",
    "ourEquivalent": "packages/babysitter-sdk/src/ provides memoryExtraction and crossRunState for durable\nmemory across babysitter runs. CLAUDE.md/MEMORY.md file conventions match\nHermes' file-based memory. Atlas graph provides structured organizational\nknowledge that Hermes lacks. Hermes' rich lifecycle hooks (prefetch,\non_pre_compress, queue_prefetch) are more granular than our current\nmemory extraction, representing an integration opportunity.\n"
  },
  "outgoingEdges": [
    {
      "from": "knowledge-fabric-impl:hermes.memory-plugin",
      "to": "layer:12-knowledge-fabric",
      "kind": "realizes",
      "attributes": {}
    },
    {
      "from": "knowledge-fabric-impl:hermes.memory-plugin",
      "to": "agent:hermes",
      "kind": "part_of",
      "attributes": {}
    }
  ],
  "incomingEdges": []
}