Skip to content

Commit 3698fc7

Browse files
vveerrggclaude
andcommitted
docs: add TODO for NIP-46 nsecBunker UX with NostrKeep relay
Settings panel and signing approval UX reference for remote signing via wss://relay.nostrkeep.app. Users never share their nsec. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent f8484d9 commit 3698fc7

1 file changed

Lines changed: 85 additions & 0 deletions

File tree

TODO.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# NostrKey Browser Plugin TODO
2+
3+
## NIP-46 nsecBunker UX — Remote Signing via NostrKeep Relay
4+
5+
**Status:** Planned
6+
**Depends on:** `relay.nostrkeep.app` deployment (`nostrkeep.srvr.relay.src` Phase 1 complete)
7+
**Related:** `nostrkeep.bizdocs.src` TODO (business model + relay details)
8+
9+
### Summary
10+
11+
Add a Remote Signing (nsecBunker) settings panel to NostrKey. Default bunker relay is `wss://relay.nostrkeep.app` (free, provided by NostrKeep). Users can override with their own relay URL. The nsec never leaves the device — NostrKeep only carries encrypted NIP-46 messages.
12+
13+
### UX Reference
14+
15+
#### Settings Panel
16+
17+
```
18+
┌─────────────────────────────────────────────┐
19+
│ Remote Signing (nsecBunker) │
20+
│ │
21+
│ ✅ Enable remote signing │
22+
│ │
23+
│ Bunker relay: │
24+
│ ┌─────────────────────────────────────┐ │
25+
│ │ wss://relay.nostrkeep.app │ │
26+
│ └─────────────────────────────────────┘ │
27+
│ Free relay provided by NostrKeep. │
28+
│ Or enter your own relay URL. │
29+
│ │
30+
│ Your bunker address: │
31+
│ ┌─────────────────────────────────────┐ │
32+
│ │ bunker://5189fd3b...?relay=wss:// │ │
33+
│ │ relay.nostrkeep.app │ │
34+
│ └─────────────────────────────────────┘ │
35+
│ [Copy] [QR Code] │
36+
│ │
37+
│ Paste this into any Nostr client that │
38+
│ supports NIP-46 login. Your private key │
39+
│ stays on this device. │
40+
└─────────────────────────────────────────────┘
41+
```
42+
43+
#### Signing Request Approval
44+
45+
```
46+
┌─────────────────────────────────────────────┐
47+
│ 🔔 Signing Request │
48+
│ │
49+
│ Primal wants to sign: │
50+
│ Kind 1 (note) │
51+
│ "Just posted from Primal using my..." │
52+
│ │
53+
│ [Approve] [Approve All Kind 1] [Deny] │
54+
└─────────────────────────────────────────────┘
55+
```
56+
57+
### Key Design Decisions
58+
59+
- **NostrKey is the bunker** (holds key, signs) — **NostrKeep is the relay** (carries messages)
60+
- NIP-46 messages are NIP-44 encrypted end-to-end — relay cannot read them
61+
- Default relay: `wss://relay.nostrkeep.app` (free, ephemeral events cost ~nothing)
62+
- Editable text field for users who want their own relay
63+
- Bunker address auto-generated from active profile pubkey + relay URL
64+
- Copy button + QR code for easy sharing
65+
- Signing approval with per-kind "always allow" option
66+
67+
### Implementation Notes
68+
69+
- NIP-46 uses kind 24133 (ephemeral range) — relay already bypasses allowlist for these
70+
- Bunker connection string format: `bunker://<pubkey>?relay=<relay-url>`
71+
- Subscribe to kind 24133 events addressed to active profile pubkey
72+
- Decrypt requests with NIP-44, sign requested events, encrypt + publish response
73+
- Extension already has NIP-46 support — this adds the UX layer + NostrKeep default relay
74+
75+
### Tasks
76+
77+
- [ ] Add "Remote Signing" section to settings page
78+
- [ ] Bunker relay URL field with `wss://relay.nostrkeep.app` default
79+
- [ ] Auto-generate bunker address from active profile + relay URL
80+
- [ ] Copy-to-clipboard + QR code for bunker address
81+
- [ ] Signing request notification/approval UI
82+
- [ ] Per-kind "always allow" permission management
83+
- [ ] Connect to bunker relay WebSocket when remote signing is enabled
84+
- [ ] Handle NIP-46 request/response lifecycle (decrypt → sign → encrypt → publish)
85+
- [ ] Mirror UX to iOS and Android apps

0 commit comments

Comments
 (0)