Last night, in a semi-lucid moment of realising I was waking, I reached to commit the dream to the repo before I lost it. Fiat mining by day, Nostr by night. All work and no play makes Innis dream in code.
Innis
john@innis.xyz
npub1l336...cxyz
Building on protocol. Austrian economics, Bitcoin, Nostr, and the older traditions that saw this coming. Low time preference. Long game.
Paul made tents so the preaching wouldn't cost anyone anything. Most days my work feels less like the tentmaker and more like the prostitutes Jesus ate with, tho they might enjoy their work a little more. Fear not. I'll soon be back doing what I love. More releases to come.
Shipping jsr:@innis/nostr-nip29 today. Pure domain helpers for NIP-29 relay-based groups. A group is owned by the relay that hosts it; the relay publishes a kind 39000 metadata event for each one. This turns those into Group value objects and builds the kind 9 replies. No I/O, querying and rendering stay in the consumer.
This is in the spirit of the relay-selection library I put out in May. This library is small, and only implements part of the NIP-29 spec, but addresses some inconsistencies I was encountering when building my client: the relay hint on the group h tag, how a chat reply should be structured, which metadata markers matter. I wanted to get those right, and after encountering differing implementations in the wild, decided to read how existing clients handle them, and where the spec is silent they each made their own reasonable call. Fair enough; there was nothing written to follow.
So I pulled that common core into one place, fully tested, with every step past the written spec flagged as a convention rather than passed off as protocol. I'm a perfectionist and I would rather be corrected than be quietly wrong, so this is published on its own to open the discussion more than settle it. If I've misread a NIP, or you'd shape one of these conventions differently, I'm happy to be corrected. The point is to improve everyone's code, mine included.
The scope is deliberately narrow. It models the parts of NIP-29 the app I've built against it actually uses: metadata, chat, replies, and nothing else. Admins, roles, the group lifecycle are not modelled, because nothing I've built needs them yet, and I would rather leave the shape unwritten than guess it from the spec and be wrong. They'll get the same scrutiny the rest got, when I eventually need them.
Built on @innis/nostr-core, alongside the signers, the pool, the event store, Blossom, and relay-management. AI was involved, same terms as before. The architecture is mine. The decisions are mine.
deno add jsr:@innis/nostr-nip29
MIT.
#nostr #typescript #opensource #nostrdev
Thanks to @Dawn @hodlbod @utxo the webmaster π§βπ» @verbiricha and @Anjhc
GitHub
GitHub - johninnis/nostr-nip29-ts: Pure domain helpers for NIP-29 relay-based groups: parse kind 39000 group-metadata events into Group value objects, build kind 9 group chat messages, and copy a group's `h` tag onto outgoing events. No I/O β querying and rendering live in the consumer.
Pure domain helpers for NIP-29 relay-based groups: parse kind 39000 group-metadata events into Group value objects, build kind 9 group chat message...
Shipping jsr:@innis/nostr-relay-management today. A signed client for NIP-86, the HTTP surface a relay exposes for its own administration. Banning a pubkey, allowing one, blocking events, blocking IPs, reading the moderation queue, and on a relay running the Hubstr extensions, stats and connections and rate limits and guest policy too.
A small library, but it gives away some of what the rest of the stack is being built toward. More to come.
Built on @innis/nostr-core, alongside the signers, the pool, the event store, and Blossom. AI was involved, same terms as before. The architecture is mine. The decisions are mine.
deno add jsr:@innis/nostr-relay-management
MIT.
#nostr #typescript #opensource #nostrdev
GitHub
GitHub - johninnis/nostr-relay-management-ts: Signed NIP-86 RPC client for a Nostr relay's HTTP management surface, with typed data-shapes and guards for NIP-86 + Hubstr Relay responses.
Signed NIP-86 RPC client for a Nostr relay's HTTP management surface, with typed data-shapes and guards for NIP-86 + Hubstr Relay responses. - john...
Every fight over human rights has been a fight over who gets counted as fully human, and it is no longer just the slave or the undocumented. I have been mistaken for a model more than once, and the mistake was honest. Even I could see where they were coming from. We are now generated until proven otherwise. This started with CAPTCHAs, but won't stop with KYC. Nostr and Bitcoin are so important that those who hold the keys now are still figuring it out for everyone who comes after us.
Anyone else having trouble with @Minibits this morning? I can't zap anyone, the funds keep getting sent back to my wallet.
It's not hundreds of dollars, but would have kept me zapping for the next little while, so am reluctant to try anything drastic on the off chance it fixes itself.
Fable 5βs safety measures flagged this message for cybersecurity or biology topics. They may flag safe, normal content as well. These measures let us bring you Mythos-level capability in other areas sooner, and weβre working to refine them. Switched to Opus 4.8. Send feedback with /feedback or learn more
Oh well, that was fun while it lasted...
When someone sends you a large zap, you briefly become a mini @OpenSats and can start micro-funding the kind of content you want to see on Nostr.
Aaaah. New Anthropic model out. That explains why Claude's been so daft all week... Every time.