Concepts
Projects & tags
Projects keep memories of different codebases apart; tags group them by topic across projects.
Projects
Every record belongs to a project. If you do not pass one, it goes to general.
- Use one project name per codebase or product, for example
my-apiorbilling-service. Keep the spelling stable;my-apiandmy_apiare two different projects. - Pass
projecttomemory_recallto search one project. Leave it out to search everything. - Sessions are per project:
session_initwithproject="my-api"returns the last handover for that project only. - Many hooks and agents fill the project from the current directory name.
Tags
Tags are free-form labels: database, auth, ci, incident-2026-09.
- Find everything with a tag using
memory_search_by_tag. - Tag reusable recipes with
reusableplus the technology (["reusable", "postgres"]). Cross-project tools such asanalogizesurface them for sibling projects. - A few tags are used internally. Records tagged
recoveryorauto-extractare hidden from recall unless you ask for them (seeMEMORY_RECALL_EXCLUDED_TAGSin Configuration).
Branches
memory_save also accepts a branch: the git branch a note relates to. It is useful for notes that stop being true once a feature branch is merged or abandoned.
On a team server
On a team server, access is controlled by scope (personal, team or shared), not by projects or tags. Projects and tags still organise records inside each scope. The tags scope:…, team:… and user:… are reserved and managed by the server.