Skip to content

Hermes install only links memory_tencentdb into checkout tree; plugin can disappear after update and silently detach memory #167

@AustinZ29671

Description

@AustinZ29671

Summary

install_hermes_memory_tencentdb.sh currently symlinks the Hermes plugin only into:

  • $HERMES_AGENT_DIR/plugins/memory/memory_tencentdb

On Hermes hosts where the main checkout is updated/replaced, that symlink can disappear while memory.provider: memory_tencentdb remains configured.

When that happens:

  • hermes memory status reports Plugin: NOT installed
  • the Tencent sidecar on 127.0.0.1:8420 does not start
  • new Hermes chats continue working, but Tencent vectors.db and gateway logs stop advancing

This is a high-severity operational bug because memory silently detaches while the main gateway still looks healthy.

Environment

  • Host: Linux
  • Hermes installed under: /home/admin/.hermes/hermes-agent
  • Tencent plugin checkout: /home/admin/.memory-tencentdb/tdai-memory-openclaw-plugin
  • Hermes config still points to memory.provider: memory_tencentdb
  • memory LLM: deepseek-v4-flash
  • embedding enabled

Verified live failure

Observed on a real Hermes host after the Tencent plugin had been working previously.

1) Hermes main gateway still healthy

systemctl is-active hermes-gateway.service
# active

So the main Hermes gateway is up.

2) Hermes memory status says provider configured but plugin missing

hermes memory status

Returned:

Memory status
────────────────────────────────────────
  Built-in:  always active
  Provider:  memory_tencentdb

  Plugin:    NOT installed ✗
  Install the 'memory_tencentdb' memory plugin to ~/.hermes/plugins/

3) Tencent sidecar not listening

curl http://127.0.0.1:8420/health
# connection refused

4) Hermes plugin path missing even though Tencent source plugin still exists

Missing:

/home/admin/.hermes/hermes-agent/plugins/memory/memory_tencentdb
/home/admin/.hermes/plugins/memory/memory_tencentdb

Still present:

/home/admin/.memory-tencentdb/tdai-memory-openclaw-plugin/hermes-plugin/memory/memory_tencentdb

5) Memory writes stopped completely until symlink was restored

Direct DB check on vectors.db showed no new records in the last ~48h while Hermes itself was still being used:

l0_conversations latest: 2026-06-05T01:29:31.656Z
l1_records latest:      2026-06-05T01:29:50.363Z
last 48h L0 additions:  0
last 48h L1 additions:  0

This means chat activity continued, but Tencent memory ingest did not.

Why this appears to happen

The installer currently links only into the Hermes checkout tree:

  • scripts/install_hermes_memory_tencentdb.sh
  • around Step 2.5:
HERMES_PLUGIN_DIR="$HERMES_AGENT_DIR/plugins/memory/memory_tencentdb"
PLUGIN_SRC_DIR="$TDAI_INSTALL_DIR/hermes-plugin/memory/memory_tencentdb"
rm -rf "$HERMES_PLUGIN_DIR"
ln -sf "$PLUGIN_SRC_DIR" "$HERMES_PLUGIN_DIR"

I do not see the installer also creating a user-scope plugin symlink under:

  • ~/.hermes/plugins/memory/memory_tencentdb

So if the Hermes checkout under $HERMES_AGENT_DIR is replaced/updated, the only plugin mount can disappear.

Minimal recovery that worked immediately

Restoring the symlink fixed the issue.

mkdir -p /home/admin/.hermes/hermes-agent/plugins/memory
ln -sfn \
  /home/admin/.memory-tencentdb/tdai-memory-openclaw-plugin/hermes-plugin/memory/memory_tencentdb \
  /home/admin/.hermes/hermes-agent/plugins/memory/memory_tencentdb

To make it more resilient against Hermes checkout changes, I also added a user-scope symlink:

mkdir -p /home/admin/.hermes/plugins/memory
ln -sfn \
  /home/admin/.memory-tencentdb/tdai-memory-openclaw-plugin/hermes-plugin/memory/memory_tencentdb \
  /home/admin/.hermes/plugins/memory/memory_tencentdb

After that:

hermes memory status -> Plugin installed ✓, Status available ✓
curl 127.0.0.1:8420/health -> status ok

And a smoke test chat immediately wrote new L0 records into vectors.db again.

Expected behavior

If memory.provider: memory_tencentdb is configured and the Tencent plugin source directory still exists, a normal Hermes update/restart should not silently detach the memory provider.

Suggested fix

I think the installer should do at least one of these:

  1. Create the plugin symlink under ~/.hermes/plugins/memory/memory_tencentdb (user-scope plugin dir) instead of relying only on the mutable Hermes checkout tree.
  2. Or create both links:
    • $HERMES_AGENT_DIR/plugins/memory/memory_tencentdb
    • ~/.hermes/plugins/memory/memory_tencentdb
  3. Add a post-install / post-start verification step that fails loudly if:
    • config says memory.provider: memory_tencentdb
    • but plugin discovery does not find memory_tencentdb

Severity

High operational severity.

This failure mode leaves users in a bad state where:

  • Hermes gateway is still active
  • chats still work
  • but memory ingest/recall through Tencent is effectively detached until someone manually inspects plugin paths

Duplicate check

I searched current issues for Hermes plugin / sidecar / 8420 / provider missing / symlink related reports and did not find a matching existing issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions