Skip to content

How to Install and Configure @memtensor/memos-local-plugin for Hermes and OpenClaw Agents

I was setting up a Hermes Agent instance and wanted to give it persistent memory via the @memtensor/memos-local-plugin. My first instinct: npm install -g @memtensor/memos-local-plugin.

What not to do
npm install -g @memtensor/memos-local-plugin

It failed with a 404. The package is not on the public npm registry.

Fine. I cloned the repo, ran npm install -g from the local directory, and got a tarball dumped in my global node_modules — no plugin files, no config, nothing actually deployed. The agent started but summarization and reflection were broken. No errors, no warnings. Just silent degradation.

The Installer, Not the Package

The plugin ships as a bundle, not a standalone npm package. The only correct way to install it is through the bundled install.sh script:

Install from repository
cd apps/memos-local-plugin
bash install.sh --version 2.0.0

Or pipe the remote script directly:

Install from remote
bash -c "$(curl -fsSL https://raw.githubusercontent.com/MemTensor/MemOS/main/apps/memos-local-plugin/install.sh)"

The installer detects whether you’re running Hermes or OpenClaw, copies the plugin to the correct agent directory, writes a default config.yaml, and restarts the agent. For local testing, npm pack then bash install.sh --version ./tarball.tgz works the same way.

On Windows, use install.ps1 instead.

Where Everything Lives

After installation, the layout depends on your agent:

AgentPlugin dirRuntime data dir
Hermes~/.hermes/plugins/memos-local-plugin/~/.hermes/memos-plugin/
OpenClaw~/.openclaw/plugins/memos-local-plugin/~/.openclaw/memos-plugin/

The runtime directory holds config.yaml, data/, skills/, and logs/. Upgrading or uninstalling never touches these — your data and config survive reinstalls.

Config Location Priority

The bridge process (the Node.js process that runs the plugin) needs to find config.yaml. The resolution order is:

  1. $MEMOS_HOME — full path to the runtime directory
  2. $MEMOS_CONFIG_FILE — full path to a specific config file
  3. --home flag passed to the bridge
  4. Default path (~/.hermes/memos-plugin/ or ~/.openclaw/memos-plugin/)

When none of these point to a valid config, the plugin falls back to defaults — local embedding, no LLM provider. This means summarization and reflection silently stop working. The agent runs, the plugin loads, but the memory features are effectively dead.

Docker Deployment

In Docker, the default path usually doesn’t exist or points to a non-persistent layer. The fix is setting MEMOS_HOME:

Dockerfile
FROM nousresearch/hermes-agent:latest
RUN bash -c "$(curl -fsSL https://raw.githubusercontent.com/MemTensor/MemOS/main/apps/memos-local-plugin/install.sh)"
ENV MEMOS_HOME=/opt/data/.hermes/memos-plugin
CMD node /opt/data/.hermes/plugins/memos-local-plugin/bridge.cts --agent=hermes --daemon && hermes chat

Mount a volume to $MEMOS_HOME so data persists across container restarts:

docker-compose.yml
services:
hermes:
build: .
volumes:
- ./memos-data:/opt/data/.hermes/memos-plugin
environment:
- MEMOS_HOME=/opt/data/.hermes/memos-plugin

Verify the Installation

Check that the runtime directory and config exist:

Verify config
ls -la ~/.hermes/memos-plugin/config.yaml

If the file is missing, run the installer again or create it manually from the template at apps/memos-local-plugin/config.yaml in the repo.

Summary

In this post, I walked through installing @memtensor/memos-local-plugin the right way — through install.sh, not npm install -g. I explained why the npm approach fails, where the plugin and its data live, how config resolution works, and how to set MEMOS_HOME in Docker to avoid silent feature degradation. The one thing to remember: if memory features aren’t working, check that config.yaml is present and that the bridge process can find it.

Final Words + More Resources

My intention with this article was to help others share my knowledge and experience. If you want to contact me, you can contact by email: Email me

Here are also the most important links from this article along with some further resources that will help you in this scope:

Oh, and if you found these resources useful, don’t forget to support me by starring the repo on GitHub!

Comments