Overview
The Memory Inspector gives developers full visibility into what an AI agent has stored in Recall. You can browse individual memories, view Merkle root history, filter by time range or HNSW layer, and verify that your local state matches what’s on Solana. It ships in three forms:- Rust API -
collection_stats(),inspect(),get_memory(),search_with_records(),merkle_history()onHNSWIndex - TypeScript SDK -
MemoryInspectorclass viacollection.inspector() - Inspector UI -
<veclabs-inspector>web component that embeds anywhere
Quick Start
API Reference
inspector.stats()
Returns collection-level statistics without iterating through memory records.inspector.inspect(query?)
Full inspection - returns stats plus a filtered list ofMemoryRecord objects.
inspector.get(id)
Returns a singleMemoryRecord by ID, or null if not found.
inspector.searchWithRecords(vector, k)
Runs a top-K similarity search and returns fullMemoryRecord objects alongside their scores.
inspector.merkleHistory()
Returns the full chronological history of Merkle root changes.inspector.verify()
Shorthand to check whether the local Merkle root matches the on-chain root.Inspector UI Component
Installation
Usage (embedded)
Usage (standalone)
InspectorQuery Filters
| Field | Type | Description |
|---|---|---|
metadataFilter | Record<string, unknown> | Exact-match filter on metadata fields |
writtenAfter | number | Unix ms - only memories written after this timestamp |
writtenBefore | number | Unix ms - only memories written before this timestamp |
hnswLayer | number | Filter to a specific HNSW layer (0 = base) |
limit | number | Max results (default 50, max 500) |
offset | number | Pagination offset |
Reading the Merkle Timeline
The Merkle Timeline shows every root change since the collection was created. Each entry records:- root - The 256-bit SHA-256 Merkle root at that point in time
- timestamp - When the change happened (Unix ms)
- memoryCountAtTime - How many memories existed when this root was computed
- trigger - What caused the change:
"write","delete", or"bulk_write"
Verification: What rootsMatch Means
When you callinspector.verify(), the inspector computes the current Merkle root from all stored vector IDs and compares it to the root stored on Solana.
match: true- The local collection is in sync with the on-chain root. No vectors have been tampered with, added, or removed since the last Solana sync.match: false- There’s a discrepancy. Either the collection was modified locally without syncing to Solana, or the stored vectors have been corrupted.