2026-07-31 08:43:31 +02:00
<!doctype html>
< html lang = "en" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
2026-08-31 04:16:42 +02:00
< title > Theseus — Silent Mode< / title >
2026-08-07 20:28:25 +02:00
< meta name = "description" content = "Silent Mode's own clients: Theseus Navigator for Windows and Android (browsers that speak the BCH name registry natively, Ariadne resolver built in), the public relay, the Firefox extension, and the standalone Ariadne Resolver for system-wide use." >
2026-07-31 08:43:31 +02:00
< link rel = "stylesheet" href = "../shared.css" >
< style >
2026-08-07 20:28:25 +02:00
/* Flagship — ONE panel with a shared description, two versions inside.
Windows + Android are the same product on two platforms; the layout
says so before you read a word. */
.flagship{
background:var(--panel);border:1px solid var(--line);border-radius:16px;
padding:26px 26px 22px;margin:1.4rem 0 2rem;
}
.flagship .head{margin-bottom:1.3rem;text-align:center}
.flagship .head h2{font-size:1.7rem;font-weight:600;margin:0 0 .5rem;letter-spacing:.15px}
.flagship .head h2 .g{color:var(--acid)}
.flagship .head p{color:var(--mut);font-size:15px;line-height:1.65;margin:0 auto;max-width:680px}
.flagship .versions{
display:grid;grid-template-columns:1fr 1fr;gap:0;
background:var(--panel2);border:1px solid var(--line);border-radius:12px;overflow:hidden;
}
.flagship .versions .ver + .ver{border-left:1px solid var(--line)}
@media (max-width:800px){
.flagship .versions{grid-template-columns:1fr}
.flagship .versions .ver + .ver{border-left:none;border-top:1px solid var(--line)}
}
.ver{padding:20px 22px 18px;display:flex;flex-direction:column;gap:.55rem}
.ver .plat{color:var(--acid);font:600 11px/1 system-ui;letter-spacing:.22em;
text-transform:uppercase;margin-bottom:.1rem}
.ver h3{font-size:1.1rem;font-weight:600;margin:0}
.ver .desc{color:var(--mut);font-size:13.5px;line-height:1.62;margin:0}
.ver .meta{color:var(--dim);font-size:12px;margin-top:.2rem}
.ver .buttons{display:flex;gap:8px;flex-wrap:wrap;margin-top:.4rem}
.ver .buttons .btn{padding:9px 16px;font-size:13.5px}
.ver .verifybox{margin-top:auto;padding-top:11px;border-top:1px solid var(--line)}
.ver .verifybox .lbl{color:var(--mut);font-size:11.5px;margin-bottom:5px}
.ver .h{display:flex;gap:8px;flex-wrap:wrap;align-items:baseline;font-size:11px;
color:var(--dim);margin-top:4px}
.ver .h b{color:var(--mut);font-weight:600;min-width:78px}
.ver .h code{font-family:ui-monospace,monospace;font-size:10.5px;color:#c9d4e3;word-break:break-all}
.flagship .footnotes{margin-top:1.1rem;display:grid;gap:8px}
.flagship .fn{color:var(--mut);font-size:12.5px;padding:9px 13px;
background:var(--panel2);border:1px dashed rgba(255,255,255,.09);border-radius:8px}
.flagship .fn b{color:var(--ink)}
/* Old .dl style — kept for the standalone-resolver and extension sections. */
2026-07-31 08:43:31 +02:00
.dl{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;
background:var(--panel);border:1px solid var(--line);border-radius:12px;
padding:16px 20px;margin-top:1.3rem}
.dl > div:first-child{flex:1;min-width:240px}
.dl h3{margin:0 0 .3rem;font-size:1.05rem}
.dl p{margin:.3rem 0 0;color:var(--mut);font-size:14px}
.dl .meta{color:var(--dim);font-size:12.5px;margin-top:.5rem}
.dl .act{white-space:nowrap;display:flex;flex-direction:column;gap:6px}
.dl .act .btn{padding:9px 16px;font-size:13.5px;text-align:center}
.dl .act .soon{color:var(--dim);font-size:13px;border:1px dashed var(--line);
border-radius:999px;padding:7px 16px;display:inline-block;text-align:center}
.hashes{flex-basis:100%;margin-top:12px;border-top:1px solid var(--line);padding-top:12px}
.hashes .h{display:flex;gap:8px;flex-wrap:wrap;align-items:baseline;font-size:12px;color:var(--dim);margin-top:4px}
.hashes .h b{color:var(--mut);font-weight:600;min-width:110px}
.hashes code{font-family:ui-monospace,monospace;font-size:11.5px;color:#c9d4e3;word-break:break-all}
.platform-line{color:var(--dim);font-size:12.5px;margin-top:.2rem;letter-spacing:.02em}
< / style >
brand: Silent Mode + navigate.st kits (logo, wordmark, avatar, banner, favicon)
Two brand kits, one design language. Each site now has a /brand/ page + a
favicon; every page I own on silentmode.st links the SVG favicon (parallel
sessions can add the same line to Sirius/Hephaestus/Choose when they touch
those files).
Silent Mode kit (site/brand/, site/favicon.svg):
Mark — two interlocking chain links, one muted (#8b98a9) + one acid
(#d6ff3d). The umbrella family mark.
Logo, wordmark, avatar (400x400 social), banner (1500x500 social header).
Brand page shows every asset with SVG download, colour palette
(tokens matching shared.css), usage do's and don'ts.
navigate.st kit (navigate.st/brand/, navigate.st/favicon.svg):
Mark — compass rose (N acid, other points muted) inside a chain-link
ring. Ring keeps it in the Silent Mode family without cloning the
SilentMode mark; compass says what this specific site is (the
wayfinding front door).
Same asset set: logo, wordmark, avatar, banner. Standalone brand page
(no shared.css — navigate.st runs single-file).
nginx (VPS): added two locations to sites-enabled/navigate-st so /favicon.svg
and /brand/* resolve from /opt/silent-mode/navigate-brand/. Rollback point
at sites-enabled/navigate-st.bak.1788146513. silentmode.st serves both from
disk under /opt/silent-mode/site/ — no vhost change needed.
Verified live: all favicon + brand URLs return 200 on both hosts.
2026-08-31 05:22:45 +02:00
< link rel = "icon" type = "image/svg+xml" href = "/favicon.svg" >
2026-07-31 08:43:31 +02:00
< / head >
< body >
< nav class = "topnav" >
< a class = "brand" href = "../" > ⛓️ Silent < span class = "g" > Mode< / span > < / a >
2026-08-31 04:16:42 +02:00
< a href = "./" class = "here" > Theseus< / a >
2026-07-31 08:43:31 +02:00
< a href = "../prometheus/" > Prometheus< / a >
< a href = "../sirius/" > Sirius< / a >
2026-08-31 04:06:28 +02:00
< a href = "../hephaestus/" > Hephaestus< / a >
2026-07-31 08:43:31 +02:00
< a href = "../helios/" > Helios< / a >
< a href = "../hermes/" > Hermes< / a >
< / nav >
< header class = "hero" >
2026-08-31 04:16:42 +02:00
< h1 > < span class = "g" > Theseus< / span > — the browsers< / h1 >
2026-08-07 20:28:25 +02:00
< p class = "tag" > Everything you need to reach names on the Bitcoin Cash chain. The
flagship browser — < b > Theseus Navigator< / b > , on Windows and Android — is below.
Beneath it: the no-install relay, the Firefox extension, and a standalone
Ariadne Resolver for system-wide BNS in every browser you use.< / p >
2026-07-31 08:43:31 +02:00
< / header >
< div class = "wrap" >
2026-08-07 20:28:25 +02:00
<!-- ============ FLAGSHIP — one product, two versions ============ -->
< section class = "plain" id = "flagship" >
< div class = "flagship" >
< div class = "head" >
< h2 > Theseus < span class = "g" > Navigator< / span > < / h2 >
< p > A browser that resolves BNS names on the device itself — no relay in the
middle, no account. Tabs, search, a home page built from names actually
registered on chain, and a badge on every page showing which chain and which
storage backend served it. The < b > Ariadne resolver< / b > is baked in — the app
< i > is< / i > both browser and resolver. One brand, two platforms.< / p >
< / div >
< div class = "versions" >
< div class = "ver" id = "windows" >
< div class = "plat" > Desktop · Windows 64-bit< / div >
< h3 > for Windows< / h3 >
< p class = "desc" > Full-window desktop browser with Tor toggle and search bar.
macOS and Linux not yet packaged.< / p >
2026-09-07 01:56:12 +02:00
< div class = "meta" > v0.3.16 · installer ~118 MB (with Ariadne's Thread) · portable ~116 MB · unsigned< / div >
2026-08-07 20:28:25 +02:00
< div class = "buttons" >
2026-09-07 01:56:12 +02:00
< a class = "btn acid" href = "https://dl.silentmode.st/TheseusNavigator-Setup-0.3.16.exe" > Installer< / a >
< a class = "btn ghost" href = "https://dl.silentmode.st/TheseusNavigator-0.3.16-portable.exe" > Portable .exe< / a >
2026-08-07 20:28:25 +02:00
< / div >
< div class = "verifybox" >
< div class = "lbl" > SHA-256 — verify before running< / div >
2026-09-07 01:56:12 +02:00
< div class = "h" > < b > Installer< / b > < code > f9d0654572e110f6895951dc22ec9fb4549b3a8fb14714770579264b62051259< / code > < / div >
< div class = "h" > < b > Portable< / b > < code > 7ff7a1501bc7d7407ec0a4974aa26652d6d7ecabcc796584254a8bb463d43b09< / code > < / div >
2026-08-07 20:28:25 +02:00
< / div >
< / div >
< div class = "ver" id = "android" >
< div class = "plat" > Mobile · Android 5.0+ (API 21)< / div >
< h3 > for Android< / h3 >
< p class = "desc" > Phone-sized browser with tap-to-verify provenance — the block
and transaction behind each name are one tap away.< / p >
2026-08-31 01:05:20 +02:00
< div class = "meta" > v0.11 · ~124 KB · self-signed release key< / div >
2026-08-07 20:28:25 +02:00
< div class = "buttons" >
2026-08-31 01:05:20 +02:00
< a class = "btn acid" href = "https://dl.silentmode.st/ariadne-v0.11.apk" > Download APK< / a >
2026-08-07 20:28:25 +02:00
< / div >
< div class = "verifybox" >
< div class = "lbl" > SHA-256 — verify before installing< / div >
2026-08-31 01:05:20 +02:00
< div class = "h" > < b > APK< / b > < code > 03c95832c16cc4763acaadbf328caa7d4bd05fc7c2994f6997a79cc6890bca44< / code > < / div >
2026-08-07 20:28:25 +02:00
< div class = "h" > < b > Signing key< / b > < code > 46ebbbe5dc73148d66410fd0337b1e6683472128c983e8e2578200b9e3ca548c< / code > < / div >
< / div >
< / div >
< / div >
< div class = "footnotes" >
2026-08-31 04:56:11 +02:00
< div class = "fn" > < b > Also on the chain.< / b > The same download page lives at
< a href = "https://theseus.x/" > theseus.x< / a > (Sia-hosted, name pinned on chain).
Type it in Theseus's own address bar and you're skipping every intermediary —
no DNS, no CDN, no operator between you and the bytes.< / div >
Ship Theseus 0.1.0 510f81fd (bundle Ariadne's Thread)
Setup 510f81fd5e9b4287a55817aaf5080e5d46005eecb5359eb06892040cf8d10d87
Portable 96bfb469f2d9dfe11606aa10db92febdfce73df980eec475ab285f2334925158
Bundled AriadneResolver-Setup-0.1.0.exe (9ab725be, unchanged 0.1.0)
Version 0.0.9 -> 0.1.0 marks the "Silent Mode = one install" milestone:
Theseus and the system-wide Ariadne resolver now ship together.
nsis/installer.nsh (electron-builder `nsis.include`) hooks two macros:
customInstall -- If Ariadne's Thread is NOT already installed,
MessageBox MB_YESNO|MB_DEFBUTTON1 asks whether
to install it now. On Yes, chain-invokes the
bundled Inno installer with
/VERYSILENT /SUPPRESSMSGBOXES /NORESTART
(Ariadne raises its own UAC because Inno declares
PrivilegesRequired=admin). Ariadne being present
already suppresses the prompt on upgrades.
customUnInstall -- Reads Ariadne's UninstallString from HKLM 64-bit
Uninstall\{...ARIADNERSLVR}_is1. If present,
symmetric MessageBox asks whether to remove it
too, then ExecWaits the string with the same
silent flags. Skips silently if Ariadne isn't
installed.
Registry probe uses SetRegView 64 (Ariadne installs 64-bit per
ArchitecturesInstallIn64BitMode=x64compatible in its .iss). Reset to
`lastused` after each probe to leave electron-builder's own state
unchanged.
Package changes:
- version 0.0.9 -> 0.1.0
- build.extraResources adds build/AriadneResolver-Setup-0.1.0.exe
(unpacked to $INSTDIR/resources/); build/ stays gitignored - the
binary is regenerated by copying from AriadneResolver's Inno output
- build.nsis.include -> nsis/installer.nsh
Size: installer 122 MB (+25 MB for bundled Ariadne), portable 122 MB.
Portable also carries the Ariadne exe as a side effect of extraResources
being global; portable can't invoke an installer, so the 25 MB is dead
weight there - future rev could scope extraResources per-target.
Site updates: tools page + releases page + theseus.x landing all
reflect the 0.1.0 hashes, sizes, and the new "Ariadne's Thread bundled"
line. tools page's "Coming to the Windows installer" footnote is
rewritten past tense because it landed.
Deployed:
- scp installers + releases-manifest.json to /opt/silent-mode/dl/
- scp tools/ + releases/ index pages to /opt/silent-mode/site/
- sia-upload of ../site and ../site-theseus-x
- verified HEAD 200, manifest reports 0.1.0 2026-08-31, VPS hashes
match local
Existing 0.0.6 (or newer) installs will surface 0.1.0 in the update
chip on next launch.
2026-08-31 05:07:34 +02:00
< div class = "fn" > < b > Ariadne's Thread is bundled.< / b > The Windows installer
(v0.1.0+) prompts once during setup — recommended-on — to also install
the system-wide resolver, so BNS names also work in Chrome, Edge, and
every other browser on the machine. Uninstalling Theseus asks whether
to remove the resolver too. Skip the prompt and Theseus is still fully
self-contained. The < a href = "#resolver" > standalone Ariadne Resolver< / a >
below is the same code for anyone who wants only the resolver.< / div >
2026-08-31 01:05:20 +02:00
< div class = "fn" > < b > Android APK still named < code style = "background:transparent;border:none;padding:0" > ariadne-v0.11.apk< / code > .< / b >
2026-08-07 20:28:25 +02:00
Same app, same signing key — updates in place. The label shifts to < b > Theseus
for Android< / b > so both platforms share one brand; the next APK carries the
new filename.< / div >
< / div >
< / div >
< div class = "note" > < b > Not in a store.< / b > Neither version is on the Microsoft Store,
Google Play, or the App Store. Distributing there requires a legal identity and
the store's permission — the two things this project exists to do without. You
will have to allow the install once, and your OS will warn about an unrecognized
app. < b > The SHA-256 (and, on Android, the signing-key fingerprint) is the real
check.< / b > < / div >
< / section >
<!-- ============ NO - INSTALL RELAY ============ -->
< section id = "relay" >
< h2 > No install at all — the relay< / h2 >
< p class = "lede" > A public gateway reads the blockchain for you and hands the page to
your ordinary browser over ordinary HTTPS. Works on any phone, tablet or computer,
in any browser, with nothing to download and no settings to change. Fastest way
to see a < code class = "inline" > .bch< / code > name; costs you a little privacy — the
relay operator can see what you asked for.< / p >
2026-07-31 08:43:31 +02:00
< table >
< tr > < th > Open this< / th > < th > What you get< / th > < th > Where the page lives< / th > < / tr >
< tr > < td > < a href = "https://navigate.st/bns/hello.bch" > < code > navigate.st/bns/hello.bch< / code > < / a > < / td >
< td > A small page< / td > < td > < span class = "src s-chain" > inside a blockchain transaction< / span > < / td > < / tr >
< tr > < td > < a href = "https://navigate.st/bns/silentmode.bch" > < code > navigate.st/bns/silentmode.bch< / code > < / a > < / td >
2026-08-07 20:28:25 +02:00
< td > This project's own on-chain demo< / td > < td > < span class = "src s-chain" > inside a blockchain transaction< / span > < / td > < / tr >
2026-08-31 04:56:11 +02:00
< tr > < td > < a href = "https://navigate.st/bns/theseus.x" > < code > navigate.st/bns/theseus.x< / code > < / a > < / td >
< td > Theseus Navigator's own page< / td > < td > < span class = "src s-sia" > Sia storage network< / span > < / td > < / tr >
2026-07-31 08:43:31 +02:00
< tr > < td > < a href = "https://navigate.st/bns/coinspectrum.deviant.bch" > < code > navigate.st/bns/coinspectrum.deviant.bch< / code > < / a > < / td >
< td > A full multi-file site< / td > < td > < span class = "src s-sia" > Sia storage network< / span > < / td > < / tr >
< tr > < td > < a href = "https://navigate.st/bns/coinspectrum.bch" > < code > navigate.st/bns/coinspectrum.bch< / code > < / a > < / td >
< td > The same site again< / td > < td > < span class = "src s-srv" > an ordinary web server< / span > < / td > < / tr >
< / table >
< / section >
2026-08-07 20:28:25 +02:00
<!-- ============ BROWSER EXTENSIONS ============ -->
< section id = "extensions" >
< h2 > Browser extensions< / h2 >
< p class = "lede" > Add BNS to a browser you already use. The lightest possible install —
no daemon, no system changes, works only inside the browser it's installed in.< / p >
2026-07-31 08:43:31 +02:00
2026-08-07 20:28:25 +02:00
< div class = "dl" id = "firefox" >
2026-07-31 08:43:31 +02:00
< div >
< span class = "pill p-alpha" > alpha< / span >
2026-08-07 20:28:25 +02:00
< h3 > Ariadne for Firefox< / h3 >
< p > A browser add-on that resolves BNS names inside Firefox. 8 KB, no
dependencies, no background service, no system changes. Also runs on
< b > Firefox for Android< / b > . Known limit: no TLS pinning yet — sites reached
over < code class = "inline" > ip< / code > records are only as trustworthy as the
upstream server. Being fixed.< / p >
< div class = "meta" > Firefox · ~8 KB · packaging in progress< / div >
2026-07-31 08:43:31 +02:00
< / div >
< div class = "act" >
2026-08-07 20:28:25 +02:00
< span class = "soon" > Packaging in progress< / span >
2026-07-31 08:43:31 +02:00
< / div >
< / div >
< / section >
2026-08-07 20:28:25 +02:00
<!-- ============ STANDALONE ARIADNE RESOLVER ============ -->
2026-07-31 08:43:31 +02:00
< section id = "resolver" >
2026-08-07 20:28:25 +02:00
< h2 > System-wide — Ariadne Resolver (standalone)< / h2 >
< p class = "lede" > For advanced users who want BNS names working in < i > every< / i >
browser on their Windows machine — Chrome, Edge, Firefox, everything — without
installing Theseus. Runs as a small background service that intercepts DNS and
mints TLS certificates on the fly for BCH-registered names. This will become an
optional checkbox inside the Theseus installer once v0.0.4 ships; standalone
remains the way to get it without the browser.< / p >
2026-07-31 08:43:31 +02:00
< div class = "dl" >
< div >
< span class = "pill p-alpha" > alpha< / span >
< h3 > Ariadne Resolver for Windows< / h3 >
< p > Asks for administrator rights because it changes how your machine resolves
names. Adds a background service, points DNS at loopback, imports one root
2026-08-07 20:28:25 +02:00
certificate < b > name-constrained< / b > to the BNS TLDs — the root cannot vouch
for < code class = "inline" > .com< / code > . Everything reverses with the bundled
uninstaller.< / p >
2026-07-31 08:43:31 +02:00
< div class = "meta" > Windows 64-bit · v0.1.0 · bundled Node runtime · unsigned build< / div >
< / div >
< div class = "act" >
< a class = "btn" href = "https://dl.silentmode.st/AriadneResolver-Setup-0.1.0.exe" > Installer< / a >
< / div >
< div class = "hashes" >
< div style = "color:var(--mut);font-size:12.5px" > SHA-256 — verify before elevating:< / div >
Ariadne 9ab725be: default installer to -Mode nrpt (surgical)
Change the Inno [Run] entry from
install.ps1 -Mode full -> install.ps1 -Mode nrpt
Rationale (observed today on the operator's machine): Full mode repoints
adapter DNS at 127.0.0.1, so every DNS query goes through the daemon's
forwarder. bnsd.js's raw-dgram forwarder has a known EDNS/AAAA bug --
strict clients using getaddrinfo (Chrome, Yandex, Firefox, Node) reject
some forwarded replies with "non-recoverable error". Concretely today,
github.com / duckduckgo.com / www.coinex.com all failed in Yandex while
silentmode.bch loaded fine.
Surgical (NRPT) mode routes only activated BCNR TLDs to the daemon
(fetched from tlds.bch at install time -- currently bch, p2p, deviant,
nav, sia, dgb, nt, sm, lm). Everything else stays on the adapter's DHCP
DNS, sidestepping the forwarder bug entirely. Users still get the
"resolves any BCNR TLD in every browser" promise for the entire on-chain
activated set.
Full mode remains available for anyone who explicitly opts in by running
install.ps1 -Mode full themselves. Default flips back once the forwarder
bug is repaired (memory: silentmode-build-state.md).
- SHA-256: 9ab725bec5567625e5857a49b112c4fbc0f59dbdd623abd7110429306f5d0ddb
- Deployed to dl.silentmode.st, site pages + manifest updated, Sia
mirror re-uploaded. Coordinates with a parallel-session build that
briefly landed cb9e8ea0 in the site references without a matching
binary; resolved to my build since only its bytes exist locally.
2026-08-14 23:33:29 +02:00
< div class = "h" > < b > Installer< / b > < code > 9ab725bec5567625e5857a49b112c4fbc0f59dbdd623abd7110429306f5d0ddb< / code > < / div >
2026-07-31 08:43:31 +02:00
< / div >
< / div >
< / section >
<!-- ============ VERIFYING ============ -->
2026-08-07 20:28:25 +02:00
< section id = "verify" >
2026-07-31 08:43:31 +02:00
< h2 > Verifying every download< / h2 >
< div class = "grid" >
< div class = "card" >
< h3 > Windows< / h3 >
< p > After downloading, compute the SHA-256 and compare it to the value above:
< code class = "inline" > certutil -hashfile < file> SHA256< / code > .
Builds carry < b > no code-signing certificate< / b > — that requires a legal
identity, which is what this project exists to avoid. Windows will warn about
an unrecognized app; that warning is expected. The hash is the real check.< / p >
< / div >
< div class = "card" >
< h3 > Android< / h3 >
< p > Hash the downloaded < code class = "inline" > .apk< / code > on a computer before
2026-08-07 20:28:25 +02:00
moving it to the phone, or use any file-hashing app. The < b > signing
certificate fingerprint< / b > is what matters most — every future update is
signed with the same key. Android will refuse to install an update signed
by anyone else, so once you have checked it, that check protects every
version after this one.< / p >
2026-07-31 08:43:31 +02:00
< / div >
< div class = "card" >
< h3 > On chain< / h3 >
< p > The canonical checksum list will be published as a record on
2026-08-07 20:28:25 +02:00
< code class = "inline" > releases.silentmode.bch< / code > — the name pins where it
is served from, so a tampered mirror cannot change what you check against.
2026-07-31 08:43:31 +02:00
Machine-readable manifest: < a href = "../releases-manifest.json" > < code class = "inline" > releases-manifest.json< / code > < / a > .
Human-readable page: < a href = "../releases/" > < code class = "inline" > /releases/< / code > < / a > .< / p >
< / div >
< / div >
< / section >
< / div >
< footer >
< div > Silent Mode — a Deviant project.< / div >
< div class = "fine" > Alpha software on a test network. Nothing here is signed by an
2026-08-07 20:28:25 +02:00
authority your device already trusts — < b > by design< / b > . The SHA-256 is the real
check. Nothing here is a service, a product guarantee, or an investment.< / div >
2026-07-31 08:43:31 +02:00
< / footer >
< / body >
< / html >