Skip to main content

Mainnet Publisher Production Guide

Walrus does not provide a public unauthenticated publisher on Mainnet. There are no plans to create one because the publisher must pay SUI and WAL for every blob it stores. On Mainnet, a publisher should be privately operated for a specific application, service, or organization.

Use this guide to decide whether a Mainnet publisher is the right upload path for your use case, and if so, how to operate one safely.

Do not run an open Mainnet publisher

An unauthenticated Mainnet publisher lets anyone spend the publisher wallet's SUI and WAL. If you run a Mainnet publisher, restrict access with authentication, network controls, or both.

Choose the right upload path

Use a publisher when your service needs an HTTP upload interface and you are prepared to operate the wallet, authentication, and cost controls behind it.

Upload pathUse caseWho pays
Private authenticated publisherBackend services and controlled clients that need an HTTP PUT /v1/blobs interfacePublisher operator
Upload RelayBrowser or mobile clients that need a relay-managed upload pathClient or relay policy
TypeScript SDKApplications that can integrate Walrus directly and manage signing in codeApplication wallet or signer
Walrus CLIOperators, scripts, and manual uploadsCLI wallet

For production Mainnet usage, run a private publisher with authentication enabled:

  1. Follow Operate a Publisher to install, configure, fund, and run the publisher.
  2. Follow Use the Authenticated Publisher to restrict uploads to authorized clients.
  3. Put the publisher behind a reverse proxy or private network boundary. See Configure nginx caching for reverse proxy setup.
  4. Monitor the publisher wallet's SUI and WAL balances. See Create and fund the publisher wallet and Manage SUI coins in sub-wallets.
  5. Rotate credentials and restrict who can issue upload tokens. See Work with JWTs.

Do not rely on community publishers for production uploads. Community endpoints can change, go offline, add restrictions, or expose different cost and reliability expectations.

Protect the publisher wallet

A publisher performs onchain actions and pays storage costs. Treat its wallet as production infrastructure:

Control access and cost exposure

A private publisher should reject uploads from unauthorized clients before it spends tokens.

Use the authenticated publisher when clients need to upload through your publisher. The authenticated publisher validates upload tokens before accepting writes.

For additional controls, consider:

Configure CORS intentionally

Only enable cross-origin resource sharing (CORS) for browser clients that must call the publisher directly. If uploads come through your backend, keep the publisher private and avoid exposing it to browsers.

When browser access is required, restrict allowed origins to your application domains and test preflight requests before production launch.

Plan for failover

If your application depends on a publisher, plan how uploads behave when it is unavailable:

  • Run health checks for the publisher endpoint.
  • Keep enough SUI and WAL in the publisher wallet for expected traffic.
  • Monitor failed writes and insufficient-balance errors.
  • Decide whether clients can fall back to another private publisher, an upload relay, or a direct SDK path.
  • Document the expected retry behavior for your application.