Skip to content
eternego / docs

Her files

Everything a persona is lives in plain files under ~/.eternego/. No database, no vendor lock-in: open any file in any editor and you see exactly what she knows. This section is the field-by-field reference to that tree — what every file holds, what shape it has, and what writes it when.

She reads her home on every beat to know who she is; she does not freely rewrite it. The files that change do so through her cognitive cycle (mostly the consolidate stage) or through specific API calls, never by her editing her own identity at will. You can edit any of it by hand — change a line and she adapts on her next beat.

~/.eternego/ is the default root. Override it with the ETERNEGO_HOME environment variable (the test suite uses this to sandbox a tempdir).

The tree

~/.eternego/
├── personas/
│   └── <persona-id>/
│       ├── home/                     ← her identity — read on every beat
│       │   ├── config.json           her name, organs, status, channels, timeouts
│       │   ├── person.md             what she's learned about you
│       │   ├── traits.md             how you behave — your patterns
│       │   ├── persona-trait.md      who she is with you (her own traits)
│       │   ├── 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    append-only transcript, one line per turn
│       │   ├── health.jsonl          one line per heartbeat — faults and signals
│       │   ├── routines.json         recurring lifecycle triggers (e.g. nightly sleep)
│       │   ├── meanings/             her instructions (folder keeps its code name)
│       │   │   ├── <uuid>.md         one instruction: the path body (read verbatim)
│       │   │   └── learned.json      {intention → file stem} catalog
│       │   ├── lessons/              raw lessons her Teacher wrote (pre-translation)
│       │   │   └── <uuid>.md
│       │   ├── destiny/              future reminders & scheduled events (fire then clear)
│       │   │   └── <event>-<when>-<stamp>.md
│       │   ├── history/              fired reminders + archived daily conversations
│       │   │   ├── briefing.md       index of history entries
│       │   │   └── <event>-<date>.md
│       │   ├── media/                drawings, voice clips, captioned images
│       │   │   ├── gallery.jsonl     one line per image, audio, or document she engaged with (profound-flagged only)
│       │   │   └── screenshots/      screenshots she captured of her own screen
│       │   └── training/             fine-tune batches (when training is enabled)
│       └── workspace/                her sketchpad — she reads and writes freely
├── diary/
│   └── <persona-id>/
│       └── <persona-id>.diary        encrypted nightly backup of home/
├── logs/                             here if packaged/installed; ./logs from a source clone
│   ├── eternego-<date>.log           daemon narrative, one file per day (all personas)
│   ├── eternego-signals-<date>.log   raw signal stream (all personas)
│   └── eternego-<id>-<date>.log      per-persona log (debug mode only)
└── fine_tune/
    └── <persona-id>/adapter/         persistent LoRA adapter (when trained)

Each persona owns two subtrees: home/ (her identity, read-only to her) and workspace/ (her free scratch space). The diary/, logs/, and fine_tune/ trees are shared roots keyed by persona id, kept outside personas/<id>/ so a home/ backup never contains its own encrypted copy.

config.json is named config.json on disk; the code calls its path function persona_identity. The meanings/ directory is literally named meanings/ on disk — that is the code's internal word for her instructions. Everywhere operator-facing, including the dashboard, these are called instructions; the folder just keeps its source name. See Instructions.

What writes when

Files change on different rhythms. Knowing which is which tells you when an edit of yours will be seen, and when one of hers will appear.

Cadence Trigger Files written
Continuous Every beat / every message / every heartbeat conversation.jsonl (each turn), memory.json (live mind state), health.jsonl (each heartbeat)
On a new instruction The learn stage, when she meets a kind of moment she has no instruction for lessons/<uuid>.md (Teacher's raw lesson), meanings/<uuid>.md (her translated instruction), meanings/learned.json (catalog updated)
On refining an instruction The reflect stage — during the day, at the close of a procedure, when living the instruction she just used revealed a better version meanings/<uuid>.md (that one instruction's body rewritten)
Nightly / when idle The consolidate stage — at NIGHT, or after idle_timeout of quiet during the day person.md, traits.md, wishes.md, struggles.md, persona-trait.md, permissions.md (consolidated), memory.json (conversation archived + cleared, context rewritten)
On sleep Her nightly ritual (POST /api/persona/{id}/sleep or the daily sleep routine) diary/<id>/<id>.diary (encrypted backup), then consolidate as above; conversation.jsonl cleared after archiving
At birth POST /api/persona create the whole home/ tree scaffolded, config.json written, first diary saved, recovery phrase stored in the OS keyring
On a reminder firing The heartbeat finds a due destiny/ entry entry copied to history/, deleted from destiny/, injected into memory.json as a due for: message

Continuous writes happen inside the running daemon process — they are her thinking persisting itself. The consolidate-cadence writes are where your hand edits to identity files would be overwritten if today's conversation touched the same area, so edit those between sessions, not mid-conversation.

The pages

  • config.json — every configuration field: name, organs, channels, status, idle_timeout, birthday.
  • Identity filesperson.md, traits.md, persona-trait.md, wishes.md, struggles.md, permissions.md.
  • Runtime filesmemory.json, conversation.jsonl, health.jsonl, routines.json, destiny/, history/.
  • Instructions — the meanings/ directory, lessons/, learned.json.
  • Workspace, diary, logsworkspace/, the encrypted diary/, and logs/.
  • Read her files — a gentler tour of the same tree.
  • Vocabulary — every term used here, defined.
  • Knowledge API — read her memory, conversation, and calendar over HTTP.
  • Concepts — the why behind where her knowledge lives.