Live on Walrus Mainnet
Content no one can take down.
Not even us.
Morse is an open CMS protocol on Sui and Walrus. Publish from the CLI, the SDK or your agent. Every entry is anchored on-chain, stored on Walrus, and gated by keys you hold.
Supported by
Why a protocol
A hosted CMS keeps your content, your history and your permissions in a database someone else controls. Morse keeps them on Sui and Walrus, where no vendor, no host and no one at Morse can change or remove them.
Four things Morse does today that a hosted CMS cannot.
All four live today
Own your blog or docs site
Publish markdown to a site whose content lives on Walrus and whose permissions live on Sui. Change hosts, keep everything.
Gate premium content with keys
Seal encrypts the payload, and a rule on Sui decides who can decrypt it. Access lives on-chain, not in a vendor’s database.
Let an agent run the backend
Publications, collections and entries through the CLI or SDK. An agent can provision and operate the whole thing with no dashboard.
Keep an archive nobody can edit
Revisions append, nothing overwrites. Who changed what, and when, is on Sui and readable by anyone.
How it works
Four steps. No middleman in any of them.
Publish
One command pushes markdown and metadata into the protocol. No provisioning, no vendor queue.
morse entry addStore
Payloads land on Walrus as immutable blobs, funded per storage epoch and renewable. Revisions append; nothing overwrites.
Walrus blob + quiltRecord
A Move contract on Sui records every blob reference and every permission change. Permissions are objects.
Sui Move contractsServe
Read through the SDK today. Indexers anyone can run, with a REST API for apps and agents, land in Q1 2027.
SDK now · API Q1 2027
- On-chain governanceEditor and admin permissions are Sui objects. Grant, revoke, prove.
- Verifiable revisionsEvery edit has an on-chain proof. No hidden changes.
- Seal-gated accessPolicies enforced by keys, not by promises.
- AI-readableStructured content any agent can query and operate.
- One-command deployContract addresses ship built in. No dashboard, no provisioning step.
- Every layer replaceableOnly the Sui contracts are the source of truth.
For developers and agents
Agent-first by design.
A coding agent can define collections, provision publications, publish entries and operate the entire backend through the CLI or SDK. No dashboard required. Point yours at llms.txt, the docs index written for agents. For web apps, @arcadiasystems/morse-uploader adds drop-in React upload components.
Runs on Walrus Mainnet with Node 18+ or Bun and a Sui address holding SUI for gas and WAL for storage. To try it free first, use testnet; the quick start links the faucet.
import { addEntryFromBytes, createCollection, createPublication, morseConfig, StorageMode, } from '@arcadiasystems/morse-sdk' // Walrus Mainnet; use 'testnet' to try it free const config = morseConfig({ network: 'mainnet' }) // create a publication on-chain const { publicationId, publisherCapId } = await createPublication(adapter, config, { name: 'My Blog', slug: 'my-blog', }) // define a collection await createCollection(adapter, config, { publicationId, publisherCapId, name: 'posts', storageMode: StorageMode.Blob, }) // publish an entry to Walrus await addEntryFromBytes(adapter, config, { walrus, publicationId, publisherCapId, collectionName: 'posts', name: 'hello-world', bytes: new TextEncoder().encode(markdown), contentType: 'text/markdown', upload: { epochs: 3, deletable: true }, })
bun add -g @arcadiasystems/morse-cli# a Walrus Mainnet profile and your key # try it free first: morse config add testnet --network testnet morse config add mainnet --network mainnet morse account import # create a publication and a collection on Sui morse publication create --name "My Blog" --slug my-blog morse collection create posts # publish a markdown file to Walrus morse entry add hello-world --file hello.md # give an editor a publisher capability morse cap issue 0x9a02… # list what is published morse entry list
See it live
A blog you actually own. On testnet, now.
The demo blog runs on the Morse SDK: wallet-native, Walrus-stored, with Seal-gated premium posts. Connect, publish a post, and watch its record land on Sui.
Testnet data may reset. For content you mean to keep, publish on Walrus Mainnet, where storage is funded per epoch and renewable.
- Install a Sui walletSlush or Suiet, browser extension, two minutes.
- Get testnet SUI from the faucetFree. Linked from the demo and the quick start.
- Connect and publish your first postYour post, its Walrus blob and its Sui record, in under a minute.
Ecosystem
Products that publish through Morse.
Morse is a protocol, so the apps on top of it are not ours to control. Here is what runs on it today, what it runs on, and how to get your product on this list.
A newsletter nobody can take down. Not even us.
The reference app on Morse: write, publish, add members and let agents post, with every post stored on Walrus and recorded on Sui. Open source, so anyone can run their own front end against the same objects.
Open Morse PressmorseuploaderEncrypted file sharing, as React components.
Upload files to Walrus, encrypt them with Seal for the wallets you choose, and share a link.
View on npmMorse runs on
- WalrusContent storage, blob and quiltLive
- SuiPublications, entries, caps as Move objectsLive
- SealClient-side encryption, on-chain access policyLive
- Walrus MemoryAgent memory anchored to recordsExploring
- Live
Agent publishers
Any agent with a wallet and a revocable cap can publish. llms.txt, a cookbook and a CLAUDE.md template to start.
Docs recipe · CLI or SDK - Live
Static site importer
Bring a Hugo, Astro or Markdown site in as one entry per post, re-runnable, with CI publishing on push.
Docs recipe · bash Your product here
Building on Morse? Open an issue with a link and a line about what it does. Anything that reads or writes Morse objects qualifies, no approval beyond that.
Get listed
Upcoming
What ships next, and when.
Dates are targets, updated as they move. The GitHub repository is the source of truth for what is shipped.
- 9 Sep 2026Protocol live on Walrus MainnetMove contracts on testnet and mainnet, Walrus storage, Seal policies, CLI, SDK beta, demo blog on testnetlive
- Q4 2026SDK 1.0 and stable CLITyped client, documented contracts, agent-ready command surfacebuilding
- Q4 2026Receipts: a public verify page for any entryOpen a link, see the record, the revision history and the Sui and Walrus proofs. No account, no walletplanned
- Nov 2026Walrus Sessions 9, built on MorseAn online hackathon with the Walrus Foundation: agents that remember with Walrus Memory and prove with Morseproposed
- Q1 2027Indexer and hosted content APIEvent-driven read layer anyone can run, REST surface for apps and agentsplanned
- Q1 2027Publish without a walletHosted path with sponsored gas and email or GitHub sign-in. Ownership transfers to your wallet when you connect oneplanned