DEV Community

StateKeeper: an assistant that remembers what changed, on Walrus Memory

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:

  1. -73blZ2MyeDfFBnpSit9A5njQt1DF9lh2nCSAnp1jdE (demo city = Lviv)
  2. q0fu9F2jHEXCGC0yUxchqHAVOcHmZYH7MArIn-9kEkw (demo city = Kyiv, supersedes 1)
  3. eCgDGeUypMPM1dMyvpZdujr-MjeM9dqWEF-rFL6xwh8 (demo diet)
  4. WNnCt1FO-1z6UrpGBBFYxacQ_ofnDgxOKekGec31qT0 (demo gym days)
  5. ik59OQUVCD4eluvDXJcbxVD_KLkPKOhcAyNHRuRn3zU (demo coffee)
  6. HxdGPlXs6-QBtJxIrFkhBR6c1Ye8_Wh2Xxqhbp6e174 (demo pet)
  7. bKyTM88q0t1xUo6yq3iRVQM_yQYw1pPGPd-8BcoBqAM (demo language)
  8. Vs75ql1YGvhlIv0Jz1DSoTih_c4ySJHEajlNG70H1rk (demo sport)
  9. KlTDRoE1AsBLr3YUlFBU6aYZbg9KRXIcJPbhhMX-MFs (demo budget)
  10. 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

Code

https://github.com/AutoDrops/statekeeper-walrus

Top comments (0)