Site: - Rename the "Tools" nav label to "Theseus" on every subpage. URL slug /tools/ is kept intact so bookmarks and cross-links survive; the page's own title + h1 rename to Theseus; homepage product card retitled. - Remove the /tlds/ self-nav entry so its 7-item header matches every other subpage (was 8 items, causing the same "header rearranges" glitch Hephaestus had before). Auth-proxy (fixes reported by a concurrent session working with a chipnet wallet): - verify.ts now auto-detects the CashAddr prefix (bitcoincash, bchtest, bchreg) instead of hardcoding "bitcoincash". Chipnet wallets sign the same message with the same key but display bchtest: addresses; the old code compared their claim against a re-encoded bitcoincash: version and always rejected. Same key material, different envelope. - /challenge accepts any of the three known prefixes at the input gate. - /verify accepts an optional `state` param in the request body — used as a fallback if the challenge record didn't carry one (which happens when a scripted caller runs the /verify step without passing state through /challenge). Ensures RFC 6749 §4.1.2 compliance: the OAuth callback URL always echoes state when the client provided one.
152 lines
6.7 KiB
HTML
152 lines
6.7 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Hermes — messaging by name — Silent Mode</title>
|
|
<meta name="description" content="Hermes: end-to-end encrypted messaging where your Bitcoin Cash name is your identity. NIP-17 sealed DMs over Nostr, no email, no phone number, no company account.">
|
|
<link rel="stylesheet" href="../shared.css">
|
|
</head>
|
|
<body>
|
|
|
|
<nav class="topnav">
|
|
<a class="brand" href="../">⛓️ Silent <span class="g">Mode</span></a>
|
|
<a href="../tools/">Theseus</a>
|
|
<a href="../prometheus/">Prometheus</a>
|
|
<a href="../sirius/">Sirius</a>
|
|
<a href="../hephaestus/">Hephaestus</a>
|
|
<a href="../helios/">Helios</a>
|
|
<a href="./" class="here">Hermes</a>
|
|
</nav>
|
|
|
|
<header class="hero">
|
|
<div class="mark">⛓️✉️</div>
|
|
<h1>Hermes <span class="pill p-designed" style="vertical-align:middle;font-size:12px;margin-left:.6rem">designed · not yet built</span></h1>
|
|
<p class="tag">End-to-end encrypted DMs over Nostr, addressed by your
|
|
<code class="inline">.bch</code> name instead of a public-key string. Same wallet
|
|
is your identity — no email, no phone number, no company, no server that can delete
|
|
your account.</p>
|
|
</header>
|
|
|
|
<div class="wrap narrow">
|
|
|
|
<section class="plain">
|
|
<h2>The one idea that makes this different</h2>
|
|
<p class="lede">Every existing Nostr client has the same wart: identity is
|
|
<code class="inline">npub1q8s7f3k…</code> gibberish. The human-name fix — NIP-05 —
|
|
resolves <code class="inline">alice@example.com</code> through a DNS domain and a
|
|
web server. That is exactly the ICANN + server chain Silent Mode exists to escape.
|
|
Decentralized messaging bolted onto centralized identity.</p>
|
|
|
|
<div class="note"><b>The Hermes pitch.</b><br>
|
|
<code class="inline">alice.bch</code> publishes her Nostr pubkey as an on-chain
|
|
record. Her name certificate <i>is</i> her verified, seizure-resistant identity.
|
|
Message anyone by their <code class="inline">.bch</code> name — no phone number, no
|
|
email, no ICANN, no company, no server that can delete your account.</div>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>How it works</h2>
|
|
<ol class="steps">
|
|
<li><b>Your name owns your key.</b>
|
|
<span>Register any name you like on the chain (or reuse one you already own),
|
|
publish your Nostr pubkey to it as a new <code class="inline">np</code> record.
|
|
The key is derived from the same wallet seed as the name itself, so one seed
|
|
backs both.</span></li>
|
|
<li><b>Find people by name.</b>
|
|
<span>Type <code class="inline">bob.bch</code>. The client resolves it against
|
|
the chain, pulls <code class="inline">np</code> (Nostr pubkey) and
|
|
<code class="inline">nr</code> (preferred relays). No directory server involved.</span></li>
|
|
<li><b>Send the message sealed.</b>
|
|
<span>NIP-17 gift-wrapped DMs — the relay sees neither sender nor content, only
|
|
that a wrap addressed to some pubkey exists. Route over Tor to also hide your
|
|
IP; Theseus already can.</span></li>
|
|
<li><b>The name shows, not the pubkey.</b>
|
|
<span>Incoming messages reverse-resolve pubkey → name where possible, so your
|
|
chat list looks like a normal chat list — not a wall of hex.</span></li>
|
|
</ol>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Where it will live</h2>
|
|
<div class="grid">
|
|
<div class="card">
|
|
<h3>In Theseus <span class="src s-chain">desktop</span></h3>
|
|
<p>A Messages panel inside the browser you already have. Routes relay traffic over
|
|
Tor. Reuses the built-in wallet's seed as the messaging identity.</p>
|
|
</div>
|
|
<div class="card">
|
|
<h3>In Ariadne mobile <span class="src s-chain">phone</span></h3>
|
|
<p>A Messages screen in the existing Android app. Same seed, same identity — you
|
|
can message from either device without a linked-account handshake.</p>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Where your history lives</h2>
|
|
<p class="lede">Three modes, one toggle. The default assumes no cloud at all — every
|
|
later option is opt-in, and none of them let anyone but you read your messages.</p>
|
|
<div class="grid">
|
|
<div class="card">
|
|
<h3>Local only <span class="src s-chain">default</span></h3>
|
|
<p>The client keeps your message history on the device. Nothing else knows it
|
|
exists. Same seed on Theseus and Ariadne gives you two-device redundancy for
|
|
free — lose one, restore from the other. Lose both, history is gone. Signal's
|
|
model, on purpose.</p>
|
|
</div>
|
|
<div class="card">
|
|
<h3>Silent Mode cloud backup <span class="src s-chain">opt-in</span></h3>
|
|
<p>Toggle on and the client encrypts your message history with a key derived
|
|
from your wallet seed, then backs it up to decentralized cloud storage on
|
|
the Sia network. Only you can read it. <b>Text messages only</b> — no
|
|
pictures, no video, no attachments.</p>
|
|
</div>
|
|
<div class="card">
|
|
<h3>Your own Sia account <span class="src s-chain">advanced</span></h3>
|
|
<p>Prefer to own the storage yourself? Hermes sets up your own Sia account
|
|
and routes your backups there instead. Same encryption from your wallet
|
|
seed — and this time media backup is on the table too.</p>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>Honest boundaries</h2>
|
|
<div class="grid">
|
|
<div class="card">
|
|
<h3>Messaging, not email</h3>
|
|
<p>No Gmail interop — by design. A separate anonymous-mailbox product covers
|
|
"sign up on services without leaking a real address."</p>
|
|
</div>
|
|
<div class="card">
|
|
<h3>Metadata resistance is good, not perfect</h3>
|
|
<p>NIP-17 hides sender and content from relays. Relays still see the recipient
|
|
pubkey, timing, and your connection IP unless you route over Tor. The UI will
|
|
tell you when it's on.</p>
|
|
</div>
|
|
<div class="card">
|
|
<h3>Relays are Nostr's soft spot</h3>
|
|
<p>A message lives only while some relay keeps it. Silent Mode runs one relay on
|
|
the same anonymous VPS as the gateway, and writes to a few public relays for
|
|
reach and redundancy.</p>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<div class="note warn"><b>Status: designed, not built.</b> The full protocol design is
|
|
in <a href="https://github.com/deviant"><code class="inline">Hermes/DESIGN-hermes.md</code></a>
|
|
(mirror). Nothing to install yet — this page exists to say what is coming, and to
|
|
make it possible to ask for updates in the messaging panel of a future Theseus or
|
|
Ariadne build.</div>
|
|
|
|
</div>
|
|
|
|
<footer>
|
|
<div>Silent Mode — a Deviant project.</div>
|
|
<div class="fine">Named for the messenger of the gods. Not yet built. Contents subject
|
|
to change until the first client ships.</div>
|
|
</footer>
|
|
|
|
</body>
|
|
</html>
|