bivvydocs
Developers / Nostr identity
BIVVY DOCS

A familiar face.
Everywhere.

Give users a NIP-07 provider without installing an extension.

Get the public key

JavaScript
const pubkey = await window.nostr.getPublicKey();
// Lowercase 32-byte hex public key.

Sign an event

JavaScript
const event = await window.nostr.signEvent({
  kind: 1,
  created_at: Math.floor(Date.now() / 1000),
  tags: [],
  content: "hello, open internet ☀️"
});
// Publish the signed event to your chosen relays.

The user sees the event content, kind, and tags before approving with their passkey. Signing does not publish the event.

Private messages

JavaScript
const ciphertext = await window.nostr.nip44.encrypt(pubkey, "hello!");
const plaintext = await window.nostr.nip44.decrypt(pubkey, ciphertext);
// Legacy NIP-04 encrypt/decrypt is also available.
// Prefer NIP-44 for new implementations.

One global identity

The root mnemonic derives the Nostr key at the standard NIP-06 path m/44\'/1237\'/0\'/0/0. This identity is shared across origins, so sites can recognize the same user.

A name that feels like you

Users can claim name@bivvy.me in the wallet after completing a small proof of work. The same name supports NIP-05 verification and Lightning payments. Names are public and unique; registration needs an unlocked wallet and a fresh passkey approval.

Existing extensions

The one-line script leaves an existing window.nostr untouched. Use bivvy.nostr to explicitly target Bivvy when another provider is present.

See the NIP-07 specification and NIP-06 derivation standard.

Made to be understood. Built to be yours.View the source