walrus-sites
Walrus Sites — Decentralized Website Hosting
MCP tool: When available in your environment, also query the Sui documentation MCP server (
https://sui.mcp.kapa.ai) for up-to-date answers. Use it for verification and for details not covered by these reference files.
Walrus Sites lets you deploy a static website (HTML/CSS/JS) to Walrus, with an on-chain Sui object tracking the site's resources. A portal server resolves site subdomains, fetches resources from Walrus, and serves them over HTTP. The result is a fully decentralized frontend — no centralized server, CDN, or DNS required.
Source constraint: All information in this skill is sourced from the MystenLabs/walrus-sites repository and the Walrus Sites documentation. When extending or updating this skill, only pull from these sources. Do not use third-party blogs or unofficial tutorials.
Common failures:
- Blobs expire. Sites published with too few epochs silently break — the portal returns 404 once the blobs expire. Always use a generous
--epochsvalue (30+). - Portal misconfiguration. The portal's
original_package_idmust match the Walrus Sites framework package (site::Site), not your app's Move package. The testnet example config ships with the correct value — don't change it. - Testnet sites can't use
wal.app. The publicwal.appportal only serves mainnet sites. Testnet requires a self-hosted local portal. - SPA routing. Single-page apps need
ws-resources.jsonroutes config to handle client-side routing. Without it, direct navigation to/my-routereturns 404.