Skip to content

sandwichfarm/nostr-watch

Repository files navigation

Ask DeepWiki

@nostrwatch

A TypeScript monorepo for monitoring, auditing, and describing Nostr relays. @nostrwatch is an OpenSats grant recipient.

Overview

nostr-watch provides the infrastructure for observing the Nostr relay network. It implements NIP-66 (Relay Monitoring System) to crawl relays, check their health, audit their capabilities, and publish structured results back to the Nostr network. The stack includes client-facing dashboards, long-running monitoring agents, and a library ecosystem that other projects can use independently.

Architecture

Packages are organized into three layers with a strict dependency direction:

internal  →  libraries  →  apps
  • internal/ — Infrastructure shared across the monorepo (logging, publishing, utilities)
  • libraries/ — Reusable packages that can be consumed independently
  • apps/ — Product applications (services, dashboards, CLI tools)

See the Architecture Overview for details on the adapter pattern and cross-package conventions.

Packages

Apps

Package Description Status Platform
@nostrwatch/gui NIP-66 Nostr relay dashboard alpha Web
@nostrwatch/relaymon Relay health monitor with NIP-66 event publishing alpha Node · Deno
@nostrwatch/trawler Relay data crawler for the nostr-watch network alpha Node · Deno
@nostrwatch/rstate NIP-66 relay intelligence state machine with REST and MCP endpoints alpha Node
@nostrwatch/purist Browser-based relay scanner alpha Web
@nostrwatch/umon Browser extension for monitoring Nostr activity alpha Web
@nostrwatch/docker-stacks Pre-configured Docker Compose stacks for nostr-watch services Docker
@nostrwatch/nocapd Relay monitoring daemon — replaced by relaymon deprecated

Libraries

Package Description Status Platform
@nostrwatch/nocap Extensible relay capability discovery framework alpha Web · Node
@nostrwatch/route66 NIP-66 relay aggregation and state management alpha Web · Node
@nostrwatch/auditor Relay validation against advertised NIP support alpha Web · Node
@nostrwatch/nostrings Relay URL sanitization and normalization alpha Isomorphic
@nostrwatch/relay-chronicle Chronicle relay history from NIP-66 delta events alpha Web · Node
@nostrwatch/relay-charts Chart adapters for relay data visualization alpha Web
@nostrwatch/memory-relay In-memory Nostr relay for testing and embedding alpha Web · Node
@nostrwatch/worker-relay Nostr relay running in a Service Worker alpha Web
@nostrwatch/websocket Isomorphic WebSocket wrapper alpha Web · Node · Deno
@nostrwatch/nocap-route66 Transform nocap output into NIP-66 Kind 30166 events alpha Web · Node
@nostrwatch/schemata-js-ajv AJV wrappers for Nostr JSON schema validation alpha Web · Node
@nostrwatch/negentropy-utils Negentropy set reconciliation utilities alpha Web · Node
@nostrwatch/kuma Uptime Kuma push monitor for Nostr relays alpha Node
@nostrwatch/db SQLite database layer alpha Node
nostrawl Continuous event retrieval from Nostr relays alpha Node
@nostrwatch/nip66 NIP-66 protocol reference documentation docs
@nostrwatch/schemata JSON schemas for Nostr protocol — moved to @nostrability/schemata deprecated
@nostrwatch/sanitize Relay URL sanitization — replaced by nostrings deprecated
@nostrwatch/idb IndexedDB wrapper — never implemented deprecated
@nostrwatch/kit Adapter toolkit — never completed deprecated
@nostrwatch/transform Data transformation library — never implemented deprecated

Internal

Package Description Status Platform
@nostrwatch/publisher Nostr event publishing with adapter pattern alpha Web · Node
@nostrwatch/announce NIP-66 monitor announcement event generation alpha Web · Node
@nostrwatch/logger Structured logging wrapper alpha Web · Node
@nostrwatch/utils Shared utilities (keys, arrays, env detection) alpha Web · Node
@nostrwatch/controlflow BullMQ queue management and backoff control alpha Node
@nostrwatch/seed Relay seeding from multiple discovery sources alpha Node
@nostrwatch/redis BullMQ/Redis dashboard server alpha Node
@nostrwatch/kinds Nostr event kind constants (placeholder) alpha
@nostrwatch/nwcache LMDB caching layer — caching inlined into consumers deprecated

Getting Started

Prerequisites: Node.js >= 20, pnpm >= 8, Git. Optional: Deno >= 1.4 (for trawler/relaymon), Docker (for docker-stacks).

git clone https://github.com/sandwichfarm/nostr-watch.git
cd nostr-watch
pnpm install
pnpm build

See the Getting Started guide for common workflows and development commands.

Documentation

The documentation site lives in docs/ and is built with VitePress.

pnpm docs:dev    # Start dev server at localhost:5173

Contributing

@nostrwatch is not yet open to external contributions. Contribution guidelines and issue templates are being established. Watch this repo for updates.

License

MIT — Sandwich Farm LLC

Packages

 
 
 

Contributors