Tracking interoperability across the nostr ecosystem.
nostrability.github.io/nostrability — NIP support tracker with per-app compatibility tables
- Positive interop stuff that works together (e.g. across mutually adopted NIP/kind)
- Negative interop where apps break when talking to each other (DMs, zaps, relay lists, etc.)
- Schema & schema validators validating nostr events against NIP/kind definitions using JSON Schema
- Schemata codegen similar to above but without need for json validators
- Sherlock Deducing which apps post broken stuff to relays
- Releases automated daily scanning of nostr repos for new releases
| Repo | Description |
|---|---|
| nostrability | Interoperability tracker. Includes NIP adoption tables, broken interop reports etc. |
| nostrability web dashboard | the above, rendered |
| schemata | Language-agnostic JSON schemas for nostr event validation |
| sherlock | deducing which apps post broken stuff |
| schemata-codegen | typed language constructs that enable the compiler to catch structural mistakes like wrong position, missing field, bad marker value |
Data packages embed the schemas; validator packages provide validate() helpers.
| Language | Data | Validator |
|---|---|---|
| Rust | schemata-rs | schemata-validator-rs |
| Kotlin | schemata-kt | schemata-validator-kt |
| Swift | schemata-swift | schemata-validator-swift |
| Go | schemata-go | schemata-validator-go |
| Dart | schemata-dart | schemata-validator-dart |
| Python | schemata-py | schemata-validator-py |
| Java | schemata-java | schemata-validator-java |
| PHP | schemata-php | schemata-validator-php |
| Ruby | schemata-ruby | schemata-validator-ruby |
| C | schemata-c | schemata-validator-c |
| C# | schemata-csharp | schemata-validator-csharp |
| C++ | schemata-cpp | schemata-validator-cpp |
- NIPs — Nostr Implementation Possibilities (protocol specs)
- NostrHub — Community NIP extensions and proposals
- Blossom — Blobs stored simply on mediaservers
- Marmot — Marmot protocol
- nostrapps.com — Directory of nostr applications