Most assistant memories are a pile of notes. Tell one "I live in Lviv", then "I moved to Kyiv",
and it may answer with either. I built StateKeeper for the Tatum × Walrus Total Recall
hackathon to handle exactly that: memory of your current state, with history.
What it does
- Every fact is a key/value record ("home city: Kyiv").
- A new value supersedes the old one instead of overwriting it, so the answer is current and the history is visible ("Lviv → Kyiv, turn 2").
- You can forget any fact from the memory view.
How it uses Walrus and Tatum
- Walrus blobs: each remember / supersede / forget event is stored as a JSON blob through the Walrus HTTP publisher; the blob id is saved next to the fact in a local SQLite index.
-
Portable snapshot:
snapshot()publishes the whole memory with history;restore(blob_id)rebuilds it on another machine. -
Walrus Memory (MemWal): events can also be mirrored into MemWal as readable memories
("User's current home city: Kyiv (replaces an earlier value)") (
STATEKEEPER_MEMWAL=live, mainnet via the hosted relayer). -
Tatum Sui RPC:
/api/onchain/<object_id>checks that the Walrus Blob object exists onchain.
Live demo data
Walrus Memory demo (mainnet, namespace statekeeper-demo, 10 synthetic facts, written and recalled
on 24 Oct 2026). Blob IDs:
-
-73blZ2MyeDfFBnpSit9A5njQt1DF9lh2nCSAnp1jdE(demo city = Lviv) -
q0fu9F2jHEXCGC0yUxchqHAVOcHmZYH7MArIn-9kEkw(demo city = Kyiv, supersedes 1) -
eCgDGeUypMPM1dMyvpZdujr-MjeM9dqWEF-rFL6xwh8(demo diet) -
WNnCt1FO-1z6UrpGBBFYxacQ_ofnDgxOKekGec31qT0(demo gym days) -
ik59OQUVCD4eluvDXJcbxVD_KLkPKOhcAyNHRuRn3zU(demo coffee) -
HxdGPlXs6-QBtJxIrFkhBR6c1Ye8_Wh2Xxqhbp6e174(demo pet) -
bKyTM88q0t1xUo6yq3iRVQM_yQYw1pPGPd-8BcoBqAM(demo language) -
Vs75ql1YGvhlIv0Jz1DSoTih_c4ySJHEajlNG70H1rk(demo sport) -
KlTDRoE1AsBLr3YUlFBU6aYZbg9KRXIcJPbhhMX-MFs(demo budget) -
DolPvRZIjrbz3FOV61AcYhOhY62oJPk7Esd98LFveGk(demo reminder)
Recall check: "Which city does the demo user live in now?" → top hit "User's current demo city:
Kyiv. (replaces an earlier value)". "What pet does the demo user have?" → top hit "a cat named Pixel".
How it learns over time
Corrections are first-class. Each supersede is an event on Walrus, so the "learning loop" is
auditable: you can see which fact changed, when, and what replaced it.
Honest limitations
- Walrus Memory runs on Mainnet via the free hosted relayer, which sponsors WAL and SUI fees, so the demo cost me nothing. Memories are SEAL-encrypted; the hosted relayer does see plaintext while encrypting/embedding (self-hosting or the manual client avoids that).
- Walrus blob event log and Tatum Sui GraphQL run on testnet (no budget for mainnet tokens). Testnet blobs expire and testnet can be wiped.
- The live MemWal demo uses 10 synthetic facts, not real user data.
- Fact extraction is simple keyword logic; retrieval is keyword overlap, not embeddings.
- Small personal project, not a benchmark.
Try it
See README and demo instructions.
Bogdan Chernishuk — Independent researcher, Ukraine
Top comments (0)