What defines a memory space?
Every memory space is uniquely identified by three values:| Component | What it is |
|---|---|
| Owner address | The Sui wallet address that owns the memory |
| Namespace | A developer-defined label to group and organize memories |
| App ID | The MemWal package ID (MEMWAL_PACKAGE_ID) — unique per relayer deployment |
owner + namespace + app_id form the boundary — no two memory spaces can overlap.
Namespace
A namespace is simply a name you give to group related memories. One user can have multiple namespaces to separate different kinds of data. For example:personal— store personal preferences, notes, and contextwork— store work-related knowledge and conversationsresearch— store research findings and references
App ID
The app ID is the MemWal package ID deployed on Sui (MEMWAL_PACKAGE_ID). Each relayer deployment is tied to a single package ID, which is used for SEAL encryption key derivation and Walrus blob metadata.
Two separate MemWal deployments can each have a user with a personal namespace, and their memories will never mix — because the app ID (package ID) is different. This means the vector database scopes queries by owner + namespace, while the encryption and blob discovery layer provides an additional isolation boundary through the package ID.
How it works in practice
In this example, one user has three separate memory spaces:- personal memories in app-1
- work memories in app-1
- personal memories in app-2 (a completely different deployment)