An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          

# nostrability

Nostr will have a shot at winning because of seamless interoperation between any combination of social media clients, and other stuff.

![nostr apps as tetris blocks](https://image.nostr.build/be982bc07274ef9873dbe36819d04565db5b700507adc09d00e463bc4a8669f6.png)

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

![image](https://github.com/alltheseas/nostrability/assets/64376233/0f94c4e4-0179-490f-9c68-8e9f9761ec8c)

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)