How it behaves
Engramory uses plain markdown as its source of truth: one file per fact plus an always-loaded MEMORY.md index. The live store remains git-ignored. The protocol uses four role-based types: user, feedback, project and reference. feedback is procedural memory and requires Why: and How to apply: lines. Its curation contract covers deduplication before writing, updating instead of duplicating, deleting incorrect facts and excluding information already recorded in git, CLAUDE.md or source code.
The index is intended to stay within both limits below; whichever limit is reached first triggers the cap behaviour.
| Limit |
Behaviour |
150 lines / 20 KB |
Warning threshold |
200 lines / 25 KB |
Compact or ask before writing |
Guard and validator
The hard backstop is a PreToolUse hook using ctx.tools.guard(). It checks direct Edit, Write and MultiEdit operations affecting MEMORY.md. A change that would grow the index beyond either cap is denied. A shrinking or compaction rewrite is allowed.
The repository also provides tools/engramory_doctor.py, described as a validator for checking the memory store. The excerpt does not specify its command-line arguments or output format.
Requirements
Engramory is designed for local, file-based memory and does not require a database, embeddings or a server. Its rules are loaded through CLAUDE.md, AGENTS.md or the host’s equivalent rules file. The README describes the project as experimental, version 0.8.0, and assumes a single writer with serialised writes.
Known limits
The hook is not a global write guard. Bash, PowerShell, background Monitor commands, MCP file tools, external editors and sync clients can bypass it. The curation protocol is therefore best-effort and model-followed rather than guaranteed for every task. It is not intended as a mandatory cross-agent memory layer.
Written from the project's own documentation and kept in sync with it. Where the two disagree, the source is authoritative — read the README on GitHub