Skip to content

Storage

Everything lives under ~/.memcal/ by default (MEMCAL_HOME moves it):

~/.memcal/
├── memcal.db       typed state, archive, provenance, full-text search
├── brief.md        the compact snapshot an agent sees
├── calls/          prompts, replies, usage, model-call traces
├── plugins/        optional custom source plugins
└── wiki/           readable pages for people, places, projects, preferences

Two substrates, chosen for different reasons. SQLite holds everything structured — events, to-dos, the archive and its FTS5 index, handles, senders — one file, built in. Markdown files hold the wiki and only the wiki: prose pages about parts of your life, human-readable, hand-editable, at home in any editor.

The archive is append-only. Typed rows can be corrected, merged, or withdrawn, but evidence and value history stay queryable. Model-call traces stay local, so any row can be chased back to the exact generation that wrote it.

Treat the store as sensitive: keep ~/.memcal, .env files, model-call traces, and benchmark output out of version control, guarded by normal filesystem access controls.