Getting Started
Pick the path that matches what you want to do.
Choose Your Path
Use Nmail, the reference client, or build your own app with an SDK.
Deploy a bridge to connect legacy email with Nostr.
Read the protocol specification to learn how it works.
For End Users
-
Open the web app, or install it from ZapStore or the releases page.
-
Generate a key, or sign in with a signer you already use.
-
Back up your key, then start writing.
Your address is <npub>@nostr out of the box. A readable address like
alice@example.com comes from a NIP-05 provider, and is also what lets people
on ordinary email reach you.
For Developers
Dart and Flutter
dart pub add nostr_mail
final client = await NostrMailClient.create(
ndk: ndk,
database: database,
db: db,
blossomCache: blossomCache,
syncEngine: syncEngine,
);
await client.send(
to: [NostrRecipient.fromPubkey(bobPubkey)],
subject: 'Hello from Nostr!',
body: 'This email was sent over the Nostr protocol.',
);
client.onEmail.listen((email) {
print('New email: ${email.mime.decodeSubject()}');
});
JavaScript and TypeScript
npm install nostr-mail
const client = new NostrMailClient(secretKey);
await client.sendEmail({
to: 'npub1...',
subject: 'Hello from Nostr',
text: 'Hey! This is a private email sent over Nostr.',
});
For Bridge Operators
Prerequisites
- A server with Docker, or Node.js and Dart
- A domain with MX records configured
- A Nostr private key for the bridge
Quick Start with Docker
git clone https://github.com/nogringo/nostr-mail-bridge
cd nostr-mail-bridge
cp .env.example .env
# Edit .env with your configuration
docker compose up -d
Email Address Formats
Note
The npub@nostr format is not routable by legacy email servers. Use it only for
Nostr-to-Nostr communication.