Mnemo gives an AI assistant memory it can prove: every saved memory is stored on
Walrus and indexed in a user-owned Sui MemoryVault.
Built for Sui Overflow 2026 · Walrus Track
Live demo: mnemo-verifiable-memory.netlify.app
Most agent memory is hidden in provider accounts, private databases, or vector stores the user cannot inspect. That makes memory hard to audit, hard to move, and hard to trust.
Mnemo turns memory into a verifiable asset:
- Persistent: memories survive new chat sessions.
- Auditable: each memory has a Walrus blob id and Sui transaction trail.
- User-owned: the on-chain vault is owned by the configured Sui address.
- Portable: another agent can read the same vault and recall the same facts.
User chat
│
▼
Mnemo agent (Claude + tool use)
│
├─ save_memory → Walrus blob → Sui MemoryVault entry
│
└─ recall_memory → Sui MemoryVault → Walrus blob contents
The assistant decides when a fact is durable enough to save. It writes the memory to Walrus, records the blob id in the Sui vault, and then surfaces verification links in the UI.
Assistant replies are rendered as GitHub-flavored Markdown, so bold text, italics, lists, links, code blocks, and tables appear as polished chat content instead of raw formatting characters.
| Layer | Technology |
|---|---|
| Agent | Anthropic Claude with a bounded manual tool loop |
| Memory storage | Walrus testnet publisher and aggregator |
| Ownership index | Sui Move MemoryVault object |
| Web app | Next.js 16, React 19, Tailwind CSS v4 |
| UI | shadcn/ui primitives, lucide icons, Sonner toasts |
.
├── docs/
│ ├── BRAND.md
│ └── SETUP.md
├── move/
│ └── memory_vault/
│ ├── sources/memory_vault.move
│ └── tests/memory_vault_tests.move
└── web/
├── src/app/api/chat/route.ts
├── src/app/api/vault/route.ts
├── src/components/mnemo/
├── src/lib/agent.ts
├── src/lib/sui.ts
└── src/lib/walrus.ts
cd move/memory_vault
sui move test
sui client publish --gas-budget 100000000Copy the published package id.
cd ../../web
cp .env.example .env.local
npm installFill in .env.local:
| Variable | Purpose |
|---|---|
ANTHROPIC_API_KEY |
Server-side Claude API key |
MNEMO_PACKAGE_ID |
Published Sui package id |
SUI_NETWORK |
Usually testnet |
SUI_ADDRESS |
Address that owns the vault |
SUI_SECRET_KEY |
Server-side signing key for vault writes |
MNEMO_VAULT_ID |
Optional pinned vault id; leave blank to auto-create |
npm run devOpen the printed local URL, send a message with something worth remembering, and watch the Memory Timeline populate with Walrus and Sui verification links.
For a complete walkthrough, see docs/SETUP.md.
| Item | Value |
|---|---|
| Network | Sui testnet · Walrus testnet |
| Move package | 0x6bff2c7afa344945f55673cd88ce29d99b270e54ddf5cb53ae5e69239daa6ff1 |
| Fresh empty vault | 0xb9ff97e4579f4c362eb29d32294940c79280b023638445b6d2709611d3611d6e |
The fresh vault above was created with zero entries and is suitable for a clean demo session.
| Command | What it does |
|---|---|
npm run dev |
Starts the Next.js development server |
npm run lint |
Runs ESLint |
npm run build |
Builds the production app |
node ./scripts/smoke.mjs |
Publishes a test blob, creates a vault, writes, and reads it back |
sui move test |
Runs Move unit tests |
- Browser wallet signing so each user owns writes directly.
- Encrypted memories using Seal for private agent knowledge.
- A small SDK so other agent frameworks can use Mnemo vaults.
- Sharing and revocation flows through Sui object ownership.