Hermes Docker — Profile Management
How to inspect, copy, and migrate Hermes Agent profiles between Docker instances.
Why / When to Use
When running multiple Hermes Docker instances (e.g. dev vs. prod, or migrating to a new host) and you need to move a user profile including its memories, conversations, and settings.
Core Concept / Commands
Hermes stores all profile data inside the container’s mounted volume. The simplest approach is to copy the entire profile folder.
1 — Find the volume mount on the source host
# Check docker-compose.yml for the volume definition
cat docker-compose.yml | grep -A 5 volumes
# Or inspect the running container directly
docker inspect <hermes_container> | grep -A 10 Mounts2 — Locate the profile directory
The profile data typically lives at a path like:
<volume_mount_path>/profiles/<profile_name>/
Find it on the host:
docker exec -it <hermes_container> ls /path/to/data/profiles3 — Copy the entire profile folder
Copy the whole folder — simpler and safer than cherry-picking individual files:
# From source host — tar the profile folder
docker exec <hermes_container> tar czf /tmp/profile-backup.tar.gz /path/to/data/profiles/<profile_name>
docker cp <hermes_container>:/tmp/profile-backup.tar.gz ./profile-backup.tar.gz4 — Restore on the target host
# Copy the archive to the target host
scp profile-backup.tar.gz user@target-host:~/
# On target host — extract into the bind mount path
ssh user@target-host
docker cp ./profile-backup.tar.gz <target_hermes_container>:/tmp/
docker exec <target_hermes_container> tar xzf /tmp/profile-backup.tar.gz -C /If the target Hermes uses a bind mount, extract directly into that host path:
tar xzf profile-backup.tar.gz -C /path/to/target/volume/Key Options / Variants
- Named volume: Use
docker volume inspectto find the mountpoint on the host, then copy at the filesystem level. - Bind mount: Directly access the host path — no
docker cpneeded. - Whole profiles folder: If migrating all profiles, copy the entire
profiles/directory rather than a single profile subfolder.
Gotchas
- Make sure the target Hermes container is stopped before copying profiles in, to avoid write conflicts on startup.
- Profile folder names may be user IDs or slugs — check inside the container first with
ls profiles/before assuming the name. - Memory and conversation history live inside the profile folder, so a full folder copy captures everything.
Source
Conversation: “Hermes - Profile” — 2026-05-28
Weekly Summary — 2026-W22
Appeared: Thu 28 May Key developments this week:
- Note created to document how to migrate Hermes profiles between Docker instances. Key finding: copy the entire profile folder from the Docker volume mount rather than cherry-picking individual files — simpler and avoids missing dependent files (memories, conversation history, settings all live in the same folder).
- Documented the full workflow:
docker inspectto find the mount path →tar+docker cpto extract from source →scpto target host → extract into target bind mount.
New things learned:
- Hermes profile data lives at
<volume_mount_path>/profiles/<profile_name>/— one folder captures everything. - Target container should be stopped before copying profiles in to avoid write conflicts on startup.
- Named volumes and bind mounts require slightly different copy approaches (
docker volume inspectvs direct host path).
Open questions / next steps:
- Run the Hermes profile copy command on target Docker host and verify profile loads correctly