site/hermes/index.html
Local Dev 8d5304e450 releases: keep recent only, generate the page from the manifest; Hermes page catches up
The releases manifest had grown to 63 entries (every Theseus build back to
0.3.59) and the hand-edited page had drifted: Android was two versions
behind and Pithos was never listed. scripts/releases-page.mjs now trims the
manifest to recent versions per product (5 Theseus, 2 others) and rewrites
the page's release blocks from it. Consumers read only the first entry per
product, so nothing they see changes; older builds stay on Sia.

The Hermes subpage still said "designed, not built" and "MVP · desktop".
It now reflects what shipped: web messenger at hermes.x/messenger, three
sign-in paths incl. Theseus ID, three handle spellings, Nostr profiles,
vCard import, opt-in phone discovery, Ariadne's menu entry, and the planned
free sub-identity + Hermes TLDs (mainnet) as designed items.
2026-10-22 03:31:24 +03:00

294 lines
15 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 on-chain name — Silent Mode</title>
<meta name="description" content="Hermes: end-to-end encrypted messaging where your on-chain registered name is your identity. Live in Theseus desktop and at hermes.x/messenger. NIP-17 sealed DMs over Nostr, no email, no phone number, no company account.">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Silent Mode">
<meta property="og:title" content="Hermes — messaging by name — Silent Mode">
<meta property="og:description" content="Hermes: end-to-end encrypted messaging where your on-chain registered name is your identity. Live in Theseus desktop and at hermes.x/messenger. NIP-17 sealed DMs over Nostr, no email, no phone number, no company account.">
<meta property="og:url" content="https://silentmode.st/hermes">
<meta property="og:image" content="https://silentmode.st/brand/og.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image">
<link rel="stylesheet" href="shared.css?v=20260910">
<link rel="icon" type="image/svg+xml" href="favicon.svg">
</head>
<body>
<nav class="topnav">
<a class="brand" href="./"><svg class="logo" viewBox="0 0 32 20" aria-hidden="true"><rect class="l1" x="1.5" y="3.5" width="17" height="13" rx="6.5" ry="6.5" fill="none" stroke-width="2.6"/><rect class="l2" x="13.5" y="3.5" width="17" height="13" rx="6.5" ry="6.5" fill="none" stroke-width="2.6"/></svg>Silent <span class="g">Mode</span></a>
<a href="theseus">Theseus</a>
<a href="prometheus">Prometheus</a>
<a href="sirius">Sirius</a>
<a href="hephaestus">Hephaestus</a>
<a href="helios">Helios</a>
<a href="hermes" class="here">Hermes</a>
<a href="tools">Tools</a>
</nav>
<header class="hero">
<div class="mark" style="line-height:0; display:inline-flex">
<img src="branding/mark.webp" alt="Hermes" width="120" height="120" style="display:block">
</div>
<h1>Hermes <span class="pill p-shipped" style="vertical-align:middle;font-size:12px;margin-left:.6rem;background:rgba(79,209,165,.12);color:#4fd1a5;padding:2px 10px;border-radius:999px">live · desktop &amp; web</span></h1>
<p class="tag">End-to-end encrypted DMs over Nostr, addressed by your
on-chain registered 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>
<p class="tag" style="font-size:.95rem;margin-top:.8rem">
Lives inside <a href="theseus"><b>Theseus</b></a> (Hermes icon in the left sidebar, or <kbd style="background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);border-radius:4px;padding:1px 6px;font-family:ui-monospace,monospace;font-size:12px">Ctrl</kbd>+<kbd style="background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);border-radius:4px;padding:1px 6px;font-family:ui-monospace,monospace;font-size:12px">Shift</kbd>+<kbd style="background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);border-radius:4px;padding:1px 6px;font-family:ui-monospace,monospace;font-size:12px">E</kbd>
E as in <i>Ermis</i>) and in any browser at <a href="https://navigate.st/bns/hermes.x/messenger/"><b>hermes.x/messenger</b></a>. Brand kit at
<a href="hermes/branding"><code class="inline">/hermes/branding</code></a>.
</p>
<p style="margin:1.4rem 0 0;color:var(--dim);font-size:13px">
<b style="color:var(--mut)">Hermes.X</b> is the messenger's sovereign site, served from its own on-chain name.
Mirror: <a href="/hermes-x/">silentmode.st/hermes-x/</a> ·
gateway: <a href="https://navigate.st/bns/hermes.x/">navigate.st/bns/hermes.x/</a> ·
native with a resolver: <a href="https://hermes.x/"><code class="inline">https://hermes.x/</code></a>
</p>
</header>
<div class="wrap narrow">
<!-- ============ WHAT SHIPS TODAY ============ -->
<section class="plain">
<h2>What ships today</h2>
<p class="lede">Hermes is live inside the Theseus desktop browser and as a web messenger at
<a href="https://navigate.st/bns/hermes.x/messenger/">hermes.x/messenger</a>. Core messaging,
sign-in, profiles and the address book work end to end. Mobile and Tor transport follow.</p>
<div class="grid">
<div class="card">
<span class="pill p-live">live</span>
<h3>Threaded chat</h3>
<p>Contact list on the left with search and unread badges, the selected conversation on the
right with bubbles and inline reply. Enter to send, Shift-Enter for a new line.</p>
</div>
<div class="card">
<span class="pill p-live">live</span>
<h3>Send and receive by name</h3>
<p>Type <code class="inline">alice.x</code>. The client resolves the name on-chain, wraps the
message NIP-17 to the recipient's Nostr key and publishes to their declared relays.
Sealed-sender: the relay never sees who sent what to whom.</p>
</div>
<div class="card">
<span class="pill p-live">live</span>
<h3>Three ways to sign in</h3>
<p>Open with <b>Theseus ID</b> (the browser's own identity), a <b>name and password</b>,
or a <b>seed phrase</b> (12 or 24 words, or an nsec). You stay signed in on the device;
a new device needs the seed phrase.</p>
</div>
<div class="card">
<span class="pill p-live">live</span>
<h3>Handles the way you like them</h3>
<p>One identity, three spellings: <code class="inline">hermes:alice</code>,
<code class="inline">alice.x</code>, or the email form. Paste any of them; pick which
one the client shows in Settings.</p>
</div>
<div class="card">
<span class="pill p-live">live</span>
<h3>Profiles</h3>
<p>Display name, picture and a short bio as a standard Nostr profile, so other clients see
them too. Non-unique and display-only; the name is the identity.</p>
</div>
<div class="card">
<span class="pill p-live">live</span>
<h3>Address book and vCard import</h3>
<p>Named contacts stored locally, with optional vCard import from an existing address book.
You preview who gets added; nothing is uploaded.</p>
</div>
<div class="card">
<span class="pill p-live">live · opt-in</span>
<h3>Phone discovery</h3>
<p>Link a phone number and let contacts who know it find you. Off unless you turn it on;
lookups work the other way too, by number.</p>
</div>
<div class="card">
<span class="pill p-live">live</span>
<h3>History on your device</h3>
<p>Messages persist to disk per identity. Close and reopen the panel and your threads are
still there, unread marks included. Seed backup lives behind your password.</p>
</div>
<div class="card">
<span class="pill p-alpha">preview</span>
<h3>Web messenger</h3>
<p>The same panel wrapped as a stand-alone web app at hermes.x/messenger, for anyone without
the desktop browser. Same crypto, same identity, signs in with an nsec or a mnemonic.</p>
</div>
<div class="card">
<span class="pill p-upcoming">next</span>
<h3>Mobile</h3>
<p>Ariadne for Android already opens hermes.x from its menu. A native Messages tab is a
multi-release port of its own (Schnorr signatures, NIP-44 and a WebSocket client inside
the JDK-8 build); it ships in slices.</p>
</div>
<div class="card">
<span class="pill p-upcoming">planned</span>
<h3>Tor transport</h3>
<p>Relay traffic over the Tor client Theseus already runs, so even your connection IP leaves
the relay. The UI will say when it is on.</p>
</div>
</div>
</section>
<!-- ============ THE IDEA ============ -->
<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-plus-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.x</code> publishes her Nostr pubkey as an on-chain record. Her name
certificate is her verified, seizure-resistant identity. Message anyone by their on-chain
registered name, with no phone number, no email, no ICANN, no company, and no server that can
delete your account.</div>
</section>
<!-- ============ HOW IT WORKS ============ -->
<section>
<h2>How it works</h2>
<ol class="steps">
<li><b>Your name owns your key.</b>
<span>Register any name on the chain, or reuse one you already own, and publish your Nostr
pubkey to it as an <code class="inline">np</code> record. The key is derived from the same
wallet seed as the name, so one seed backs both.</span></li>
<li><b>Find people by name.</b>
<span>Type <code class="inline">bob.x</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.</span></li>
<li><b>The name shows, not the pubkey.</b>
<span>Incoming messages reverse-resolve pubkey to name where possible, so your chat list
looks like a normal chat list rather than a wall of hex.</span></li>
</ol>
</section>
<!-- ============ NAMES ============ -->
<section>
<h2>Getting a name</h2>
<p class="lede">Today a Hermes identity is any on-chain registered name, such as one under
<code class="inline">.x</code> from <a href="sirius">Sirius</a>. Two more paths are designed
and wait for the mainnet launch, when the Hermes top-level domains get minted.</p>
<div class="grid">
<div class="card">
<span class="pill p-live">today</span>
<h3>Your own on-chain name</h3>
<p>Register <code class="inline">alice.x</code> at Sirius, publish the Nostr pubkey to it,
sign in to Hermes with the same seed. One transaction, yours for good.</p>
</div>
<div class="card">
<span class="pill p-designed">designed</span>
<h3>Free sub-identity</h3>
<p>A name under the Hermes parent, issued through its signed-records manifest on Sia with
no chain fee, for people who have no Bitcoin Cash on hand. Promote it to a sovereign name
later from Settings in one transaction; the chain wins once both exist.</p>
</div>
<div class="card">
<span class="pill p-designed">designed</span>
<h3>Hermes TLDs</h3>
<p>A short Hermes TLD for the dotted form and a second one for the email form, both minted on
mainnet rather than the test network. The client already parses all three spellings, so
the switch is a configuration change.</p>
</div>
</div>
</section>
<!-- ============ WHERE IT LIVES ============ -->
<section>
<h2>Where it lives</h2>
<div class="grid">
<div class="card">
<span class="pill p-live">live</span>
<h3>In Theseus desktop</h3>
<p>A Messages panel in the left sidebar of the browser you already have. Reuses the
built-in wallet's seed as the messaging identity.</p>
</div>
<div class="card">
<span class="pill p-alpha">preview</span>
<h3>In any browser</h3>
<p>hermes.x/messenger, served from the name itself over Sia. Sign in with a seed phrase;
history stays in that browser's storage.</p>
</div>
<div class="card">
<span class="pill p-upcoming">next</span>
<h3>In Ariadne mobile</h3>
<p>Opens hermes.x from the menu today. The native Messages screen, with the same seed and the
same identity so you can message from either device, arrives in later releases.</p>
</div>
</div>
</section>
<!-- ============ HISTORY ============ -->
<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">
<span class="pill p-live">default</span>
<h3>Local only</h3>
<p>The client keeps your message history on the device. Nothing else knows it exists. The
same seed on two devices gives two-device redundancy; lose both and history is gone.
Signal's model, on purpose.</p>
</div>
<div class="card">
<span class="pill p-designed">designed</span>
<h3>Silent Mode cloud backup</h3>
<p>Toggle on and the client encrypts your history with a key derived from your wallet seed,
then backs it up to the Sia network. Only you can read it. Text only, no media.</p>
</div>
<div class="card">
<span class="pill p-designed">designed</span>
<h3>Your own Sia account</h3>
<p>Prefer to own the storage? Hermes sets up your own Sia account and routes backups there
instead. Same encryption, and media backup becomes possible.</p>
</div>
</div>
</section>
<!-- ============ BOUNDARIES ============ -->
<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 signing 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 until Tor transport lands.</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 and writes to a
few public relays for reach and redundancy.</p>
</div>
</div>
</section>
<div class="note"><b>Design documents.</b> The protocol design is in
<a href="https://code.silentmode.st/silentmode/silentmode/src/branch/master/Hermes/DESIGN-hermes.md">Hermes/DESIGN-hermes.md</a>,
the Android plan in <code class="inline">DESIGN-mobile-hermes.md</code>, and the free
sub-identity scheme in <code class="inline">DESIGN-sub-identity-manifest.md</code>, all in the
same folder. The desktop client ships as a bundled Theseus add-on and updates on its own channel,
independent of browser releases.</div>
</div>
<footer>
<div>Silent Mode — a Deviant project.</div>
<div class="fine">Named for the messenger of the gods; Ermis in modern Greek. Alpha software on
a test network. Nothing here is a service, product guarantee, or investment.</div>
</footer>
</body>
</html>