Compare commits

...

No commits in common. "main" and "gh-pages" have entirely different histories.

4 changed files with 172 additions and 13 deletions

0
.nojekyll Normal file
View file

View file

@ -1,16 +1,10 @@
# torrentclaw/mirrors # TorrentClaw mirrors (static)
Off-domain static copy of the [TorrentClaw](https://torrentclaw.com) mirror list. Auto-generated by `scripts/build-mirrors-static.ts`. Do not edit by hand —
your changes will be overwritten on the next build.
The content of the `gh-pages` branch is **auto-generated** by a workflow in This page is published off-domain so it survives any single takedown:
the (private) source repo. **Do not edit by hand** — your changes will be - https://torrentclaw.github.io/mirrors/
overwritten on the next publish. - https://torrentclaw-mirrors.pages.dev/
Served at: <https://torrentclaw.github.io/mirrors/>. Update with: `pnpm exec tsx scripts/build-mirrors-static.ts`.
## Why this repo exists
If `torrentclaw.com` is taken down, the in-app `/mirrors` page goes down
with it. This repo lives on infrastructure independent from the rest of the
stack (different cloud, different account, different CDN) so the mirror
list survives any single takedown.

129
index.html Normal file
View file

@ -0,0 +1,129 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>TorrentClaw mirrors</title>
<meta name="description" content="Backup access to TorrentClaw via alternate domains and Tor (.onion). Static copy hosted off-domain so it survives takedowns.">
<meta name="robots" content="index,follow">
<link rel="canonical" href="https://torrentclaw.com/mirrors">
<style>
:root { color-scheme: dark light; }
* { box-sizing: border-box; }
body {
margin: 0;
background: #0f172a;
color: #e2e8f0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
line-height: 1.5;
}
main { max-width: 720px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
h1 { font-size: 1.75rem; margin: 0 0 .5rem; }
h2 { font-size: 1.1rem; margin: 2rem 0 .75rem; }
p { color: #94a3b8; margin: .5rem 0; }
ul { list-style: none; padding: 0; margin: 0; }
li {
display: flex; align-items: center; gap: .5rem; flex-wrap: wrap;
background: #1e293b; border: 1px solid #334155; border-radius: 6px;
padding: .65rem .9rem; margin: .35rem 0;
}
li a { color: #38bdf8; text-decoration: none; word-break: break-all; flex: 1 1 auto; }
li a:hover { text-decoration: underline; }
.badge {
display: inline-block; font-size: 10px; text-transform: uppercase;
padding: 2px 8px; border-radius: 999px; background: #334155; color: #cbd5e1;
letter-spacing: .04em;
}
.tor-badge { background: #6b21a8; color: #f3e8ff; }
.muted { color: #64748b; font-size: 12px; word-break: break-all; }
.footer { margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid #334155;
font-size: 12px; color: #64748b; }
.footer a { color: #94a3b8; }
code { background: #1e293b; padding: 2px 6px; border-radius: 4px; font-size: 13px; }
</style>
</head>
<body>
<main>
<h1>TorrentClaw mirrors</h1>
<p>This is a static copy of the official mirror list. It is hosted off the main domain so it survives any takedown of <code>torrentclaw.com</code>. Bookmark it.</p>
<h2>Clearnet mirrors</h2>
<p>Regular HTTPS domains. Identical content; use whichever your ISP and DNS resolve correctly.</p>
<ul>
<li>
<a href="https://torrentclaw.com" class="clearnet">torrentclaw.com</a>
<span class="badge">primary</span>
</li>
<li>
<a href="https://torrentclaw.to" class="clearnet">torrentclaw.to</a>
</li>
<li>
<a href="http://torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion" class="tor">torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion</a>
<span class="badge tor-badge">Tor</span>
</li></ul>
<h2>Out-of-band channels</h2>
<p>If both clearnet and Tor are unreachable, check these for the latest mirror list.</p>
<ul><li><span class="muted">None configured</span></li></ul>
<h2>Other off-domain copies</h2>
<p>This page is itself published on multiple independent hosts. If you are reading this on one of them, save the others too.</p>
<ul><li>
<a href="https://torrentclaw.github.io/mirrors/" rel="noopener noreferrer">GitHub Pages</a>
<span class="muted">https://torrentclaw.github.io/mirrors/</span>
</li></ul>
<h2>For developers and agents</h2>
<p>The same data is embedded below as JSON. unarr falls back to scraping this island when /api/v1/mirrors is unreachable.</p>
<p><a href="mirrors.json">mirrors.json</a> — same payload, raw.</p>
<div class="footer">
<p>Generated 2026-05-13T18:16:13.576Z · revision 2.</p>
<p>Canonical site: <a href="https://torrentclaw.com">torrentclaw.com</a></p>
</div>
</main>
<script type="application/json" id="torrentclaw-mirrors">
{
"revision": 2,
"mirrors": [
{
"url": "https://torrentclaw.com",
"label": "torrentclaw.com",
"kind": "clearnet",
"primary": true
},
{
"url": "https://torrentclaw.to",
"label": "torrentclaw.to",
"kind": "clearnet",
"primary": false
},
{
"url": "http://torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion",
"label": "torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion",
"kind": "tor",
"primary": false
}
],
"tor": {
"url": "http://torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion",
"label": "torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion"
},
"channels": [],
"staticFallbacks": [
{
"label": "GitHub Pages",
"url": "https://torrentclaw.github.io/mirrors/",
"description": "Static copy of the mirror list, hosted on GitHub Pages from the torrentclaw/mirrors repo (independent infrastructure)."
}
],
"updatedAt": "2026-05-13T18:16:13.576Z"
}
</script>
</body>
</html>

36
mirrors.json Normal file
View file

@ -0,0 +1,36 @@
{
"revision": 2,
"mirrors": [
{
"url": "https://torrentclaw.com",
"label": "torrentclaw.com",
"kind": "clearnet",
"primary": true
},
{
"url": "https://torrentclaw.to",
"label": "torrentclaw.to",
"kind": "clearnet",
"primary": false
},
{
"url": "http://torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion",
"label": "torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion",
"kind": "tor",
"primary": false
}
],
"tor": {
"url": "http://torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion",
"label": "torrentf3aifidcsaaanmnmuhv2s53r6hqsl3zkmfidiaxainkeqk5id.onion"
},
"channels": [],
"staticFallbacks": [
{
"label": "GitHub Pages",
"url": "https://torrentclaw.github.io/mirrors/",
"description": "Static copy of the mirror list, hosted on GitHub Pages from the torrentclaw/mirrors repo (independent infrastructure)."
}
],
"updatedAt": "2026-05-13T18:16:13.577Z"
}