I came back to digital social life after stepping away for a few years. I found social networks worse than I remembered.
Every platform I visit is broken in the same way. Not broken like "bad UX" or "too many ads." Broken like systematically manipulated. I can see the patterns. Coordinated networks pushing narratives. Bot swarms amplifying specific voices. Psy-ops running in plain sight. The signals are obvious once you know what to look for.
The worst part isn't seeing it. The worst part is not being able to do anything about it.
Block one account, ten more appear. Mute a keyword, they switch phrasing. Report spam, nothing changes. The infrastructure of these platforms is designed to make you passive. You can react, but you cannot defend. You are always downstream of someone else's filtering decisions, someone else's recommendation algorithm, someone else's idea of what you should see.
I thought Nostr would be different. Decentralized. User-controlled. No algorithmic feed manipulation. No corporate gatekeepers.
But Nostr right now is not better. We are still early. We are still not evolving fast enough.
The Problem: Nostr Hasn't Solved Trust Yet
Nostr gives you freedom from centralized platforms. But it does not give you freedom from noise, spam, or coordinated manipulation. Those problems followed us here.
Right now, most Nostr clients handle trust the same way Twitter does: they make decisions for you. They choose how to filter. They choose how deep into your social graph to look. They choose what counts as spam. Even if their choices are reasonable, they are still their choices imposed on your network.
Switching clients means switching trust models. Every app applies different logic. Every app makes different assumptions. You rebuild context from scratch every time you try something new.
This is the same centralization problem wearing a decentralized mask.
If Nostr is supposed to be about user sovereignty, then trust infrastructure cannot live inside apps. It has to belong to the user. It has to move with them. It has to be inspectable, adjustable, and portable.
Otherwise we are just recreating the same dependency—except now on client developers instead of platform owners.
What I Built: Portable Trust Infrastructure
I built a system that separates trust computation from application logic.
You decide who you trust. Your follows, your mute list, your custom lists.
Your infrastructure computes trust scores based purely on your social graph. No opinions. No hidden weights. No editorial decisions. Just math applied to the network you chose to build. You choose your strategy, clients respond to it.
Applications use those scores based on how you guide them—filter spam, rank feeds, show badges, prioritize notifications. They remain free to innovate on presentation. But they do not control the underlying trust layer anymore.
THIS IS THE SEPARATION THAT MATTERS.
How It Works: Three Layers
1. Browser Extension
The extension reads your follow list, mute list, and NIP-51 lists, then builds a trust graph locally in your browser.
People you follow directly get high trust scores. People they follow get medium scores. People further out get lower scores. Muted accounts get zero.
Any Nostr client running in your browser can query the extension: Backends, mobile apps, anything that needs trust data can query it directly.
// Is this person in my network?
const inNetwork = await window.nostr.wot.isInMyWoT(pubkey);
// What's their trust score?
const score = await window.nostr.wot.getTrustScore(pubkey);
Because the extension runs at the browser level, every client you use shares the same trust backbone. Your trust network is no longer trapped inside individual apps.
You can inspect every score. You can adjust the logic. You can see exactly why something is filtered. No black boxes.
2. WoT Oracle
For server-side applications or mobile clients that cannot use a browser extension, there is an oracle backend that indexes the entire Nostr follow graph. It delivers sub-millisecond trust queries at 10,000+ requests per second. Currently running a relay at `wot-oracle.mappingbitcoin.com`, but fully self-hostable if you want complete control.
Simple REST API:
GET /trust-score?from={your_pubkey}&to={target_pubkey}
3. JavaScript SDK
To make integration trivial, there is an npm package with full TypeScript support and React hooks.
The SDK automatically uses the browser extension when available and falls back to the oracle when it is not:
For React:
Three lines of code. That is the entire integration.
What This Actually Does
- For users: Your trust network becomes portable. You do not rebuild it every time you try a new client. You control the logic. You can see why things are filtered. You can adjust scoring depth, weights, and list priorities. All computation happens locally unless you choose otherwise.
- For developers: You do not need to store social graphs. You do not need to implement your own Web of Trust algorithm. You query an API and get instant trust scores. Your client stays lightweight. You focus on product experience instead of infrastructure. The oracle handles 10,000+ requests per second with <1ms latency. It scales.
- For the ecosystem: We stop fragmenting trust across dozens of clients. We stop forcing users to rebuild context. We create a shared layer that anyone can build on top of while keeping users in control of the underlying data.
Why This Matters
I built this because I am tired of being passive.
On centralized platforms, you cannot fight coordinated manipulation. The tools do not exist. The incentives do not align. You are always downstream of someone else's filtering logic.
Nostr gives us the opportunity to do this differently. But only if we actually build the infrastructure that makes user sovereignty real instead of theoretical.
Trust infrastructure that users control. Not apps. Not developers. Users.
You decide who you follow. The system computes trust based on your decisions. Applications are free to present that data however they want, but they do not get to redefine it.
That is the separation that prevents the same centralization from creeping back in.
We Are Still Early, But This Is a Step
Nostr is not better than centralized platforms yet. We are still building. We are still figuring out what decentralized social infrastructure actually looks like in practice.
But we will not evolve if every client keeps rebuilding the same trust logic in isolation. We will not evolve if users keep losing context every time they switch apps. We will not evolve if trust remains app-specific instead of user-controlled.
This is infrastructure. It is not the final answer. But it is a necessary piece.
I'm Looking to Collaborate
I am actively seeking new Nostr projects that want portable Web of Trust from the start.
The SDK is ready. Integration is straightforward. I will actively help teams implement this properly.
If you are building a Nostr client and you want users to bring their own trust instead of relying on your filtering logic, let's talk.
Current Status
Available Now:
- Browser extension (Chrome, Brave, Edge, Opera) - Chrome Web Store
- WoT Oracle API at
wot-oracle.mappingbitcoin.com - https://github.com/mappingbitcoin/nostr-wot-oracle
nostr-wot-sdkon npm with full TypeScript support- https://github.com/nostr-wot/nostr-wot-sdk
- https://www.npmjs.com/package/nostr-wot-sdk/
- Full documentation and playground at nostr-wot.com
- Everything is MIT licensed and open source
Active Development:
- Firefox extension
- Advanced scoring models
- More implementations
Get Started:
- Extension: nostr-wot.com/download
- Developers: nostr-wot.com/docs
- Playground: nostr-wot.com/playground
- Code: github.com/nostr-wot
- Reach me: npub1gxdhmu9swqduwhr6zptjy4ya693zp3ql28nemy4hd97kuufyrqdqwe5zfk