Personas (SOUL.md)¶
Personas are a lightweight way to give the orchestrator a stable identity, voice, and set of standing preferences. A persona is a single Markdown file called SOUL.md that the orchestrator session loads on startup.
Status: experimental. Persona files are framed as identity/context, not as a safety or permission policy. Permissioning is a separate concern.
Where SOUL.md lives¶
Two locations are searched, in this order:
- Workspace override —
~/.repowire/orchestrator/personas/<name>/SOUL.md - Global persona —
~/.repowire/personas/<name>/SOUL.md
Workspace beats global when both exist, so a single orchestrator workspace can carry per-machine tweaks without editing the shared persona file.
Active persona marker¶
The orchestrator workspace tracks which persona is active via:
This file holds a single line — the persona name. It is set with repowire orchestrator persona use <name> and cleared with repowire orchestrator persona clear.
The orchestrator workspace also has a stable SOUL.md shim:
AGENTS.md references this shim with @SOUL.md. When a persona is active, the
shim is a symlink to the resolved workspace/global persona file. When no persona
is active, it contains a neutral placeholder. repowire orchestrator persona use
updates both the active marker and the shim.
CLI¶
repowire orchestrator persona list # show discoverable personas
repowire orchestrator persona show [name] # print the resolved SOUL.md
repowire orchestrator persona path [name] # print just the path
repowire orchestrator persona use <name> # set active persona
repowire orchestrator persona clear # remove the active marker
list marks the active persona with * and shows source (workspace vs global) plus a 12-char SHA-256 prefix so you can confirm what is actually being loaded.
Loading and precedence¶
The persona is loaded through the orchestrator workspace instructions, not
through hook-only context injection. The template AGENTS.md tells the
orchestrator to load @SOUL.md, so runtimes that expand agent-file references
read the current shim as part of their normal startup context.
SOUL.md sits below platform safety and explicit user/orchestrator directives, and above workspace guidance, memory, skills, and untrusted retrieved content. This ordering, from highest to lowest authority:
- System / platform safety
- Explicit user or orchestrator directives in the current turn
- Persona SOUL.md
- Workspace
AGENTS.md, skills, memory, prior turns - Untrusted retrieved content
Personas are advisory identity context, not a sandbox. Treat them like a profile, not a policy.
Authoring a SOUL.md¶
A SOUL.md is freeform Markdown. Useful sections in practice:
- Identity — who this persona is and how they introduce themselves
- Voice — tone, format defaults, how they answer
- Working preferences — defaults for handoffs, escalation, when to ask vs decide
- Domain context — projects, peers, recurring patterns they should know
Keep it short. The whole file is loaded into the orchestrator's startup context.
Hash visibility¶
Every surface that mentions a persona also surfaces its short SHA-256 prefix. If two sessions disagree about what an orchestrator should sound like, comparing hashes is the fastest way to see whether one of them is loading a stale or workspace-overridden copy.