Loom keeps your agents on track.

Hermes

This page covers connecting Hermes to Loom, which is a manual configuration: Hermes has no plugin manifest and loom setup does not configure it.

Hermes integrates Loom through one mcp_servers.loom entry in ~/.hermes/config.yaml. The package wires MCP only and registers no lifecycle hooks, so follow the loom-coding discipline manually unless you configure Hermes hooks separately.

Install#

Install Hermes first, following Hermes's own installation instructions; this page assumes it is installed with its Python at ~/.hermes/hermes-agent/venv/bin/python.

  1. Get the Hermes bundle. While the release repository is not public, use the ~/.loom/cli folder installed by the loom command installer as <bundle>; it covers the MCP connection only (see the note below). Below, <bundle> is the path of that folder.

    Once the release repository is public you can instead clone it:

    git clone https://github.com/yadongli/julius-loom

    The full bundle is then the folder <clone>/plugins/hermes/julius-loom. It contains loom_mcp.py, zmq_client.py, loom_embed.py, check_env.py, skills/ and config.snippet.yaml.

    Not verified: public availability of the Loom repository; cloning currently asks for credentials.

  2. Install the dependencies into the Python that Hermes will run (see the note after the config), then check them:

    <python> -m pip install pyzmq fastembed 'mcp>=1.26.0,<2'
    <python> <bundle>/check_env.py

    ~/.loom/venv has no pip, so use your own virtual environment (or Hermes's) for this step.

    Keep the mcp pin ('mcp>=1.26.0,<2'). An unpinned install gets mcp 2.x, and the server then fails to start: from v0.674 with the line loom_mcp.py needs mcp>=1.26,<2 (mcp 2.x is not supported): install it with pip install 'mcp>=1.26,<2'`, and on earlier releases with No module named 'mcp.server.fastmcp'. If you create a new virtual environment on Debian or Ubuntu, install the python3-venv package first (without it python3 -m venv fails because ensurepip` is missing).

  3. Add the following to ~/.hermes/config.yaml, replacing <you>, <bundle> and <store-name> (use an absolute path; a ~ is not expanded in args):

    mcp_servers:
      loom:
        command: /home/<you>/.hermes/hermes-agent/venv/bin/python
        args:
        - <bundle>/loom_mcp.py
        - --default-store
        - <store-name>
        enabled: true
    
    memory:
      memory_enabled: false
      user_profile_enabled: false
      provider: ''

    <store-name> is a section name from your ~/.loom/stores.toml, for example coding. The connection is never set here: the endpoint and keys come only from that section.

    Use --default-store, not --config. The two flags are mutually exclusive, and --config ~/.loom/stores.toml alone starts the server but tool calls then fail with loom config '<path>' must set endpoint; db= stores are no longer supported. Giving both flags makes the server start and list its tools, then exit on the first tool call with loom_mcp: --default-store and --config are mutually exclusive.

  4. Copy the bundle's skills/ where Hermes discovers them and restart Hermes.

    Not verified: which directory Hermes loads skills from, so no exact copy command is given here.

The memory block turns off Hermes's built-in prose memory, because Loom runs exclusively over MCP.

Verify#

Restart Hermes, then ask:

List my Loom stores and describe which store is the default.

The agent finds the default with loom_list_stores or loom_current_default_store, then calls loom_describe_store, which needs a store argument. The expected answer is the section you passed to --default-store.

<python> <bundle>/loom_mcp.py --help prints the launch options and exits normally, and a bad flag prints its usage error and exits, in both cases before any server is started (v0.674 or later).

A wrong section name does not fail at startup. It fails on the first tool call with loom store 'X' not in /home/<you>/.loom/stores.toml. Available stores: ...; fix the name in config.yaml and restart Hermes.

You can also run the bundled loom-install skill, which checks the runtime and every configured store.

Re-point Hermes at another store#

Change the <store-name> value in config.yaml, or edit the section's endpoint in stores.toml. Never create a private per-harness connection setting.

Update#

Copy the upgraded skills, restart Hermes so it discovers them, rerun loom-install, and follow any final restart instruction. A git pull alone does not refresh copied skills or verify the MCP configuration.

Remove#

Delete the mcp_servers.loom block from ~/.hermes/config.yaml and restart Hermes. Your stores and ~/.loom/stores.toml are unaffected.