A marble statue with orange cracks, a chain of hexagonal hash blocks flowing into her mind, beside the word MNEMOS and the line: sovereign memory for hermes agent.

Mnemos: Sovereign memory for Hermes Agent

Your agent remembers. Only you can read it. Facts are encrypted on the machine that writes them, stored as ciphertext on Walrus, and indexed by a Sui object you own.

Get started View on GitHub

I. What it is

  1. Encrypted here

    XChaCha20-Poly1305 with keys derived from MNEMOS_SECRET by HKDF-SHA256. Plaintext and the secret never leave the machine.

  2. Stored on Walrus

    Each snapshot is a ciphertext blob on Walrus testnet. The blob id is public; the bytes are unreadable without the secret.

  3. Indexed on Sui

    An owned MemoryIndex object on Sui testnet keeps blob ids, the hash-chain head, and Ed25519 signatures. It only accepts an append that links to the current head.

  4. Restore anywhere

    Wipe a profile or switch machines. Your secret plus one object id rebuilds the local cache. Prefetch and recall stay local and never touch the network.

II. A memory you can audit

Every snapshot commits to the one before it. history --verify downloads each blob, recomputes its hash, checks the link and the signature. No secret needed. These are the real snapshots of the live testnet index.

bugnarokdev@machine-b ~
$ hermes mnemos history --verify
MemoryIndex 0x40028382ba48edaff90240696fb0441854046d9bee10195d296d2046a72668e3  pubkey c5f2488e608132c3
v1    OK     03053bacf1305209  blob ymHOBfSei9ECmnM_CoA-4Q2oLtTX3tYgVgvN4Hngxiw
v2    OK     799a8745d1d77c62  blob 31Wm7ToeEUOP0GWGFn3_UjinT02gtLuJ4Rm2mnF0HVg
OK: 2 versions verified

The tamper button is a local illustration: it flips one byte of the v2 blob in your browser and shows what --verify reports (it exits with status 1).

III. Quickstart

Hermes Agent 0.23.1 or newer, Python 3.11 or newer. The pure Python backend works out of the box; the Rust core is optional and opt-in.

  1. Install the plugin

    hermes plugins install https://github.com/bugnarokdev/mnemos.git \
      --ref <commit-sha> --yes-deps --enable
  2. Set your secret in $HERMES_HOME/.env

    MNEMOS_SECRET=choose-a-long-passphrase
  3. Create your MemoryIndex on Sui testnet

    cd move/MemoryIndex
    sui move build --dump-bytecode-as-base64 > /tmp/mnemos-bytecode.json
    hermes mnemos init --bytecode /tmp/mnemos-bytecode.json
  4. Restore on another machine

    hermes mnemos restore --object-id 0x<your-memory-index>
    hermes mnemos history --verify

Documentation: English · Français · Network disclosure

IV. Live on testnet

MemoryIndex
0x40028382…a72668e3
Flush tx (v2)
ASQfWmRH…XHm5j9
Walrus blob (v2)
31Wm7Toe…F0HVg (ciphertext)
Hermes catalog
Pull request #153218
Demo video
Post on X

Built on Sui · Walrus — for Hermes Agent by Nous Research