Finishes the icon sweep started in badce1bc. The branding pages' download links now serve mark.webp (main) + mark-wings-both.webp (variant); the Open Graph image for site-hermes-x points at the webp too. Legacy .svg files stay on disk so any outside link to them keeps working, but every page we control now references the webp assets.
172 lines
7.4 KiB
HTML
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">
|
|
hermes<span class="x">.x</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>
|