A browser extension bridging NIP-07 to NIP-46. Let's you connect to NIP-07 only sites with NIP-46.
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Website │────▶│ Extension │────▶│ Relay │────▶│ Amber │
│ (NIP-07) │◀────│ (NIP-46) │◀────│ │◀────│ (Phone) │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
- Website calls
window.nostr.getPublicKey()orwindow.nostr.signEvent() - Extension detects the site and checks for an existing connection
- If no connection exists, a QR code popup is shown for Amber
- Amber signs on your phone
- Extension returns the result to the website
- ⚡ No keys in browser - Your nsec stays on your phone
- 🔒 Per-site connections - Each website gets its own Amber session
- 📱 Amber integration - Works with the Amber Android app
- 🌐 NIP-07 compatible - Works with any NIP-07 website
- 🎯 Site management - View and remove connected sites from the popup
This extension creates a separate NIP-46 session for each website (host).
This means:
- Each site appears as a separate connection in Amber
- You can revoke access to individual sites
- Sites cannot share signing sessions
- The popup shows all connected sites with their pubkeys
| Method | Status |
|---|---|
getPublicKey() |
✅ Supported |
signEvent(event) |
✅ Supported |
getRelays() |
|
nip04.encrypt/decrypt |
❌ Not supported |
nip44.encrypt/decrypt |
❌ Not supported |
- Visit any NIP-07 website (e.g., Snort, Coracle, Nostrudel)
- The site calls
getPublicKey()or attempts to sign - A QR code popup automatically appears
- Scan the QR code with Amber on your phone
- Approve the connection in Amber
- You're connected! The site now has access.
- Click the extension icon to open the popup
- See all connected sites with their pubkeys
- Click Remove to disconnect a site
- The site will need to reconnect next time
If you remove a site or it expires:
- The next signing request from that site triggers a new QR code
- Scan with Amber to reconnect
- When a site first requests signing, extension generates a unique keypair
- A nostrconnect:// QR code is shown to the user
- User scans with Amber, creating a dedicated connection for that site
- Each site has its own ephemeral keypair and relay subscriptions
- Sessions are persisted to storage and restored on extension load
- Private keys never touch the browser
- Each site gets a unique ephemeral keypair
- Sessions are isolated per-origin (host)
- Connection can be revoked from extension popup or Amber
- No shared state between sites