Skip to Content

The Nostr protocol, natively in Zig

A native Nostr ecosystem in Zig, a foundational protocol library, utility libraries built on it, and fast native apps that keep your keys on hardware you control.

0.28 ms
500-note feed query @ 100k events
149k/s
event ingest
19/19
BIP-340 test vectors

One core, many surfaces

📦

Core library

The foundation, keys, events, transport, the outbox model, and a local-first store. It builds on macOS, Linux and Windows, and it is actively growing toward full Nostr coverage, milestone after milestone.

🧩

Utility libraries

Focused building blocks layered on the core, so every app shares one audited, well-tested base instead of reinventing crypto and storage.

🖥️

Native apps

Notary, Plaza and deed ship today: a remote signer, a local-first client and a command line, each one you can download and use. Real products, all on one core.

What the core gives you

🔑

Credible crypto core

secp256k1 keys and BIP-340 Schnorr signatures via bitcoin-core’s libsecp256k1, passing the full official test-vector suite.

⚡

Local-first store

A zero-copy, memory-mapped LMDB event store with a bounded, newest-first query planner, sub-millisecond feeds that stay flat as the store grows.

🛡️

Native remote signer

Notary is a NIP-46 bunker that signs for any client while your nsec never leaves the daemon unless you ask for it. A downloadable app for macOS and Linux.

🧭

Outbox model

NIP-65 relay lists with read/write routing and zero hardcoded relays, events go where they belong.

🔒

Encrypted payloads

NIP-44 v2 authenticated encryption (ChaCha20 + HMAC-SHA256), verified against the official vectors, the basis for private messaging.

🔐

Portable keys

NIP-06 mnemonic derivation and NIP-49 ncryptsec encryption at rest, NFKC-normalized for cross-app interop.

Native apps

Notary

Shipped

A native NIP-46 signer for macOS and Linux: Zig, no Electron. Your nsec stays in a local daemon, and nothing gets signed quietly. On macOS it waits in the menu bar until a request needs you.

Learn more →

Plaza

Shipped

A fast, local-first client: read without an account, post in four clicks, with the feed rendered from disk. It reads long-form articles, finds people by name and adds pictures from a file. A downloadable app for macOS and Linux.

Learn more →

deed

Shipped

The nostr command line: sign, verify, encode, encrypt, query relays and publish, with a local store that answers without a network. One small binary for macOS, Linux and Windows.

Learn more →

What comes next, and what is deliberately not being built, is on the roadmap.

Install the core

Add the library to your Zig project:

zig fetch --save https://github.com/zig-nostr/nostr/archive/refs/tags/v0.14.9.tar.gz
const nostr = b.dependency("nostr", .{ .target = target, .optimize = optimize }); your_module.addImport("nostr", nostr.module("nostr"));

zig-nostr is early and MIT-licensed: a library, plus two native apps you can download today, all on one core. Explore the docs →