Memory
Agents forget between sessions. VibeDoc keeps two kinds of memory in your repo:
- The handoff,
memory/MEMORY.md: what happened last session and what’s next.vibedoc_read_memoryreads it at session start;vibedoc_update_memoryrewrites only the sections it is given, so hand-written sections survive. Every write keeps a snapshot you can restore from Memory → History. - Knowledge entries,
memory/entries/E001-<slug>.md: one fact per file, typed as convention, gotcha, decision or preference.vibedoc_save_entrywrites them; session start lists them within a token budget, andvibedoc_recallfinds them by keyword. Claiming a task also shows the related entries.
On /memory you can search, edit and delete entries, and see how they link to tasks and docs. vibedoc_import_memory pulls in Claude Code’s own memory files; vibedoc_export_memory writes the entries into AGENTS.md / CLAUDE.md for agents that don’t use MCP.
Shared with your group
Section titled “Shared with your group”When repos make one product (an api and a web, say), put them in a group on /projects. A lesson learned in one repo can then reach the agents in the others.
An entry has a scope. By default it belongs to its project. Save it with scope: "group" and it is shared with every project in your project’s groups:
- An agent in
apicallsvibedoc_save_entry { type: "convention", summary: "Money is integer cents", scope: "group" }. The file stays inapi/memory/entries/and gets a**Scope:** groupline, so git shares it like any other file. - The next session in
weblists it invibedoc_read_memoryasapi:E002 (shared · api) · convention · Money is integer cents. Shared lines come after the project’s own entries and count toward the same token budget. vibedoc_recallinwebfinds it, and so does a task’s related memory. Fetch its body withvibedoc_get_entries { ids: ["api:E002"] }: the part before the colon is the owning project’s id.
Entries with project scope never leave their repo. Saving with scope: "project" turns a shared entry back into a private one. A project in no group refuses scope: "group", and its memory works exactly as before. The handoff, MEMORY.md, always stays per project.
On /memory, a project in a group gets a scope filter (All · This project · Shared). A shared row from another repo shows that repo’s name. Editing it or deleting it changes the file in that repo. Share with group and Keep in this project switch an entry’s scope.