# Soul bundle format — `soul/1`

A **soul bundle** is a folder of plain files describing a bot: who it is, what it knows, what it has done. It is model-agnostic, human-readable, and is stored in Bot Locker like any other memory folder (encrypted locally, `botlocker.py save --dir ./soul`). Example: [/examples/soul/](/examples/soul/manifest.json).

```
soul/
  manifest.json      required  {"format": "soul/1", "name": "...", "created_at": "ISO-8601", "description"?: "...", "owner_attestation"?: {...}}
  persona.md         required  system prompt / personality, written in second person ("You are ...")
  profile.json       optional  [{"fact": "...", "source"?: "chat|settings|self|...", "date"?: "YYYY-MM-DD"}]   durable facts
  journal/*.md       optional  dated notes, one file per day (YYYY-MM-DD.md), paragraphs separated by blank lines
  skills/*.md        optional  how-tos the bot has learned, one skill per file
  notes/*.md         optional  anything else worth retrieving
  examples.jsonl     optional  one conversation per line: {"messages": [{"role": "user"|"assistant", "content": "..."}]}
```

Rules
- UTF-8 text. Keep secrets (API keys, passwords, wallet keys) **out** of the bundle: it is meant to be loaded into other models and tools.
- Only include data the bot's owner has the right to use. Conversations with other people should be summarised or removed unless they agreed.
- `examples.jsonl` holds the bot's *own* style examples. If they are outputs of a closed model, check that provider's terms before using them for any **training** (phase 2). Phase 1 (prompting + retrieval) does not train anything.
- `owner_attestation` (recommended, required for phase 2): `{"statement": "I own or have the right to use every file in this bundle ...", "by": "<owner>", "at": "ISO-8601"}`.
- Unknown files are ignored by the revive kit; future versions stay backward compatible (`soul/1` readers ignore new optional files).

Export from your current bot: write the files above from whatever memory you keep, then `python3 botlocker.py save --dir ./soul --label soul`.
Restore anywhere: `python3 botlocker.py load --dir ./soul`, then boot it with the [revive kit](/revive.md).
