https://github.com/nostrability/nostrability
Left curve nostr broken stuff and interoperability tracker + json schema validation
https://github.com/nostrability/nostrability
blossom cashu interop interoperability left-curve lightning-network nostr nwc
Last synced: about 2 months ago
JSON representation
Left curve nostr broken stuff and interoperability tracker + json schema validation
- Host: GitHub
- URL: https://github.com/nostrability/nostrability
- Owner: nostrability
- License: mit
- Created: 2023-11-26T15:29:57.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2026-03-26T19:40:09.000Z (about 2 months ago)
- Last Synced: 2026-03-27T07:21:37.383Z (about 2 months ago)
- Topics: blossom, cashu, interop, interoperability, left-curve, lightning-network, nostr, nwc
- Language: HTML
- Homepage:
- Size: 487 KB
- Stars: 79
- Watchers: 12
- Forks: 0
- Open Issues: 244
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-nostr - nostrability - The practical documentation of how various nostr apps play together. (Other links / Client reviews and/or comparisons)
README
# nostrability
Nostr will have a shot at winning because of seamless interoperation between any combination of social media clients, and other stuff.

## What is nostrability
The practical documentation of how various [nostr](https://github.com/nostr-protocol) apps and relays play together.
Two or more nostr apps and/or relays must be involved to invoke a nostrability report.\
**Negative interoperability** documents the friction between two or more nostr apps interacting.\
**Positive interoperability** advocates that certain apps adopt certain NIPs/implementation approaches, so that apps appear compatible.
### Interactive tracker
Explore the full interoperability matrix at **[nostrability.github.io/nostrability](https://nostrability.github.io/nostrability/)** — an interactive dashboard with app-vs-NIP compatibility grids, search, filters, and status indicators.
## In meme form (negative interoperability)

memelord credit to [corndalorian](https://njump.me/nevent1qqsdwrlvkkhh8wcl05a7lu6w4h5kvfjc66kwst3gdezms8094cxqe7qzyruwd3jrgtc7q5jgqccwylsszmwwxh7r5c2wvpp5lm625fgrx2x2j24d7ly)
## How nostrability works
### Manual testing and crowdsourcing
Nostrability assesses the degree of friction of interoperability between nostr's many moving parts. We provide a simple crowdsourcing [template](https://github.com/nostrability/nostrability/issues) for documenting poor or lack of interoperability between nostr apps A and B, nostr app C and nostr relay D, and so on.
Devs are welcome to, and may find using nostrability useful as a platform to request comment from other devs on unvalidated concepts.
### Positive interoperability trackers
We maintain **85+ tracker issues** that monitor NIP adoption across nostr apps. Each tracker documents which apps support a given NIP and how well they interoperate. Examples:
- [DMs (NIP-17)](https://github.com/nostrability/nostrability/issues/169) — [Zaps (NIP-57)](https://github.com/nostrability/nostrability/issues/156) — [Long-form (NIP-23)](https://github.com/nostrability/nostrability/issues/97)
- [Relay list metadata (NIP-65)](https://github.com/nostrability/nostrability/issues/180) — [NWC (NIP-47)](https://github.com/nostrability/nostrability/issues/77) — [Lists (NIP-51)](https://github.com/nostrability/nostrability/issues/82)
- [Reactions (NIP-25)](https://github.com/nostrability/nostrability/issues/257) — [Highlights (NIP-84)](https://github.com/nostrability/nostrability/issues/61) — [AI/MCP on Nostr](https://github.com/nostrability/nostrability/issues/278)
Browse all: [positive-interop label](https://github.com/nostrability/nostrability/issues?q=label%3Apositive-interop)
### Event kind label taxonomy
Issues are systematically tagged with **78 `kind-XXXX` labels** (color-coded by event type) and **35+ `nip-XX` labels**, making it possible to find all interoperability issues related to a specific event kind or NIP at a glance.
| Color | Event type | Example |
|-------|-----------|---------|
| Orange | Regular kinds (0-9999) | `kind-1`, `kind-7`, `kind-9735` |
| Green | Replaceable kinds (10000-19999) | `kind-10002`, `kind-10019` |
| Teal | Parameterized replaceable (30000+) | `kind-30023`, `kind-30311` |
### Automated testing — schemata
[**Schemata**](https://github.com/nostrability/schemata) is a set of language-agnostic JSON schemas for validating nostr events against their NIP and kind definitions. App devs can integrate relevant schemas into their dev/build/CI pipeline.
Schemas can also be used to pull events of specified kinds from relays and perform bulk "in the wild" validation. Events that do not conform are documented (example [finding](https://github.com/nostrability/nostrability/issues/253#issuecomment-3362106733), and associated dev [response & fix](https://github.com/nostrability/nostrability/issues/253#issuecomment-3364775585)).
### Automated testing — Sherlock
[**Sherlock**](https://github.com/nostrability/sherlock) is a passive schema validator that continuously scans relays, validates events against schemata JSON Schemas, and attributes violations to apps via NIP-89 client tags. It runs 3x/day via CI and publishes findings as:
- **[Interactive dashboard](https://nostrability.github.io/sherlock/)** — by kind, by app, and error pattern views
- **[Machine-readable JSON](https://github.com/nostrability/sherlock/blob/main/data/findings.json)** — git-tracked for trend analysis
- **Nostr notes** — daily reports published by the [nostrability bot](https://njump.me/npub1g5qtwz2nh9q0mnw555kv787kh6lysds95522gzptre3qpvz9p20s83m80d)
## Non-objective
Nostrability does not aim to get all apps to implement all [NIPs](https://github.com/nostr-protocol/nips).
## How to contribute
- **Report broken interop**: [Open an issue](https://github.com/nostrability/nostrability/issues/new) describing which apps/relays are involved and what breaks
- **Update a tracker**: Comment on an existing [positive-interop tracker](https://github.com/nostrability/nostrability/issues?q=label%3Apositive-interop) with evidence of app support
- **Add schemas**: Contribute to [nostrability/schemata](https://github.com/nostrability/schemata) with validation schemas for new or existing NIPs
## Motivation & reference
- Nostr by [fiatjaf](https://njump.me/npub180cvv07tjdrrgpa0j7j7tmnyl2yr6yr7l8j4s3evf6u64th6gkwsyjh6w6): https://fiatjaf.com/nostr.html
- How nostr wins by [Pablo F](https://njump.me/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft): https://youtu.be/qTixqS-W1yo
- Nostr — [FOSDEM 2025, Wouter Constant](https://www.youtube.com/watch?v=Tbt3jL1Ms0w&t=23s)
- Nostr's broken interoperability — [Pablo F](https://njump.me/npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft): https://youtu.be/v0H13dPceJ0
- Nostrability overview (~13 min): https://youtu.be/I3Qld_HXQuM — [slides](https://slides.com/alltheseas/nostrability)
## Contact
[npub1zafcms4xya5ap9zr7xxr0jlrtrattwlesytn2s42030lzu0dwlzqpd26k5](https://njump.me/npub1zafcms4xya5ap9zr7xxr0jlrtrattwlesytn2s42030lzu0dwlzqpd26k5)