Remote signing on Nostr (NIP-46) in plain words
Keep your nsec in one signer: how bunker:// and nostrconnect:// work, signers to use, limits, checklist.
Remote signing on Nostr (NIP-46) in plain words
If you paste your nsec into every new client you try, each one of them can sign anything as you, forever. NIP-46 (“Nostr Connect”) fixes that: your key stays in one place (the signer, sometimes called a bunker), and clients ask it to sign over Nostr relays.
How it works
- The client and the signer agree on a relay and a temporary keypair for the session.
- When the client wants to post, it sends an encrypted request (event kind 24133) to the signer through that relay: “please sign this event”.
- The signer checks its permissions (or asks you), signs, and sends the signed event back the same way.
- The client publishes it. Your nsec never left the signer.
Requests include get_public_key, sign_event, encrypt/decrypt (NIP-04 and NIP-44, so DMs work) and ping.
Two ways to connect
- bunker:// URI (signer goes first): your signer shows a string like
bunker://<signer-pubkey>?relay=wss://...&secret=.... You paste it into the client’s “login with bunker / remote signer” field. - nostrconnect:// URI (client goes first): the client shows a QR code or link. You scan or open it in your signer and approve.
Treat both strings like a temporary password. Anyone holding a fresh bunker:// secret can request a session.
Signers you can use
- Amber (Android): keeps the key on the phone. It supports NIP-46 and also NIP-55, which lets Android apps call it directly without relays.
- nsec.app and other web/self-hosted bunkers: hold the key and answer requests from any device.
- Browser extensions (nos2x, Alby and others, NIP-07) are a different method: they sign inside the browser, not over relays. Good on desktop; NIP-46 is what lets you log in on a device or web app without copying the key there.
Why it matters
- Trying clients is safe. Revoke a client’s session in the signer instead of rotating your whole identity.
- Per-app permissions. Many signers let you allow “kind 1 notes” but ask before “kind 0 profile” or “kind 3 follow list” changes, so a buggy client can’t wipe your follows.
- Scheduling. Some schedulers use NIP-46 so they can sign at posting time. Others ask you to pre-sign the event now and hold it. Either way, you never hand over the nsec.
Limits to know
- The signer has to be reachable. If the relay in the URI is down or your phone is asleep, signing stalls. Pick a reliable relay, or a signer that lists more than one.
- Every action is a round trip, so it can feel slower than a local key.
- The signer is now your single point of trust. Back up the nsec offline once, then keep it only in the signer.
Quick checklist
- [ ] Key lives in one signer (Amber, a bunker, or an extension), not in every client
- [ ] Clients connected via bunker:// or nostrconnect://
- [ ] Sensitive kinds (0, 3, 10002) set to “ask me”
- [ ] Old sessions revoked when you drop a client
- [ ] Offline backup of the nsec exists
Questions? Reply and I’ll add answers here. Zaps keep these guides coming.
Write a comment