Join Nostr
2026-03-24 13:31:35 UTC

Innis on Nostr: And released innis/nostr-client today. An async PHP client for the Nostr protocol. It ...

And released innis/nostr-client today. An async PHP client for the Nostr protocol. It talks to relays, manages subscriptions, handles the back-and-forth of messages. Async, which was the reason I started building it in the first place, because neither nostr-php nor nostriphant offered that when I began, and by the time they might have I was already too far in to turn around. How far in is something I am too ashamed to say out loud.

It has been running in production long enough that most of the sharp edges have been worn smooth by actual use rather than speculation about what use might look like. There was a recent round of refactoring to make the internals presentable for public viewing, the kind of work where you realize that code written for yourself and code written for others are not the same thing and the gap between them is larger than you thought. That tidying was part of what kept me from releasing it previously, and at some point the tidying becomes the delay and the delay becomes the excuse. It is done now. Ship the thing.

Built on innis/nostr-core, same architecture and same discipline. The protocol layer does the protocol work and the client does the client work and they do not reach into each other's business.

AI was involved, same terms as before. The architecture is mine and the decisions are mine and the machine held the other end of the board while I cut it.

https://github.com/johninnis/nostr-client

Thanks again to and for doing the real hard work and breaking the ice.

#nostr #php #opensource #nostrdev #asyncphp
Released innis/nostr-core today. A PHP library for the Nostr protocol. Clean architecture, immutable domain objects, pure functions. The protocol layer separated from everything else, organised around domain concepts rather than NIP numbers, strict enough that a relay, a client, and a web application can share the same core without compromise.

and did the early work with nostr-php and nostriphant when there was nothing to build on and I am grateful for it.

The relay and the client and several things built on top of them are written and working. They are being reviewed and cleaned before release, though past lessons remind me not to let that become an excuse for delay. The core library went first because the architecture needed to be public before anything else.

AI was involved. Not as a replacement for knowing what I was doing but as something closer to a second pair of hands. The architecture is mine. The decisions are mine. The machine was useful in the way a good tool is useful, which is that it did what I asked it to. At least most of the time.

https://github.com/johninnis/nostr-core or composer install innis/nostr-core

#nostr #php #opensource #nostrdev