Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Obsidian

11.4. Obsidian — Managing a Vault from Hermes

Hermes can manage an Obsidian Vault through the Obsidian skill. When Hermes runs in Docker, configure two separate things:

  1. A Docker volume mount — gives the container access to the Markdown files in the Vault on the host.
  2. OBSIDIAN_VAULT_PATH — tells Hermes the exact location of the Vault inside the container.

Setting only the environment variable does not give the container access to the real Vault. Mounting the directory without setting the matching container path can make Hermes look in the wrong place.

Docker configuration

Choose a host path and a container path, then use the same container path in both the volume mount and OBSIDIAN_VAULT_PATH:

services:
  hermes:
    volumes:
      - /absolute/path/to/your/vault:/opt/obsidian-vault
    environment:
      - OBSIDIAN_VAULT_PATH=/opt/obsidian-vault

With the official Docker Compose setup, add the Vault mount to the existing volumes: list rather than replacing the ./data:/opt/data mount. Keep the host-side path limited to the Vault, not to a parent directory containing unrelated personal files.

After changing docker-compose.yml or a Compose-level .env, recreate the container:

docker compose up -d --force-recreate

Verify access from Hermes

Verify the path from the same environment that Hermes uses. In the Hermes chat interface, send:

I want you to manage my Obsidian vault using the Obsidian skill.

1. Resolve the `OBSIDIAN_VAULT_PATH` environment variable to its actual absolute path. Do not return the literal string `$OBSIDIAN_VAULT_PATH`.
2. Confirm that the directory exists and is accessible from your current execution environment.
3. List 10 existing Markdown files from the vault, including their relative paths.
4. Do not create, modify, or delete any files yet.
5. If you cannot access the vault, explain exactly which check failed. Do not guess the path or claim access succeeded without verifying it.

Pass condition: Hermes returns the correct path and lists Markdown files that you recognize from the Vault. Do not ask Hermes to write anything until this read-only check succeeds.

Common failures

SymptomPossible causeFix
The variable is emptyThe variable was not passed into the container or active Hermes processCheck Compose configuration and the active profile/process, then restart or recreate the appropriate service.
The variable is set but the Vault does not existThe path inside the container does not match the volume mountCompare the right-hand side of the volume mapping with OBSIDIAN_VAULT_PATH.
Hermes uses a default VaultThe variable was not loaded into the profile or process currently running HermesConfirm the active profile and restart the relevant process.
Hermes can read but cannot writeThe container user does not have filesystem permissionCheck the host directory ownership and permissions, including the container’s UID/GID.

Filesystem boundaries

OBSIDIAN_VAULT_PATH only tells Hermes where the Vault is. It does not restrict Hermes from accessing other filesystem paths. If Hermes should only be able to work inside one directory, enforce that boundary at the operating-system or container level by mounting only the required directory and applying appropriate permissions.

See the official Hermes Obsidian integration guide and the official environment variable reference.