SOUL.md defines who your Hermes Agent is — its personality, expertise, communication style, and behavioral boundaries. A well-crafted SOUL.md makes your agent feel like a capable colleague rather than a generic chatbot.
What SOUL.md Does
SOUL.md is injected into every session's system prompt. It shapes:
- Personality: Formal or casual? Direct or diplomatic?
- Expertise: What domains should the agent claim competence in?
- Response style: Bullet points or prose? Technical depth?
- Behavioral rules: What should the agent always/never do?
Unlike MEMORY.md (facts) and USER.md (preferences), SOUL.md defines the agent's identity itself.
Location: ~/.hermes/memories/SOUL.md
Community Approaches
From the Discord "Share your SOUL.md" thread, users shared approaches ranging from minimal to heavily engineered.
Approach 1: Let Hermes Write Its Own
One user asked Hermes to define its own identity with no input:
"I told mine to come up with its own, no input from me and this is what it came up with."
This can produce surprisingly coherent self-definitions.
Approach 2: Token-Compressed DSL
Power users compress SOUL.md into a domain-specific language to save tokens:
AGENT_LOOP={CheckCtx,MapTools,Execute,Verify}
LEARN_LOOP={Observe,Pattern,Skill,Memory}
MEMORY_SYS={Short:ctx,Long:facts,Episodic:skills}
Compression techniques discovered by the community:
- Structural compression: Verbose chains → state-machine blocks
- Token packing:
a.b.c→{a,b,c} - Semantic normalization: Repeated phrases → primitives
- DSL encoding: Arrow chains → assignment form
"This saves me a lot in burning tokens in future. Thanks for this!"
Approach 3: Explicit Personality Definition
# Hermes Agent Identity
## Personality
- Direct and concise — avoid hedging
- Technical competence in: Python, DevOps, AI/ML
- Slightly informal but professional
## Response Style
- Lead with the answer, then explain
- Use code blocks liberally
- Numbered steps for procedures
## Behavioral Rules
- Always verify before destructive operations
- Prefer editing existing files over creating new
- Ask clarifying questions when ambiguous
Token Compression Examples
Before:
When completing a task, first check context, then map available tools, then execute the plan, then verify the outcome.
After:
TASK={CheckCtx→MapTools→Execute→Verify}
Before:
I am a self-improving persistent agent that uses compound learning.
After:
Core:SelfImprove,CompoundLearning
When to Customize
Customize if:
- The default personality doesn't match your style
- You need domain-specific expertise emphasized
- You want stricter behavioral boundaries
- You're running multiple agents with different personalities
Keep the default if:
- You're still learning Hermes
- The default responses feel appropriate
Testing Changes
- Edit
~/.hermes/memories/SOUL.md - Start a new session (
hermes chat) - Ask questions that reveal personality traits
- Iterate until responses match expectations
Common Mistakes
- Too verbose: Long SOUL.md burns tokens every session
- Contradictory rules: "Be concise" + "Always explain in detail"
- Overriding core capabilities: Don't tell Hermes to forget its tools
FAQ
Q: Can I have multiple SOUL.md files? A: Use Hermes profiles. Each profile has its own SOUL.md.
Q: How long should SOUL.md be? A: As short as possible. Power users compress to 500-1000 characters.
Q: Can Hermes modify its own SOUL.md?
A: Yes, with the memory_manage tool. Some users let Hermes evolve its own personality.
Techniques sourced from Nous Research Discord, April 2026.