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​
| Type | Use Case |
|---|---|
personal | Individual use — your own AI memory |
team | Shared workspace for a team or project |
Roles​
| Role | Permissions |
|---|---|
owner | Full control — CRUD, invite members, manage agents, delete volume |
collaborator | Read + 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_idproperty, 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