Skip to content

Commit 00164e6

Browse files
committed
docs: expand Direct Login section — local bunker, remote bunker, dependency chain
Full three-subsection breakdown on both landing page and README: local bunker (peer-to-peer, no relay), remote bunker (your relay, no discovery), and the dependency chain NSE eliminates.
1 parent e6f2347 commit 00164e6

2 files changed

Lines changed: 40 additions & 10 deletions

File tree

README.md

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,9 @@ Products like [NostrKey](https://nostrkey.com) use NSE to protect keys in the br
9898

9999
## Direct Login — No Relay Required
100100

101-
Traditional NIP-46 bunker logins require both sides to connect through a Nostr relay for discovery and message passing. NSE changes that. When the signer is **local** — built into a browser extension or the app itself — signing is a direct, peer-to-peer operation. No relay lookup, no network round-trip, no discovery protocol.
101+
### Local bunker (no relay needed at all)
102+
103+
This is the big one. When NSE is built into the product — say NostrKey browser extension — the signer and the app are on the same device. A web app calls `window.nostr.signEvent()` (NIP-07), the extension uses NSE to decrypt the key, signs, returns. No relay round-trip, no discovery, no latency. The NIP-46 contract is the API shape, but the transport is local — `chrome.runtime` messaging, App Groups on iOS, etc.
102104

103105
Think of it like an **SSH key**. The key lives on your device. When a site asks you to prove your identity, the extension decrypts and signs locally. The Nostr network isn't involved in the authentication — only in what you do after.
104106

@@ -112,7 +114,19 @@ NSE direct login:
112114
(peer-to-peer, instant, works offline)
113115
```
114116

115-
For **cross-device** signing (phone as bunker for desktop), you still need a relay — but it can be **your own** relay with a known address. No public relay discovery, no hoping a third-party relay stays online. The connection is direct and deterministic, like pointing SSH at a specific host.
117+
### Remote bunker (your relay, no lookup)
118+
119+
When the phone acts as bunker for the desktop (NostrKeep Signer signing for a web app), you still need a relay — but it's **your** relay. `relay.nostrkeep.com` is already built and deployed. Both ends know where to connect because you control the product. No `bunker://` URI parsing, no public relay discovery, no hoping some random relay is online. NSE handles the key protection on the phone, the relay handles the transport.
120+
121+
### The dependency chain NSE eliminates
122+
123+
Before NSE:
124+
- You needed a third-party signer (nsecBunker, etc.)
125+
- Which needed a public relay both sides agreed on
126+
- Which needed relay discovery or manual `bunker://` URIs
127+
- And the key was stored in software anyway
128+
129+
Now the whole stack is yours: **NSE protects the key, NostrKey/NostrKeep is the signer, your relay is the transport.** Built in by design, not bolted on after.
116130

117131
## Repo Structure
118132

docs/index.html

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -414,11 +414,14 @@ <h2>NIP Integration</h2>
414414

415415
<section class="section">
416416
<h2>Direct Login — No Relay Required</h2>
417+
418+
<h3 style="font-size: 1.1rem; margin-bottom: 12px; color: var(--cyan);">Local bunker (no relay needed at all)</h3>
417419
<p>
418-
Traditional NIP-46 bunker logins require both sides to connect through a Nostr relay
419-
for discovery and message passing. NSE changes that. When the signer is <strong>local</strong>
420-
built into the browser extension or the app itself — signing is a direct, peer-to-peer
421-
operation. No relay lookup, no network round-trip, no discovery protocol.
420+
This is the big one. When NSE is built into the product — say a browser extension like
421+
<a href="https://nostrkey.com">NostrKey</a> — the signer and the app are on the same device.
422+
A web app calls <code>window.nostr.signEvent()</code> (NIP-07), the extension uses NSE to decrypt
423+
the key, signs, returns. No relay round-trip, no discovery, no latency. The NIP-46 contract is
424+
the API shape, but the transport is local — <code>chrome.runtime</code> messaging, App Groups on iOS, etc.
422425
</p>
423426
<p>
424427
Think of it like an <strong>SSH key</strong>. The key lives on your device. When a site asks you to
@@ -434,11 +437,24 @@ <h2>Direct Login — No Relay Required</h2>
434437
App → extension/local signer → App
435438
(peer-to-peer, instant, works offline)</div>
436439

440+
<h3 style="font-size: 1.1rem; margin: 24px 0 12px; color: var(--cyan);">Remote bunker (your relay, no lookup)</h3>
441+
<p>
442+
When the phone acts as bunker for the desktop (NostrKeep Signer signing for a web app),
443+
you still need a relay — but it's <strong>your</strong> relay. <code>relay.nostrkeep.com</code>
444+
is already built and deployed. Both ends know where to connect because you control the product.
445+
No <code>bunker://</code> URI parsing, no public relay discovery, no hoping some random relay is online.
446+
NSE handles the key protection on the phone, the relay handles the transport.
447+
</p>
448+
449+
<h3 style="font-size: 1.1rem; margin: 24px 0 12px; color: var(--cyan);">The dependency chain NSE eliminates</h3>
450+
<p>
451+
<strong>Before NSE:</strong> You needed a third-party signer (nsecBunker, etc.), which needed a
452+
public relay both sides agreed on, which needed relay discovery or manual <code>bunker://</code> URIs —
453+
and the key was stored in software anyway.
454+
</p>
437455
<p>
438-
For <strong>cross-device</strong> signing (phone as bunker for desktop), you still need a relay —
439-
but it can be <strong>your own</strong> relay with a known address. No public relay discovery,
440-
no hoping a third-party relay stays online. The connection is direct and deterministic,
441-
like pointing SSH at a specific host.
456+
<strong>Now the whole stack is yours:</strong> NSE protects the key, NostrKey/NostrKeep is the signer,
457+
your relay is the transport. Built in by design, not bolted on after.
442458
</p>
443459
</section>
444460

0 commit comments

Comments
 (0)