concepts
A file is the smallest unit of memory.
Anthracode's memory is a directory of markdown files. The agent reads them at session start, decides which are relevant, and writes new ones as it learns. You can hand-edit any of them.
Why files, not vectors
Vector stores are good at fuzzy recall but bad at one thing humans need: knowing what the agent thinks it knows. A markdown directory is legible, diffable, and version-controllable. If a memory is wrong, you delete the file.
Memory should remain useful when read by a human.
Layout
~/filesystem
.anthracode/memory/
user/ preferences and identity (one file per topic)
project/ per-project facts and conventions
shared/ team-shared, safe to commit
scratch/ volatile working memory, auto-trimmedWhat an entry looks like
~/.anthracode/memory/user/style.md
---
type: user
tags: [style, preferences]
created: 2026-04-12
---
Prefers terse responses. Skips trailing summaries.
Pushes back when implementation drifts beyond the requested change.Lifecycle
- Session start. The agent scans memory dirs and selects entries it judges relevant to the current task.
- During the session. New entries are written when something is learned that should outlive this run.
- On exit. Volatile
scratch/entries are trimmed; everything else stays.
Editing memory by hand
Memory is just markdown. $EDITOR .anthracode/memory/user/style.md works. The agent re-reads on the next turn — there's no cache to bust.
What NOT to put in memory
- Code, structure, conventions — derivable by reading the project.
- Git history —
git logis authoritative. - Secrets — memory is plain files; use OS keychains or env vars.
- One-off task state — that's what tasks are for.
