Real Nostr clients don't require any servers, they can work completely on the client side. The fact that we have apps that still work perfectly well but are now inaccessible because a domain name has expired (or whatever) is some bullshit we inherited from the "web" world that we should try to circumvent, not embrace. There are multiple ways to circumvent these flaws and build true Nostr clients that can't be controlled by anyone, not even by their original author.

Replies (31)

Default avatar
2o 8 months ago
Biggest issue there imo is secp256k1. It's just not a curve you can easily do this kind of core infra stuff with. It's not supported by passkeys (webauthn), it's not supported by SubtleCrypto, it's not supported by the secure enclaves of iOS or Android devices, you can't use a secp256k1-based certificate to sign a tls 1.3 handshake, then there's JWTs, JOSE, list goes on. It's just absent from a ton of web standards. mainly because it isn't NIST-stamped, so it's sidelined most places by secp256r1. Basically if the goal from the start is to replace the certificate chain and all the rest, secp256k1 is definitely not what you'd choose.
Default avatar
2o 8 months ago
Those guys of course. Though you could make a technical argument that something like Ed25519 is a better choice for this kind of use case. Or ML-KEM for interop with Chrome's post quantum hooks. Or this or that. Anyway, we're not talking about reinventing the whole internet based on secp256k1. Right?
Default avatar
deleted account 8 months ago
They didn't decide not to support it because it's so niche supporting it was never considered in the first place. You coded yourself into a corner, #cointard.
Default avatar
2o 8 months ago
There was one guy here I forget who that performed these coding gymnastics to get secp256k1 quasi-working for passkeys/webauthn via the PRF extension and a bitwarden software vault and a bunch of other stuff, and the result I'm guessing was something impressive but that can't really function in the real world given that webauthn mandates that it's up to users to choose how they want to store passkeys, not websites, and users will just choose keychain or whatever they see first.
I wasn't. I was just talking about hosting Nostr clients in a way that is independent from domain names. If your client is just client-side assets these can be hashed and downloaded from many different places, they don't have to come from one canonical URL controlled by one guy.
Default avatar
2o 8 months ago
That part makes sense. But how would you make a nostr metrics client? If I remember right Artur was from a web-crawling background and made is own nostr crawler from scratch. Or you mean just for publishing, like writing daily stats events to the relays?
πŸ”΄ Muslims follow all prophets and messengers, peace be upon them ⚠️ God has said in the Quran: { They say, "Be Jews or Christians [so] you will be guided." Say, "Rather, [we follow] the religion of Abraham, inclining toward truth, and he was not of the polytheists."( 2: 135 ) Say, [O believers], "We have believed in Allah and what has been revealed to us and what has been revealed to Abraham and Ishmael and Isaac and Jacob and the Descendants and what was given to Moses and Jesus and what was given to the prophets from their Lord. We make no distinction between any of them, and we are Muslims [in submission] to Him." (2:136)}
No, the metrics and search stuff are unrelated, these definitely require special servers. But I think the main note was about nsec.app, or maybe I misread. In any case I wasn't talking only about that, that was just one example, my point is valid for many other cases.
Web apps are just as "real nostr clients" as any other app. They all requires servers one way or another, and if a relay doesn't update their certificate, no data will flow, no matter if your app is deployed from a centralized corporate approval system (Play Store/App Store), that can wipe your app off the earth by will, or if your app is downloaded from a git repo or web server to be installable, or if it's retrieved using web technology. There is also a big difference between a client web app and server web app. Any server web app has an online dependency. Any client web app is just like any other native app, just using web tech for rendering.
I wasn't saying that web clients aren't real Nostr clients at all! After all web clients can run locally and be totally independent of any server (except for some server that may have to initially, once, serve their assets, but that doesn't even have to be a single server).
The whole debate is mixing up two different issues: protocol design and reliability of the surrounding infrastructure. From the reliability perspective, it does not matter whether the client is a native app, a web app, or a β€œpure” static Nostr client – you always depend on some combination of relays, DNS, TLS, and distribution channels for the client itself. ​ Even if you run your own relay and connect directly by IP, you usually still want authenticated, encrypted transport, which means certificates of some kind. If you use self‑signed certificates, you lose the usual WebPKI trust guarantees; if you use CA‑issued certificates, you inherit the same centralization and expiry risks as any other TLS‑protected service. Either way, the problem is not β€œweb vs native” but how much you trust and can operationally rely on these components staying valid and reachable. ​ Web clients that are static (HTML/JS/CSS only) and talk directly to relays are, in that sense, β€œreal Nostr clients” just like native apps: they hold keys locally, speak the protocol, and connect to relays without an app‑specific backend. The practical question is how to minimize centralized points of failure (DNS, single relay, single app store, single certificate chain), not to argue that one UI technology somehow magically avoids the need for trust, certificates, or servers altogether.
↑