hermes-site/index.html
Local Dev 60821e4eae hermes.x: fix the top-nav wordmark
Rendered as "hermes .x" with a visible gap because the brand link's
inline-flex (gap:8px) treated the text and the <span class="x"> as two
separate flex children, so the gap meant for the mark→text separation
landed between the two halves of the name too. Wrap the whole wordmark
in one span and give the display name its capital letters at the same
time, so the brand reads "Hermes.X" like the kit says.

Three places share the markup — the top nav on index, branding and
messenger — all three fixed.
2026-10-21 22:24:59 +03:00

172 lines
7.4 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>hermes.x — message anyone by their on-chain name</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="icon" href="assets/favicon.svg" type="image/svg+xml">
<link rel="mask-icon" href="assets/favicon.svg" color="#38BDF8">
<meta property="og:type" content="website">
<meta property="og:site_name" content="hermes.x">
<meta property="og:title" content="hermes.x — message anyone by their on-chain name">
<meta property="og:description" content="End-to-end encrypted DMs over Nostr, addressed by your on-chain registered name. No email, no phone, no server that can delete your account.">
<meta property="og:url" content="https://hermes.x/">
<meta property="og:image" content="https://hermes.x/assets/mark.webp">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="hermes.x — message anyone by their on-chain name">
<meta name="twitter:description" content="Sealed-sender DMs over Nostr, addressed by on-chain registered name.">
<link rel="stylesheet" href="assets/shared.css">
</head>
<body>
<nav class="topnav">
<a class="brand" href="./">
<img src="assets/mark.webp" alt="Hermes" width="5" height="22" style="display:block">
<span>Hermes<span class="x">.X</span></span>
</a>
<a href="./" class="here">Overview</a>
<a href="messenger/">Messenger</a>
<a href="branding/">Branding</a>
<a href="https://theseus.x/" class="get">Get Theseus</a>
</nav>
<header class="hero">
<div class="mark" aria-hidden="true">
<img src="assets/mark.webp" alt="Hermes" width="3" height="22" style="display:block">
</div>
<h1>Message by name<span class="x">.</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.
Your name owns your key. No email, no phone number, no company, no server
that can delete your account.</p>
<div class="cta">
<a class="btn primary" href="messenger/">Open Messenger</a>
<a class="btn ghost" href="https://theseus.x/">Get Theseus (desktop)</a>
</div>
</header>
<div class="wrap narrow">
<section class="plain">
<h2>What ships today</h2>
<p class="lede">Hermes is live inside the Theseus desktop browser. Web
messenger and Android follow.</p>
<div class="grid">
<div class="card">
<h3>Threaded chat <span class="src ok">live</span></h3>
<p>Contact list on the left (search + unread badges), selected
conversation on the right, inline reply. Enter to send.</p>
</div>
<div class="card">
<h3>Send by name <span class="src ok">live</span></h3>
<p>Type <code class="inline">alice.x</code>. The client resolves the
name on-chain, wraps NIP-17 to the recipient's Nostr key, publishes
to their declared relays. Sealed-sender — the relay never sees who
sent what to whom.</p>
</div>
<div class="card">
<h3>Address book <span class="src ok">live</span></h3>
<p>Local contact list — add names, nicknames, import vCards. Nothing
uploaded; the book is on your device.</p>
</div>
<div class="card">
<h3>History on your device <span class="src ok">live</span></h3>
<p>Messages persist to disk per identity. Close and reopen the panel —
your threads are still there, unread marks included.</p>
</div>
<div class="card">
<h3>Web Messenger <span class="src next">next</span></h3>
<p><a href="messenger/">hermes.x/messenger</a> — browser-side messenger
for anyone without the desktop app. Same crypto, same identity.</p>
</div>
<div class="card">
<h3>Mobile (Ariadne) <span class="src plan">planned</span></h3>
<p>Inside the Ariadne Android app: same wallet seed, same Nostr identity,
zero extra onboarding.</p>
</div>
</div>
</section>
<section>
<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
Bitcoin Cash names exist to escape.</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 <i>is</i> her verified,
seizure-resistant identity. Message anyone by their
on-chain registered 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 on the chain, publish your Nostr pubkey 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 → name where possible,
so your chat list looks like a normal chat list — not a wall of hex.</span></li>
</ol>
</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.</p>
</div>
<div class="card">
<h3>Relays are Nostr's soft spot</h3>
<p>A message lives only while some relay keeps it. We run one relay +
write to a handful of public relays for reach and redundancy.</p>
</div>
</div>
</section>
<section class="plain" style="text-align:center">
<h2>Try it</h2>
<p class="lede" style="margin-left:auto;margin-right:auto">
Open the web messenger right here, or install Theseus for the full
experience (persistent history, sidebar entry, keyboard shortcut).</p>
<div class="cta">
<a class="btn primary" href="messenger/">Open Messenger</a>
<a class="btn ghost" href="https://theseus.x/">Get Theseus</a>
<a class="btn ghost" href="branding/">Brand kit</a>
</div>
</section>
</div>
<footer>
<div>hermes.x — a <a href="https://silentmode.st/">Silent Mode</a> project.</div>
<div class="fine">Named for the messenger of the gods. Ermis in modern Greek.</div>
</footer>
</body>
</html>