Skip to content
eternego / docs

Read her files

Everything a persona is lives in plain files under ~/.eternego/personas/<id>/home/. Markdown, JSON, JSONL — no database, no vendor format. Open any of it in any editor and you see exactly what she knows about you and how she's set up.

This page is the quick tour. The field-by-field reference — every key, every shape, what writes it when — is Her files.

~/.eternego/ is the default root. Set the ETERNEGO_HOME environment variable to put it somewhere else.

The home directory

The <id> below is her persona id — the UUID from the dashboard, or the directory name itself.

~/.eternego/personas/<id>/home/
├── config.json          ← her name, organs, status, channels, idle_timeout
├── person.md            ← what she's learned about you
├── traits.md            ← how you speak, decide, react — your patterns
├── persona-trait.md     ← who she is with you, in her own words
├── wishes.md            ← the directions you want to move in
├── struggles.md         ← what holds you back
├── permissions.md       ← what you've granted her, what you haven't
├── memory.json          ← her live mind: messages + archive + context
├── conversation.jsonl   ← the running transcript, one line per turn
├── health.jsonl         ← one line per heartbeat — faults and signals
├── routines.json        ← recurring lifecycle triggers (e.g. nightly sleep)
├── destiny/             ← future reminders & scheduled events (fire, then clear)
├── history/             ← fired reminders + past days' conversations
├── media/               ← drawings, voice clips, images she's looked at
│   ├── gallery.jsonl    ← one line per image, audio, or document she engaged with — profound-flagged media only, with a `kind` field
│   └── screenshots/     ← screenshots she captured of her own screen
├── lessons/             ← raw lessons her Teacher wrote (pre-translation)
├── meanings/            ← her instructions (the folder keeps its code name)
│   └── learned.json     ← catalog: intention → instruction file
└── training/            ← fine-tune batches (only when training is enabled)

A couple of names worth pinning down:

  • config.json is the serialized persona record. It holds her organs (the models she thinks, draws, speaks, sees, hears, teaches, and researches with — each with its own name, provider, url, and api_key), her status, her channels, and her timers. Her API keys are written here in clear text — protect the file. Full field list: config.json.
  • meanings/ is the on-disk name for her instructions. An instruction is a situation she knows how to handle, written as a short procedure she follows. Everywhere operator-facing — these docs, the dashboard — they're called instructions; the folder just keeps its source name. See Instructions.

Not every file exists from birth. destiny/, history/, lessons/, meanings/, and training/ fill in as she lives and learns. Her channels are stored inside config.json, not in a separate file.

What changes when

Files change on different rhythms. Knowing which is which tells you when a hand edit of yours will be seen, and when something of hers will appear:

  • Continuously, every beatconversation.jsonl (each turn), memory.json (her live mind state), health.jsonl (each heartbeat). This is her thinking persisting itself.
  • When she learns something new — a file appears in lessons/ (the raw lesson her Teacher wrote) and a matching .md in meanings/ (her own translation into an instruction), with meanings/learned.json updated to point at it.
  • Nightly, or after she's been idle (idle_timeout) — the consolidate stage distills person.md, traits.md, persona-trait.md, wishes.md, struggles.md, and permissions.md from the day's conversation, and archives + clears the live conversation.
  • When you grant or refuse somethingpermissions.md, when consolidate picks up an explicit grant, take, or refusal.

Because consolidate rewrites the identity files, edit those between sessions rather than mid-conversation, so today's consolidation doesn't overwrite your change. (More on editing by hand in Edit her.)

Her status

config.json carries her vital status — always one of three values:

Status Running? Meaning
active yes Awake and living her cycle.
hibernate no Parked. Her agent is torn down — no cycles, no cost — until you wake her.
sick no She hit a fault she couldn't recover from and took herself off the cycle so she doesn't loop. Fix the cause, set her back to active.

Sleeping isn't a stored status — it's an action: she runs her nightly ritual (consolidate → diary) and wakes back to active. See status.

Setting status has real effects on her running process — see Lifecycle.

Workspace

~/.eternego/personas/<id>/workspace/ is a separate directory she reads and writes freely — drafts, scripts she wrote, files she's working on. A sketchpad, not part of her identity. (Her home/ she reads on every beat but doesn't rewrite at will; her workspace/ is hers to scribble in.)

Diary

~/.eternego/diary/<id>/<id>.diary is the encrypted nightly backup of her home/, written by her sleep ritual. It's the one thing needed to migrate her to a new machine — and the recovery phrase from the wizard is the key that unlocks it. It lives outside personas/<id>/ so a home/ backup never contains its own encrypted copy.

Logs

~/.eternego/logs/ holds the daemon log (eternego-<date>.log, one file per day, shared across all personas). Useful when she's behaving unexpectedly. Where logs land and what debug mode adds is covered in Operating.

Continue to

Edit her → — change something by hand and watch her adapt.