Almost everything LifeOS knows is stored as plain text on the filesystem: Markdown for documents, JSONL for logs and events, YAML and JSON for configuration. You and the model can both open any of it, read it, fix it, and see its history in git.
Why text
Databases hide things. A fact inside SQLite or Postgres needs a query to see, a tool to change and a migration to reshape, and git can’t show you what changed. Text has none of those problems. It is the format models read best, it diffs cleanly, and it lasts longer than any storage engine.
LifeOS keeps a short list of exceptions: databases other programs own that it only reads, one audited store for its asset graph, and the cloud services that need a hosted table. Each is named in the architecture docs, and a new one has to be argued for.
Why no RAG
LifeOS has kept retrieval-augmented generation out of its memory and files since it started in 2025. Chopping documents into chunks and matching them by embedding similarity loses structure and loses exact wording, and it adds a whole system to maintain. Well-organized text with cross-references, searched with fast exact tools like ripgrep, gives what people want from RAG without those costs. The memory system’s retriever uses keyword ranking over text and no vector index.
In practice
When the assistant needs to know what you decided about a project last month, it searches the project’s files and its session history, reads the actual passages, and quotes them. When something looks wrong, you open the same file and see the same words.
