2026-07-29 13:54:34 +02:00
<!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" >
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-29 13:54:34 +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 = "../tools/" > 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 = "./" class = "here" > Hermes< / a >
2026-07-29 13:54:34 +02:00
< / 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 >
Snapshot in-progress work: Ariadne mobile, Theseus password manager, Hephaestus
Several concurrent workstreams committed together as a checkpoint:
- Ariadne mobile resolver — BchFetcher/Bns/MainActivity resolution logic,
AndroidManifest + build.ps1
- Theseus password manager — settings.html/chrome.html/settings-preload.js UI +
main.js wiring + package.json resource; Argus password-vault.js, record-picker.js
(+ tests) and resolver-web.d.ts
- Hephaestus — new BCH-wallet OIDC auth-proxy + Forgejo docker-compose and
restic/S3 scripts (secrets referenced via env only; Hephaestus/.env is gitignored)
- Argus public-gateway.mjs updates
- Docs — root README, Email README/RUNBOOK, VPS access runbooks (Checkers/Deviant),
site/hermes, WebsiteDev registry + faster-blocks, Failures/ AAAA-mangle writeup,
Decentralized Storage map, coordination notes
- .gitignore — exclude /.keys/ and Hephaestus/.env
2026-08-14 23:17:18 +02:00
< 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 >
2026-07-29 13:54:34 +02:00
< 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 >