MemWal.create(config)
| Property | Type | Required | Default | Notes |
|---|---|---|---|---|
key | string | Yes | — | Ed25519 delegate private key in hex |
accountId | string | Yes | — | MemWalAccount object ID on Sui |
serverUrl | string | No | http://localhost:8000 | Relayer URL |
namespace | string | No | "default" | Default namespace for memory isolation |
MemWal Methods
remember(text, namespace?): Promise<RememberResult>
Store one memory through the relayer. The relayer handles embedding, SEAL encryption, Walrus upload, and vector indexing.
Returns:
recall(query, limit?, namespace?): Promise<RecallResult>
Search for memories matching a natural language query, scoped to owner + namespace.
limitdefaults to10
analyze(text, namespace?): Promise<AnalyzeResult>
Extract memorable facts from text using an LLM, then store each fact as a separate memory.
Returns:
restore(namespace, limit?): Promise<RestoreResult>
Rebuild missing indexed entries for one namespace from Walrus. Incremental — only re-indexes blobs that aren’t already in the local database.
limitdefaults to50
health(): Promise<HealthResult>
Check relayer health. Does not require authentication.
Returns: { status: string, version: string }
getPublicKeyHex(): Promise<string>
Return the hex-encoded public key for the current delegate key.
Lower-level methods
These exist on theMemWal class for advanced use cases:
| Method | Description |
|---|---|
rememberManual({ blobId, vector, namespace? }) | Register a pre-uploaded blob ID with a pre-computed vector |
recallManual({ vector, limit?, namespace? }) | Search with a pre-computed query vector (returns blob IDs, no decryption) |
embed(text) | Generate an embedding vector for text (no storage) |
MemWalManual
rememberManual(text, namespace?): Promise<RememberManualResult>
Embed locally, SEAL encrypt locally, send encrypted payload + vector to relayer for Walrus upload and vector registration.
recallManual(query, limit?, namespace?): Promise<RecallManualResult>
Embed locally, search via relayer, download from Walrus, SEAL decrypt locally. Returns decrypted text results.
restore(namespace, limit?): Promise<RestoreResult>
Same as MemWal.restore() — delegates to the relayer.
isWalletMode: boolean
Whether this client uses a connected wallet signer (vs. raw keypair).
Config notes
suiNetworkdefaults tomainnetsealKeyServerslets the client override the built-in SEAL key server object IDs- All
@mysten/*peer dependencies are loaded dynamically — only needed if you useMemWalManual
withMemWal
- Reads the last user message
- Runs
recall()against MemWal - Filters by minimum relevance (
minRelevance, default0.3) - Injects matching memories into the prompt as a system message
- Optionally runs
analyze()on the user message (fire-and-forget) - Saves extracted facts asynchronously
MemWalConfig):
| Option | Default | Description |
|---|---|---|
maxMemories | 5 | Max memories to inject per request |
autoSave | true | Auto-save new facts from conversation |
minRelevance | 0.3 | Minimum similarity score (0–1) to include a memory |
debug | false | Enable debug logging |
Account Management
| Function | Description |
|---|---|
generateDelegateKey() | Generate a new Ed25519 keypair (returns privateKey, publicKey, suiAddress) |
createAccount(opts) | Create a new MemWalAccount on-chain (one per Sui address) |
addDelegateKey(opts) | Add a delegate key to an account (owner only) |
removeDelegateKey(opts) | Remove a delegate key from an account (owner only) |
Utility Functions
| Function | Description |
|---|---|
delegateKeyToSuiAddress(privateKeyHex) | Derive the Sui address from a delegate private key |
delegateKeyToPublicKey(privateKeyHex) | Get the 32-byte public key from a delegate private key |