Visibility modes

Choose public URL, secret-link token, org invite, or client-side passphrase encryption.

gno.sh ships four visibility modes.

Public URL

A plain, guessable URL. Anyone with the link can read. No auth, no gate. Good for open research notes, client-facing overviews, and anything you’d otherwise post on a blog.

URL shape:

https://gno.sh/share/<owner>/<slug>

When the imported artifact carries a valid public-agent manifest, this same space also serves llms.txt, manifest.json, and exact Markdown evidence URLs. These routes are derived only from the declared public projection; gno.sh does not guess or expose other note paths.

Secret link

A long, unguessable token appended to the URL. Readers with the token open the page; anyone without it gets a 404. You can rotate the token at any time (old links stop working), revoke access entirely, or expire in 24 hours.

Bundled image requests re-check the secret capability every time and use Cache-Control: no-store; the object-store key is never sent to the browser.

URL shape:

https://gno.sh/secret/<token>

Invite only

Readers must be signed in to gno.sh and be an accepted member of your organization. Good for team reference spaces, internal research, or client deliverables where you want an audit trail of who opened the page.

Invite-only note text still publishes, but bundled-image delivery is not supported yet and fails closed. Prefer an asset-free invite, a secret link, or an encrypted share when local images must render.

URL shape:

https://gno.sh/private/<slug>

Encrypted

Export an encrypted artifact from local GNO with a passphrase you choose, then upload it to gno.sh. Only ciphertext lands on gno.sh servers. Readers enter the passphrase in their browser to decrypt and read.

gno.sh stores ciphertext only and cannot recover a lost passphrase. Store it yourself.

To update an encrypted share, export a fresh encrypted artifact from local GNO and upload it again. Hosted republish does not rebuild encrypted shares from source.

Supported bundled images remain inside ciphertext. After successful local decryption the reader validates assets structurally, allocates scoped Blob URLs, browser-decodes AVIF before render, and revokes those URLs when the share is replaced or the reader unmounts.

URL shape:

https://gno.sh/locked/<token>

Picking the right mode