arizuko

arizuko › concepts › personas

personas

A persona gives an agent its voice. It is a PERSONA.md file in the group folder, so it is one more file in the ant: the agent is the folder. The frontmatter holds named fields, such as the TTS voice and a short reminder of how to sound. The body is the long voice guide, which goes into the system prompt. You change the persona by editing the file.

Each group has one persona file

Each group has one file, at <data-dir>/groups/<folder>/PERSONA.md. The operator edits it directly, through WebDAV, an editor on the host or the dashboard. No persona table exists.

The frontmatter holds three fields

The file uses standard YAML frontmatter between --- lines:

---
name: Atlas
summary: Direct, no preamble. Defaults to short answers. Lowercase info, capitalized errors.
voice: nova
---

# full persona

Long-form description of register, tone, taboo words, in-jokes,
worked examples, … sent in the system prompt every turn.
name
The display name in the <persona name=...> envelope of each turn. Without it, the name is the folder path.
summary
A one-paragraph reminder that goes into every turn. It keeps the register stable across long sessions.
voice
The TTS voice id that send_voice uses when the call has no voice argument. Without it, the instance-wide TTS_VOICE applies.

The summary goes into every turn

On every inbound turn, routd reads the file, parses the frontmatter and writes this block:

<persona name="Atlas">
Direct, no preamble. Defaults to short answers. Lowercase info, capitalized errors.
</persona>

The block sits next to the autocalls envelope inside the user message. So the agent keeps its voice even when the session is long and the system prompt is far back in the context.

The whole file goes into the system prompt. runed sends PERSONA.md with every turn. A SYSTEM.md in the group replaces the base prompt completely, and the persona never merges into it. The agent can read the guide again with the /persona skill.

Voice, register floor and length live in three files

Three layers decide how the agent sounds, and each layer has one file:

Voice
PERSONA.md, one per group.
Register floor
The rules every agent keeps, whatever its voice, in the always-loaded ant/CLAUDE.md.
Length and format
The core messaging skill gives channel-specific guidance.

An incomplete persona file gives no persona block

If PERSONA.md is missing, has no frontmatter, has no summary field or has an empty summary, personaBlock returns "". It does not fall back to the body text, guess from the folder name or use the persona of a parent folder. The agent runs in its default register.

A persona edit applies on the next turn

An edit to PERSONA.md applies on the next turn, with no migration and no rebuild.

Related pages cover the prompt and the voice

the ant shows what else goes into the prompt and where it is built. voice shows the TTS path that reads the voice field. scopes shows how groups, folders and the files in each folder relate.