Skip to main content

Volumes

A volume is an isolated memory space in SharedMemory. Think of it as a workspace — all memories, documents, entities, and the knowledge graph are scoped to a volume.

Why Volumes?​

  • Isolation — No data leaks between volumes
  • Collaboration — Share a volume with teammates for collective AI memory
  • Per-agent access — Each agent can be connected to specific volumes with granular permissions

Volume Types​

TypeUse Case
personalIndividual use — your own AI memory
teamShared workspace for a team or project

Roles​

RolePermissions
ownerFull control — CRUD, invite members, manage agents, delete volume
collaboratorRead + write memories, upload documents, query

Inviting Collaborators​

Volume owners can invite others by email:

POST /memory/volume/:volumeId/invite
{ "email": "teammate@company.com", "role": "collaborator" }

An invitation email is sent. Once accepted, the collaborator has read/write access.

Data Isolation​

Every storage layer enforces volume isolation:

  • Qdrant — Separate collection per volume (memory_entries_{volume_id})
  • Neo4j — All nodes carry volume_id property, all queries filter by it
  • Postgres — Queries always include WHERE volume_id = $1

Shared Memory, Private Conversations​

In shared volumes:

  • Memory (knowledge graph, documents, entities) is shared among all members
  • Chat conversations are private — each user has their own chat history
  • The AI knows who is asking (user identity resolution) and can resolve "I", "me", "my" correctly