# 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.

[Get started](/getting-started)
[Explore the ecosystem](/ecosystem)

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](/notary), [Plaza](/plaza) and [deed](/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 →](/notary)

### 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 →](/plaza)

### 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 →](/deed)

What comes next, and what is deliberately not being built, is on the [roadmap](/roadmap).

## Install the core

Add the library to your Zig project:

```sh
zig fetch --save https://github.com/zig-nostr/nostr/archive/refs/tags/v0.14.9.tar.gz
```

```zig
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 →](/getting-started)
