What gets written, and when
- Every turn. After each completed turn at your desk, from the phone or on a schedule, the user prompt and final answer are written to the repo's memory, tagged with the agent that did it. Tool chatter is not captured.
- Decisions. When an agent settles something, it writes a line starting with "Decision:" and that line is kept as a decision, the thing the other agent must not re-litigate.
- Your instruction files. CLAUDE.md, AGENTS.md, and DECISIONS.md are read in at install. See CLAUDE.md and AGENTS.md.
- At your desk too. Native hooks in Claude Code and Codex 0.158+ automatically inject memory before prompts and save completed turns. No memory tool call is required. An encrypted outbox retains turns while the daemon is down and replays them on restart.
Before every turn, the most relevant memories for the repo and the request are handed to the agent. Both agents can also search memory mid-task.
Memory stores decisions, the why, conventions, and what happened. It does not store your source code.
Read what it knows
/memory status: where memory lives, how much is in this repo
/memory search retry policy
tweetybird memory search "retry policy"
Correct a bad memory
Tell either agent: "that's wrong, we moved to Postgres 16 in August". The correction is written as a new decision and it wins from then on. To record something directly:
/memory remember we pin stripe-node to 14.x on purpose until the webhook refactor
tweetybird memory remember "we pin stripe-node to 14.x on purpose"
Export as markdown
/memory export this repo, sent to you as a .md file
/memory export all every repo
tweetybird memory export --all -o memory.md
Delete everything
/memory forget this repo, asks you to confirm with a button
/memory forget all every repo
tweetybird memory forget --all --yes
Deletion removes the entries from the memory service and the local cache. It cannot be undone, so export first if you might want it back.
Where it lives
Memory is included with every plan and runs on MemoryRouter. You never create a MemoryRouter account; your license comes with its own private memory vault. A local cache on your Mac is encrypted at rest (AES-256-GCM) with a key that never leaves it, and the thread keeps working from the cache if the network drops. Team plans share one vault per team, and can pin memory to your own storage; see Team admin.
The same repo on two Macs shares one memory because memory is keyed on the repo's git remote, not the folder path.