Publish a note

Sign up for gno.sh, import an exported artifact, and publish a versioned reading-first snapshot.

Export a local note or collection with gno publish export, import the artifact in Studio, and publish a versioned snapshot at a gno.sh URL.

1. Create an account

Open the signup page and create a free account. No credit card. You’ll get a verification email and land on your dashboard.

2. Open the publish studio

Go to the publish studio. Studio lists sources, visibility modes, metadata projection, and the import drop zone.

3. Drop or import a file

Canonical path: export from local GNO first, then upload the artifact.

gno publish export atlas --out ~/Downloads/atlas.json

Then open /studio and drop that compiled GNO artifact JSON into the import zone. The markdown path is still useful for quick single-note shares in dev, but the artifact JSON is the real hosted transport for larger collections.

Supported local PNG, JPEG, GIF, WebP, and AVIF references travel in the artifact with content hashes and deduplication. Public readers use immutable generation-bound image URLs; secret links authorize each image request and disable caching. Encrypted exports keep image bytes inside ciphertext and create temporary Blob URLs only after browser decryption and AVIF decode preflight. Hosted ingest also proves AVIF AV1 decodability before storage. Invite-only bundled-image delivery is not yet available and fails closed; use an asset-free invite, secret link, or encrypted share when local images are required.

For public, secret-link, and invite-only uploads, the studio can now create a new space, overwrite an existing space, or append the new notes into an existing space so the left-hand navigator grows over time. Encrypted shares still update via fresh encrypted upload only.

4. Pick a visibility mode

5. Press publish

A receipt appears with the share URL. Open the share URL to see typography, outline, scoped search, and keyboard navigation.

Agent-readable public spaces

Public artifacts exported with GNO’s agent manifest keep the human reader and add deterministic, no-JavaScript resources for agents:

/share/<owner>/<space>/llms.txt
/share/<owner>/<space>/manifest.json
/share/<owner>/<space>/<document>.md

The manifest lists only the imported public projection. Every document includes a content hash and an exact line-range evidence locator. Secret-link, invite-only, and encrypted spaces never expose these endpoints.

Republish

Re-importing the same route slug replaces the existing share with a new snapshot. If you want to grow a published collection instead of replacing it, choose Append to existing in the studio. Readers keep the same URL in either case; append adds notes to the navigator, overwrite replaces the snapshot.