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:
- A Docker volume mount — gives the container access to the Markdown files in the Vault on the host.
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
| Symptom | Possible cause | Fix |
|---|---|---|
| The variable is empty | The variable was not passed into the container or active Hermes process | Check Compose configuration and the active profile/process, then restart or recreate the appropriate service. |
| The variable is set but the Vault does not exist | The path inside the container does not match the volume mount | Compare the right-hand side of the volume mapping with OBSIDIAN_VAULT_PATH. |
| Hermes uses a default Vault | The variable was not loaded into the profile or process currently running Hermes | Confirm the active profile and restart the relevant process. |
| Hermes can read but cannot write | The container user does not have filesystem permission | Check 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.