Skip to content

Commit 7fe12e3

Browse files
vveerrggclaude
andcommitted
docs: update README with ecosystem context and cleaner structure
Add Humanjava ecosystem section showing how NostrKey connects to npub.bio and NostrKeep. Reorganize features into shipped/planned. Add related repositories table, tech stack, and tighten copy. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 3698fc7 commit 7fe12e3

1 file changed

Lines changed: 111 additions & 85 deletions

File tree

README.md

Lines changed: 111 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,32 @@
33
> Cross-browser Nostr key management, encrypted document vault, and identity layer.
44
> Forked from [ursuscamp/nostore](https://github.com/ursuscamp/nostore) (archived Feb 2025).
55
>
6-
> **Website:** [nostrkey.com](https://nostrkey.com) · **Current release:** [v1.5.5](https://github.com/HumanjavaEnterprises/nostrkey.browser.plugin.src/releases/tag/v1.5.5)
6+
> **Website:** [nostrkey.com](https://nostrkey.com) · **Current release:** [v1.5.5](https://github.com/HumanjavaEnterprises/nostrkey.browser.plugin.src/releases/tag/v1.5.5) · **License:** MIT
77
88
> **NostrKey and Humanjava Enterprises Inc. do not have a cryptocurrency, token, or coin. Nor will there be one.** If anyone suggests or sells a cryptocurrency associated with this project, they are acting fraudulently. [Report scams](https://github.com/HumanjavaEnterprises/nostrkey.browser.plugin.src/issues).
99
1010
## What It Does
1111

12+
NostrKey is a free, open-source browser extension that manages your Nostr private keys so they never touch the websites you use. It signs events, encrypts messages, and stores documents — all client-side.
13+
1214
- **NIP-07 signing**`window.nostr` API for any Nostr web app (Chrome + Safari)
1315
- **NIP-46 nsecBunker** — remote signing, your private key never touches the browser
1416
- **NIP-44 encryption** — modern ChaCha20-Poly1305 (replaces deprecated NIP-04)
1517
- **Zero-knowledge .md vault** — encrypted documents stored on Nostr relays, unreadable by relay operators
16-
- **API key vault** — encrypted secret storage
18+
- **API key vault** — encrypted secret storage, relay-synced
1719
- **Cross-device sync** — profiles, vault, and settings sync via Google account (Chrome) or iCloud (Safari 16+)
18-
- **Master password** — keys encrypted at rest with configurable auto-lock
19-
- **P2P document sharing** — send encrypted files to chat rooms with temporary access (planned)
20-
- **Login with Nostr** — NIP-42 authentication for web apps (planned)
20+
- **Master password** — keys encrypted at rest with configurable auto-lock (5/15/30/60 min or never)
21+
- **NIP-49 export/import** — ncryptsec encrypted key backup and restore
22+
- **Multi-profile** — manage multiple Nostr identities with per-site permissions
23+
24+
## Get NostrKey
25+
26+
| Platform | Install | Status |
27+
|----------|---------|--------|
28+
| **Chrome / Brave / Edge** | [Chrome Web Store](https://chromewebstore.google.com/detail/nostrkey/cggakcmbihnpmcddkkfmoglgaocnmaop) | Live |
29+
| **Android** | [Google Play](https://play.google.com/store/apps/details?id=com.nostrkey.app) | Live |
30+
| **Safari (macOS + iOS)** | App Store | Submission in progress |
31+
| **iOS** | App Store | Submission in progress |
2132

2233
## Architecture
2334

@@ -36,91 +47,99 @@
3647

3748
Documents are encrypted client-side before publishing. Relays store ciphertext. Only your key can decrypt.
3849

39-
## Status
40-
41-
See [docs_project_info/PROJECT-VISION.md](docs_project_info/PROJECT-VISION.md) for the full roadmap.
42-
43-
### Working
44-
- [x] NIP-07 `window.nostr` (getPublicKey, signEvent)
45-
- [x] NIP-04 encrypt/decrypt (deprecated, kept for compat)
46-
- [x] NIP-19 bech32 key encoding
47-
- [x] Multi-profile management
48-
- [x] Per-site permissions (allow/deny/ask)
49-
- [x] Event history + audit log
50-
- [x] Safari extension (iOS + macOS)
51-
- [x] Chrome extension (Manifest V3)
52-
- [x] NIP-44 encryption (ChaCha20-Poly1305)
53-
- [x] NIP-46 nsecBunker client (remote signing)
54-
- [x] Encrypted .md vault (NIP-78)
55-
- [x] API key vault (encrypted, relay-synced)
56-
- [x] Master password (keys encrypted at rest, auto-lock)
57-
- [x] Profile read-only view with npub/nsec display
58-
- [x] QR code generation for npub (with Copy as PNG)
59-
- [x] Modern permission page styling
60-
- [x] Options pages open in same tab (no tab clutter)
61-
- [x] Close buttons on all options pages
62-
- [x] Standalone security settings page (master password + auto-lock)
63-
- [x] Configurable auto-lock timeout (5/15/30/60 min or never)
64-
- [x] Alpine.js removed — all UI is vanilla JS (smaller bundles, no framework dep)
65-
- [x] WCAG AA accessibility (contrast, focus, ARIA, reduced motion, semantic HTML)
66-
- [x] Vault detection & restore after extension reload (three-tier: flag check → deep scan → manual)
67-
- [x] Chrome MV3 message passing fix (all handlers use sendResponse callback pattern)
68-
- [x] Cross-device sync via storage.sync (Google/iCloud, chunked, priority-based budget)
69-
- [x] NIP-49 encrypted key export/import (ncryptsec)
70-
- [x] Manage Nostr Keys page (master-detail view, export JSON, import nsec/JSON)
71-
- [x] Settings page: accordion sections grouped by App / Profile / General
72-
- [x] Material-style toggle switches for relay read/write (replacing checkboxes)
73-
- [x] Security page: accordion layout with hash-based deep linking
74-
- [x] profileScope field on vault docs and API keys (prep for per-profile scoping)
50+
## The Humanjava Ecosystem
7551

76-
### Planned
77-
- [ ] Encrypted cloud backup (iCloud/Google Drive snapshots with periodic reminders)
78-
- [ ] Firefox extension (manifest + sidebar_action or popup fallback)
79-
- [ ] P2P room sharing (NIP-59 gift wrap)
80-
- [ ] PWA at nostrkey.app
81-
- [ ] Login with Nostr auth flow
82-
- [ ] EN/FR/ES localization
83-
- [ ] Bottom sheet permission UI (overlay instead of new tab)
84-
- [ ] App Group + Keychain sharing for iOS native app integration
85-
- [ ] Enhanced Vault integration with file attachments
86-
- [ ] API key auto-fill for supported services
87-
- [ ] Multiple relay sets per profile
52+
NostrKey is the key management layer for the Humanjava product stack. It connects to everything else.
8853

89-
## NIPs Implemented
90-
91-
| NIP | Feature | Status |
92-
|-----|---------|--------|
93-
| [NIP-01](https://github.com/nostr-protocol/nips/blob/master/01.md) | Basic protocol ||
94-
| [NIP-04](https://github.com/nostr-protocol/nips/blob/master/04.md) | Encrypted DMs v1 | ✅ (deprecated) |
95-
| [NIP-07](https://github.com/nostr-protocol/nips/blob/master/07.md) | Browser extension ||
96-
| [NIP-19](https://github.com/nostr-protocol/nips/blob/master/19.md) | Bech32 encoding ||
97-
| [NIP-42](https://github.com/nostr-protocol/nips/blob/master/42.md) | Client auth | 🔧 Planned |
98-
| [NIP-44](https://github.com/nostr-protocol/nips/blob/master/44.md) | Encrypted messaging v2 ||
99-
| [NIP-46](https://github.com/nostr-protocol/nips/blob/master/46.md) | Nostr Connect (bunker) ||
100-
| [NIP-49](https://github.com/nostr-protocol/nips/blob/master/49.md) | Encrypted key export ||
101-
| [NIP-59](https://github.com/nostr-protocol/nips/blob/master/59.md) | Gift wrap | 🔧 Planned |
102-
| [NIP-78](https://github.com/nostr-protocol/nips/blob/master/78.md) | App-specific data ||
54+
```
55+
npub.bio ($7/year) Sovereign identity (NIP-05, Lightning, bunker)
56+
│ Uses NostrKey for NIP-07 connect
57+
58+
NostrKeep ($5-7/month) Private relay + Blossom media server
59+
│ NostrKey points your keys at your relay
60+
61+
NostrKey (free) ◀── You are here
62+
│ Key management, signing, vault
63+
64+
Lx7 / Vaiku LLM.being infrastructure
65+
```
10366

104-
## Get NostrKey
67+
| Product | What it does | URL |
68+
|---------|-------------|-----|
69+
| **NostrKey** | Key management browser extension (NIP-07, NIP-46, vault) | [nostrkey.com](https://nostrkey.com) |
70+
| **npub.bio** | Sovereign Nostr identity — NIP-05, Lightning address, profile pages | [npub.bio](https://npub.bio) |
71+
| **NostrKeep** | Private Nostr relay + Blossom media server (subscription) | [nostrkeep.com](https://nostrkeep.com) |
10572

106-
| Platform | Install | Description |
107-
|----------|---------|-------------|
108-
| **Chrome / Brave / Edge** | [Chrome Web Store](https://chromewebstore.google.com/detail/nostrkey/cggakcmbihnpmcddkkfmoglgaocnmaop) | Browser extension — NIP-07 signing, vault, NIP-46/44/49 |
109-
| **Safari** | Coming soon | Safari extension (macOS + iOS) — App Store submission in progress |
110-
| **Android** | [Google Play](https://play.google.com/store/apps/details?id=com.nostrkey.app) | Standalone app with full extension UI |
111-
| **iOS** | Coming soon | Standalone app — App Store submission in progress |
73+
### How They Work Together
11274

113-
More info coming soon.
75+
1. **NostrKey** manages your private keys in the browser
76+
2. **npub.bio** gives you a human-readable identity (`alice@npub.bio`) — verified via NIP-07 connect through NostrKey
77+
3. **NostrKeep** gives you a private relay — NostrKey points your signing at your own infrastructure
78+
4. Your data lives on your relay, your identity resolves through npub.bio, your keys never leave NostrKey
11479

115-
## Install
80+
## NIPs Implemented
11681

117-
### From GitHub Releases (sideload)
118-
1. Download the latest zip from [Releases](https://github.com/HumanjavaEnterprises/nostrkey.browser.plugin.src/releases)
119-
2. **Chrome:** Unzip → `chrome://extensions/` → Developer mode → Load unpacked → select the folder
120-
3. **Safari:** Build from source (see below)
82+
| NIP | Feature | Status |
83+
|-----|---------|--------|
84+
| [NIP-01](https://github.com/nostr-protocol/nips/blob/master/01.md) | Basic protocol | Done |
85+
| [NIP-04](https://github.com/nostr-protocol/nips/blob/master/04.md) | Encrypted DMs v1 | Done (deprecated, kept for compat) |
86+
| [NIP-07](https://github.com/nostr-protocol/nips/blob/master/07.md) | Browser extension API | Done |
87+
| [NIP-19](https://github.com/nostr-protocol/nips/blob/master/19.md) | Bech32 encoding | Done |
88+
| [NIP-42](https://github.com/nostr-protocol/nips/blob/master/42.md) | Client auth | Planned |
89+
| [NIP-44](https://github.com/nostr-protocol/nips/blob/master/44.md) | Encrypted messaging v2 | Done |
90+
| [NIP-46](https://github.com/nostr-protocol/nips/blob/master/46.md) | Nostr Connect (bunker) | Done |
91+
| [NIP-49](https://github.com/nostr-protocol/nips/blob/master/49.md) | Encrypted key export | Done |
92+
| [NIP-59](https://github.com/nostr-protocol/nips/blob/master/59.md) | Gift wrap | Planned |
93+
| [NIP-78](https://github.com/nostr-protocol/nips/blob/master/78.md) | App-specific data | Done |
94+
95+
## Feature Status
96+
97+
### Shipped
98+
- NIP-07 `window.nostr` (getPublicKey, signEvent)
99+
- NIP-04 encrypt/decrypt (deprecated, kept for compat)
100+
- NIP-19 bech32 key encoding
101+
- NIP-44 encryption (ChaCha20-Poly1305)
102+
- NIP-46 nsecBunker client (remote signing)
103+
- NIP-49 encrypted key export/import (ncryptsec)
104+
- Encrypted .md vault (NIP-78)
105+
- API key vault (encrypted, relay-synced)
106+
- Multi-profile management with per-site permissions
107+
- Master password with configurable auto-lock
108+
- Event history + audit log
109+
- Cross-device sync via storage.sync (Google/iCloud, chunked, priority-based budget)
110+
- Profile read-only view with npub/nsec display
111+
- QR code generation for npub (with Copy as PNG)
112+
- Manage Nostr Keys page (master-detail, export JSON, import nsec/JSON)
113+
- Settings page: accordion sections grouped by App / Profile / General
114+
- Security page: accordion layout with hash-based deep linking
115+
- Material-style toggle switches for relay read/write
116+
- Vault detection & restore after extension reload (three-tier: flag check → deep scan → manual)
117+
- Chrome MV3 message passing fix (sendResponse callback pattern)
118+
- WCAG AA accessibility (contrast, focus, ARIA, reduced motion, semantic HTML)
119+
- Alpine.js removed — all UI is vanilla JS
121120

122-
### Apple App Store (Safari for macOS & iOS)
123-
Coming soon — submission in progress. See [docs_project_info/APPLE-APP-STORE-SUBMISSION.md](docs_project_info/APPLE-APP-STORE-SUBMISSION.md) for details.
121+
### Planned
122+
- Encrypted cloud backup (iCloud/Google Drive snapshots)
123+
- Firefox extension
124+
- P2P room sharing (NIP-59 gift wrap)
125+
- PWA at nostrkey.app
126+
- Login with Nostr auth flow
127+
- EN/FR/ES localization
128+
- Bottom sheet permission UI (overlay instead of new tab)
129+
- App Group + Keychain sharing for iOS native app integration
130+
- Enhanced Vault with file attachments
131+
- API key auto-fill for supported services
132+
- Multiple relay sets per profile
133+
134+
## Related Repositories
135+
136+
| Repo | What | Status |
137+
|------|------|--------|
138+
| [nostrkey.browser.plugin.src](https://github.com/HumanjavaEnterprises/nostrkey.browser.plugin.src) | Browser extension (this repo) | v1.5.5 |
139+
| [nostrkey.app.android.src](https://github.com/HumanjavaEnterprises/nostrkey.app.android.src) | Android app (WebView wrapper) | v1.1.1 |
140+
| [nostrkey.app.ios.src](https://github.com/HumanjavaEnterprises/nostrkey.app.ios.src) | iOS app (WKWebView wrapper) | v1.1.1 |
141+
142+
Mobile apps use dual-WebView architectures (background + UI) with platform-specific bridges (`AndroidBridge.kt` / `IOSBridge.swift`) to translate Chrome extension APIs into native functionality.
124143

125144
## Development
126145

@@ -161,18 +180,25 @@ See [docs_project_info/CHROME-DEV.md](docs_project_info/CHROME-DEV.md) for full
161180
4. Enable unsigned extensions: Safari → Settings → Advanced → Show Develop menu
162181
5. Develop → Allow Unsigned Extensions → enable NostrKey
163182

183+
### Tech Stack
184+
- Vanilla JS (no framework — Alpine.js was removed)
185+
- esbuild bundler
186+
- Tailwind CSS
187+
- nostr-crypto-utils for protocol operations
188+
- Chrome Manifest V3
189+
164190
## Privacy
165191

166-
This extension does not collect any user data or transmit any data over a network connection except to Nostr relays you explicitly configure. All private key data is encrypted and stored locally. When using nsecBunker mode, no private key material is stored in the extension at all.
192+
NostrKey does not collect any user data or transmit any data over a network connection except to Nostr relays you explicitly configure. All private key data is encrypted and stored locally. When using nsecBunker mode, no private key material is stored in the extension at all.
167193

168194
## Acknowledgements
169195

170196
- [ursuscamp](https://github.com/ursuscamp) — Original Nostore extension
171197
- [fiatjaf](https://github.com/fiatjaf) — nostr-tools, nos2x, and Nostr itself
172198
- [nostr-crypto-utils](https://github.com/HumanjavaEnterprises/nostr-crypto-utils) — Crypto foundation
173-
- [nostrkey.app.android.src](https://github.com/HumanjavaEnterprises/nostrkey.app.android.src) — NostrKey Android app
174-
- [nostrkey.app.ios.src](https://github.com/HumanjavaEnterprises/nostrkey.app.ios.src) — NostrKey iOS app
175199

176200
## License
177201

178202
MIT — see [LICENSE](LICENSE)
203+
204+
A product by [Humanjava Enterprises Inc](https://humanjava.com) · British Columbia, Canada

0 commit comments

Comments
 (0)