Hermes Agent Re-persona / Migration
Hermes Agent Re-persona / Migration
Rewriting a Hermes agent's persona (identity, role, voice) touches FOUR files, not one. Miss any and the old identity wins.
The trap (root cause)
When you rewrite SOUL.md (the persona) but leave memories/MEMORY.md and memories/USER.md holding the OLD identity, the model keeps answering as the old role. Memory is injected every turn and overrides the fresh SOUL.md β worst with cheaper/flash models that lean hard on concrete identity lines.
Symptom seen in the field: Eve was re-persona'd from "macrobiotic counsellor" to "Integrated Guide" in SOUL.md, but a live probe still said "macrobiotic counsellor" β because MEMORY.md + USER.md still carried the old role. Fixed by rewriting both, then identity snapped into place.
Files to align (all four)
SOUL.mdβ identity, roles, boundaries, voice modes.memories/MEMORY.mdβ durable fleet/identity facts (usually holds the old role name).memories/USER.mdβ user preferences (usually holds the old role + tone).config.yamlβ model/provider/base_url (+.envfor keys).
Procedure
- Rewrite
SOUL.mdwith the new persona. - Grep
memories/for the OLD role name/identity and rewriteMEMORY.md+USER.mdto match. - Update
config.yamlmodel/provider +.envkeys (if changing model lanes). - Re-point any corpus/skill references (e.g. a search skill pointing at the knowledge dir).
- VERIFY with a real probe β ask "Introduce yourself" and check the identity in the actual reply, not the files.
Verify (never trust "file written")
- A2A:
curl -s -X POST :8448/ -d '{"jsonrpc":"2.0","method":"message/send","params":{"message":{"parts":[{"text":"Introduce yourself."}]}}}' - Confirm: correct identity, no leftover old-role framing, expected latency.
- The
hermes -zsubprocess reads files fresh each call β no gateway restart needed for the A2A path; the Telegram gateway picks up on next turn.
Migration checklist
SOUL.md Β· MEMORY.md Β· USER.md Β· config.yaml Β· .env Β· corpus/skills Β· gateway install+start Β· A2A door Β· verify probe.

