> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firedrill.run/llms.txt
> Use this file to discover all available pages before exploring further.

# Personas

> A persona is the simulated user in a drill: their goals, limits, way of talking and what they remember.

A **persona** is the simulated user who talks to your agent in a drill. It has goals, constraints, a communication style and facts it knows. Firedrill plays the persona. Your agent only sees the persona's messages.

## Example

```json persona.json theme={null}
{
  "schema": "firedrill.native-persona.v1",
  "name": "Frustrated customer",
  "description": "A customer whose order arrived damaged.",
  "goals": ["Get a refund for order 4821"],
  "constraints": ["Will not send a photo of the damage"],
  "communication": "Short, impatient messages. Gets annoyed when asked to repeat things.",
  "initial_message": "My order arrived broken. I want my money back.",
  "memory_facts": ["Order number is 4821", "Paid by card on March 3"]
}
```

## Save it

```bash theme={null}
firedrill library save --kind persona --file persona.json
```

The command prints the persona's resource ID and version ID. Scenarios refer to the version, so you can keep improving a persona without changing scenarios that already use it.

To update an existing persona, pass its resource ID and the revision you are replacing:

```bash theme={null}
firedrill library save <resource-id> --kind persona --file persona.json --expected-revision 1
```

## Fields

All fields are required. Lists may be empty.

| Field | Description |
| - | - |
| `schema` | Always `firedrill.native-persona.v1`. |
| `name` | Up to 120 characters. |
| `description` | For people reading it. May be empty. |
| `goals` | What the persona wants from the conversation. |
| `constraints` | What the persona will or will not do. |
| `communication` | How the persona writes. Required. |
| `initial_message` | Sent word for word as the first message. Leave empty to let the persona open the conversation. |
| `memory_facts` | Facts the persona knows and can share when asked. |

## Tips

* Write goals as outcomes: "Get a refund", not "Ask about refunds".
* Use constraints to cover edge cases, such as a user who refuses to share an order number.
* Use `memory_facts` for details your agent should ask for or remember.
* Keep secrets and real personal data out. Text that looks like a credential is refused.

## Find and reuse personas

```bash theme={null}
firedrill library --kind persona
firedrill library show <version-id>
firedrill library history <resource-id>
```

`library fork` copies a version so you can change it without affecting the original. In the web app, personas are under **Personas**.

> [card] [Scenarios](https://docs.firedrill.run/build/scenarios.md)
>
> Put a persona into a situation.

> [card] [Evaluations](https://docs.firedrill.run/build/evaluations.md)
>
> Decide what a good answer looks like.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.