Mirrors

This site is deliberately hard to take offline. The same pages are served from more than one independent host, and the source that builds them is mirrored across several code forges — so if any single provider disappears, both the live site and its source survive. The approach follows the Privacy Guides mirror model: one source of truth, many mirrors.

Live site

Independent hosts serving the same site.

Cloudflare Pages — primary thebenmeadows.com Netlify — second host thebenmeadows.netlify.app Pages direct URL tbm-linktree.pages.dev

Tor

The same pages as an onion service, reachable only through the Tor network. It runs on a server I control and is not published in DNS, so it keeps working if the domain, Cloudflare, or Netlify does not. Open it in Tor Browser; an ordinary browser cannot resolve it.

Onion service meadowsvn6ah25czpa3mv735fizgdz6xp7vlzeqxpydfwnnsygtcleyd.onion

One caveat: the minted editions on essentialism are fetched live from tzkt.io and bootloader.art, so that gallery stays empty over Tor if those services refuse Tor traffic. The generator itself runs locally and works either way.

I2P

The same pages again on I2P, a different anonymity network from Tor and served by the same machine. Two networks rather than one means neither being blocked takes the site with it. You need an I2P router to open it.

Eepsite d24ftl3svuczr2neg7dhlys7hgj4oinz3u3d5rwd2t4rbkbwt4wa.b32.i2p

Names

The same site under blockchain name systems. Each name is set once and follows every release on its own, so none of them can quietly go stale. Brave resolves the .eth and .sol names natively.

thebenmeadows.eth — Ethereum thebenmeadows.eth.limo thebenmeadows.tez — Tezos thebenmeadows.tez.page thebenmeadows.sol — Solana thebenmeadows.sol-domain.org ar://thebenmeadows — Arweave thebenmeadows.permagate.io thebenmeadows.sol.site the .sol name's own web bridge

The Ethereum, Tezos, and Solana names all point at the same IPFS name, ipns://k51qzi5uqu5dkx54ehvkna983zjtfn04eu4sklgx2ag1tozh9js5p9cn5jwqmy, published from this site's own IPFS nodes. The Arweave name points at a permanent copy of each release; some ar.io gateways are still catching up to it.

Nostr

The site is also published as an nsite: every file lives as a signed blob on Blossom servers, with a manifest event on Nostr relays under the same key this site publishes at /.well-known/nostr.json. No conventional host involved.

nsite npub1wldqfuy…nq29.nsite.run

Small web

The same pages on five pre-web protocols, generated from the site's own search index at each release. You need a Gemini client (Lagrange, Amfora) or a gopher client (lynx works) — ordinary browsers speak neither. The last three need nothing but a terminal.

Gemini gemini://gemini.thebenmeadows.com Gopher gopher://gopher.thebenmeadows.com
SSH ssh -p 2222 [email protected]
Telnet telnet text.thebenmeadows.com
FTP — anonymous ftp://text.thebenmeadows.com

No login for any of them — SSH takes the user text with no password and drops you straight into a read-only pager. FTP is plain, deliberately: these pages are public, so there is nothing to encrypt, and clients this old predate TLS. When you want the encrypted path, that is what HTTPS, the onion service and Gemini are for.

Feeds

One entry per release, in both syndication formats, with WebSub pings on deploy so subscribed readers hear about releases without polling. Listed in the I ♥︎ RSS directory.

Atom /feed.xml RSS 2.0 /rss.xml

Source code

The repository, mirrored to independent forges and kept in sync automatically — each holds the full history.

GitHub — source of truth github.com/TheBenMeadows/tbm Codeberg codeberg.org/thebenmeadows/tbm Gitea gitea.com/thebenmeadows/tbm GitLab gitlab.com/TheBenMeadows/tbm SourceHut git.sr.ht/~thebenmeadows/tbm Tangled — AT Protocol tangled.org/thebenmeadows.com/tbm Radicle — peer-to-peer rad:z3vBEjEJAvd3CjciS1JBiFzHda3KA Nostr — GRASP nostr://npub1wld…4nq29/tbm

The last two have no host. On Radicle the repository is replicated between peer-to-peer nodes, so it stays reachable for as long as any one node still seeds it — rad clone rad:z3vBEjEJAvd3CjciS1JBiFzHda3KA fetches it from whichever node answers first. On Nostr, signed GRASP events are the authority and git servers are interchangeable relays: with the ngit plugin installed, git clone nostr://npub1wldqfuy0yge4fvxukdm43gze2ral9dnp5avlps5a6t8q0vyv2nds84nq29/tbm pulls from any server carrying it. No forge, no account, nothing to take down.

Archived

Point-in-time snapshots held by a third party, outside any host above.

Wayback Machine — latest web.archive.org Wayback Machine — all snapshots web.archive.org

Verify

Every build publishes manifest.json, listing the SHA-256 of every file it shipped. Hash the files you received and compare. That catches a mirror that has gone stale, and it catches a gateway that rewrote the page on its way to you — some public IPFS gateways do inject their own script, so the copy you are handed is not always the copy that was stored.

The manifest's own hash is signed with my Nostr key and timestamped into the Bitcoin blockchain with OpenTimestamps, so the signature says who published it and the anchor says roughly when. Proofs live in commitments/ in the repository, one per release, named for the hash they attest.

The manifest also carries this mirror list itself, as a mirrors array. This page dies with the site that serves it; the manifest is replicated to IPFS, Arweave and Nostr with everything else. Whichever copy you are reading, its manifest names every other copy — and the signature tells you nobody edited the list on the way.

Curious how it's put together? See the tech stack.