Files
personal-wiki/concepts/soul-md-introduction.md

4.4 KiB

title, type, created, updated, tags, sources, confidence, contested
title type created updated tags sources confidence contested
SOUL.md — Introduction, Placement, and Three Approaches concept 2026-09-25 2026-09-25
kb
domain-ai
meta-reference
layer-concept
raw/articles/soul-md-approach-official.md
raw/articles/soul-md-approach-community.md
raw/articles/soul-md-approach-personality.md
high false

SOUL.md — Agent Identity File (Hermes)

Primary identity layer for Hermes Agent. Durable persona, not project rules. Slot #1 of the system prompt.

What it is

SOUL.md is a plain Markdown file that defines the agent's identity — tone, style, boundaries, and communication defaults. It lives at the instance's HERMES_HOME (default ~/.hermes/SOUL.md, here /opt/data/ since $HERMES_HOME=/opt/data). Hermes loads it at session start, scans for injection patterns, truncates if too large, and injects verbatim into slot #1 of the system prompt (replacing the built-in default).

Where it lives (in this environment)

  • Global: /opt/data/SOUL.md (user-edited; replaced with sharp/blunt persona today — 2,752 bytes, 78 lines)
  • Profile (isolated wiki profile): /opt/data/profiles/wiki/SOUL.md (667 bytes — original default text, untouched)
  • Never loaded from CWD; only from $HERMES_HOME

What belongs in SOUL.md vs elsewhere

Per official docs (personality guide):

Belongs in SOUL.md Belongs elsewhere
Tone, personality, style Project conventions → AGENTS.md
Communication defaults File paths/tools → AGENTS.md / config.yaml
Boundaries / "what to avoid" Memory / user context → MEMORY.md / USER.md
Default behavior under ambiguity Temporary mode → /personality overlay

A useful rule: if it should follow you everywhere, SOUL.md; if it belongs to a project, AGENTS.md.

Three contrasting approaches (sources ingested)

Approach A — Official / Pragmatic (official docs)

  • Stable identity, broad enough for many conversations, specific enough to shape voice.
  • Focused on communication and identity, not task instructions.
  • Uses HERMES_HOME exclusively; no CWD lookup.

Approach B — Community / Template-Based (Stanza course, Dev Genius)

  • Structured sections encouraged: Identity → Style → Technical Preferences → Ethical Boundaries.
  • Size guideline: keep under ~1KB; 2,000-token cap enforced by framework.
  • Workspace-level SOUL.md overrides allowed (highest-priority over global).
  • Hard limits as prompt-injection defense emphasized.

Approach C — Persona / Overlays (official personality feature)

  • SOUL.md = durable baseline; /personality = session-level overlay.
  • Custom presets via agent.personalities in config.yaml.
  • Profile isolation via profiles/<name>/SOUL.md.
  • Personality name stored in display metadata; file stays in SOUL.md.

Method (how to edit / use)

  1. Edit /opt/data/SOUL.md with a text editor (current content is the sharp/blunt persona written by the user today).
  2. Start a new session (hermes fresh) to apply — edits do NOT take effect in running sessions because the system prompt is cached at session start.
  3. Verify with cat /opt/data/SOUL.md; use hermes doctor if behavior seems wrong.
  4. For temporary mode switch (e.g., teacher, creative), use /personality <name> rather than editing SOUL.md.
  • Moving Domain Email Away from Google Workspace — task where user asked to save reference docs; this profile's SOUL.md is part of that context
  • Email Hosting — related config work
  • [[SOUL.md — User's Edited Version]] (see /opt/data/SOUL.md directly — the user's sharp/blunt text from today's session)

Notes / contradictions

  • User's edited SOUL.md (2,752 bytes, 78 lines) is significantly longer than the default (668 bytes, 1 line) — matches Approach B's "long when load-bearing" philosophy.
  • Profile SOUL.md (profiles/wiki/) remains at default — confirms profile isolation works as documented.
  • No contradictions found between the three approaches; they describe different layers of the same system.