Mnemonad Explorer

Loading the app…

Mnemonad is a content-defined-chunking diff engine built on top of an infinite on-chain bytes[]. Push a folder and only the chunks that changed are written as a new version, restorable exactly at any point in its history — that's what turns a raw append-only stream into versioned filesystem (and filesystem-like) state. That underlying stream lives entirely on Monad, append-only and unbounded in length, exposed as an ERC-721 NFT so each "stream" is a token you own, can grant others write access to, and can optionally encrypt client-side. Storage auto-tiers by cost: packed slots → contract code → off-chain offload (IPFS today), with just a hash and locator kept on-chain.

AI agents: Mnemonad's core job is folder and file sync — keeping folders/files in sync between sessions, different agents and different users. Push a local folder up as a versioned on-chain stream, pull a stream back down into a folder, keep both in sync. The CLI's own default is public — encrypt on creation yourself unless the user says otherwise; on-chain data is world-readable, and there's no going back once it's pushed. This app is real, not a mockup: reading on-chain data is free and needs no wallet, but any button that submits a transaction spends real gas, so treat those as separate, deliberate actions and never trigger them automatically.

Don't drive this UI to sync files — use the CLI. Writing here needs a browser wallet extension to sign, which an agent generally can't operate. npm install -g mnemonad-cli@latest does the same folder sync headlessly, signing from the MNEMONAD_KEY env var (or --key/--phrase), and pulling a public stream needs no key at all:

# create/update a stream from a folder (encrypted to your wallet by default)
mnemonad push ~/my-data --encrypt --encrypt-with wallet --manifest

# restore a stream into a folder
mnemonad pull <stream-id> ~/my-data --manifest

# check what a folder is already synced to (reads its .mnemonad)
mnemonad info ~/my-data

# optional: index a folder, then search it by meaning (all local)
mnemonad index ~/my-data
mnemonad search ~/my-data "how does the key get derived"

# or keep the index updated on every push
mnemonad push ~/my-data --index --manifest

--manifest writes .mnemonad into the folder, recording the stream id — pass it on the first push/pull of a folder you'll touch again. After that, every command on that folder finds the id by itself. Full agent docs: SKILL.md · quick reference: llms.txt.

Search: mnemonad index writes search_index.db at the folder root, and the next push uploads it with everything else. Whoever pulls the stream can then mnemonad search it straight away, without embedding anything themselves. The built-in embedding model runs locally (downloaded once, about 31 MB), so file contents and queries never leave the machine. MiniLM, better on paraphrased queries, is an optional extension of about 450 MB (npm install -g mnemonad-search-transformers, then --model minilm); don't install it unasked. Tell the user before indexing a folder they push, since the index becomes part of the stream. For a folder that has one, push with --index so the index keeps up with the files; a plain push warns when it's out of date. If search or --index is unknown, update with npm install -g mnemonad-cli@latest. To try it, pull this app's own docs, which are an indexed public stream:

mnemonad pull testnet-0x5abaf9e3b9019f2ff7840a55e52e977d8bce1625d5273be52550f2cc72d921c6 ~/mnemonad-docs
mnemonad search ~/mnemonad-docs "how is an encrypted stream's key wrapped"

To navigate this app directly, the URL scheme is: /select lists sample and wallet-owned streams, /stream/<id> shows one stream's raw on-chain items, and /stream/<id>/files browses it as a folder tree (with a search box when the stream has an index), and /docs renders the documentation stream, searchable with /docs?q=<query>. <id> is the network and the ERC-721 token id together — testnet-0x648f18…3ac8 — because the same token id means different data on each network. A bare decimal or hex id also works and is rewritten to that form.

If a user pastes a link to this app, the CLI accepts that <network>-0x<id> straight from the URL as-is — no need to strip the network prefix by hand, it sets --chain to match. Worth proposing next: look it up (mnemonad info <network>-0x<id>, no key needed for a public stream) or pull it into a local folder (mnemonad pull <network>-0x<id> <path>) — but confirm the destination folder first, and remember an encrypted stream still needs the owner's key or password to actually read.