🐧 cobblrlabs
📜

On-chain pages

Web pages that live on the ledger.
Stored on Xahau testnet accounts, served from the ledger.

🧪 Testnet toysXahau testnetNot hosted by usView-only
Not hosted here. The pages below don't live on this website or on any Cobblr Labs server. Each one is stored on a Xahau testnet account and served straight from the ledger. They are testnet toys: free faucet XAH, nothing has value and nothing is for sale. The plan is to move them to mainnet when PWA pages launch there.

How it works

1WriteOne HTML file, up to 4096 bytes. No images or extra files, so it has to be small and clever.
2StoreAn AccountSet with the AppLoader field puts the file on the account. The fee is 1 drop per byte.
3Servepwa.exposed/<address> sends you to that account's own subdomain, which serves the bytes from the validated ledger.
4Go liveInside, the page talks to a public testnet node over WebSocket and shows live ledger data. It never asks for keys.
Network feature: PWALoader · testnet amendment

PWALoader is a testnet-only amendment for now. That's why these pages stay testnet toys until it launches on mainnet.

Live on-chain pages

Two Labs mint parties have their pages on the ledger: the Mystery Box recap and the Bolt Buddies gallery. Each page is stored on that mint party's own account (Bolt Buddies keeps its pixel-art code on a second one). The upload receipt is the transaction that put the current version on the ledger.

Screenshot of the on-chain Labs Mystery Box recap with the history-reset note
Testnet toy · recap

🎁 Labs Mystery Box recap

The Drop 2 recap of the Labs Mystery Box: how it worked and the story with tx links, stored on the box account itself. The collectors were simulated wallets run by the demo. When this node's history window has been reset, the live card list shows an in-page note instead of empty rows.

Open on pwa.exposed ↗

Captured Oct 19, 2026.

Screenshot of the on-chain Bolt Buddies page showing all 100 robots
Testnet toy · sold out

🤖 Bolt Buddies

A sold-out collection of 100 robot cards minted by a Hook with on-chain RNG. The page loads robots live from the owners' wallets (account_objects URITokens), and keeps the pixel art on a second testnet account so the gallery still fits the 4 KB AppLoader limit.

Open on pwa.exposed ↗

Captured Oct 19, 2026.

The Mystery Box recap shows an in-page note when this public testnet node's history window has been reset (so the live cards aren't on that node). Bolt Buddies robots load live from the owners' wallets via account_objects; the pixel art lives on a second account. Screenshots above are from Oct 19, 2026.

Example: one site, three accounts

One account holds 4096 bytes at most. To build something bigger, we split a small site across three testnet accounts and let the browser put it back together. The result is 10,330 bytes, about 2.5 times the limit for one page.

Screenshot of the on-chain mini site stitched from three testnet accounts
Testnet toy · multi-account

⛓️ Cobblr Labs, on-chain

A four-section mini site (home, on-chain pages, how it works, live ledger). The loader page reads the other two parts straight from the ledger, checks each one against a SHA-256 hash pinned inside the loader so a swapped part is refused, then adds the styles and runs the script.

Open the mini site ↗

Captured Oct 18, 2026.

partaccountbytesupload receiptwhat it holds
A · loaderrBXkj…BQky2423F1D7E76F…The page the portal serves. Reads B and C from the ledger and checks their hashes.
B · styles + markuprHPU4…F7k9382421F8222B…CSS and the HTML for the site’s sections.
C · scriptrQps6…DiQ140838C025F35…Navigation, the live ledger ticker and the page list, plus the how-it-works text.

What we tried for joining pages

The portal runs every page in a sandbox on its own subdomain, with no CORS headers, Cross-Origin-Resource-Policy: same-origin and X-Frame-Options: DENY. We tested each way of loading one account's page from another, in headless Chrome, against both the pwa.exposed link and the account's subdomain:

methodresult
fetch()blocked (no CORS headers)
<script src>blocked (resource policy)
<link rel=stylesheet>blocked (resource policy)
<iframe>blocked (X-Frame-Options: DENY)
Read the page from the ledger over WebSocketworks

Next: mainnet

PWALoader only runs on Xahau testnet today. When PWA pages launch on mainnet, the plan is to move these pages there and update the links on this page. Until then, everything here is a testnet toy.

View-only. None of these pages asks for a seed or private key, and none ever will. If any page asks you for one, close it. Never paste a seed into a website.