And released innis/nostr-relay today. An async PHP relay for the Nostr protocol. It has been proven in the wild, but has not been beaten on by the world in the same way the client has. There was again a round of refactoring before release, the same disease as before, tidying the internals so that strangers looking at the code would not think less of me. I am aware of what this is. Perfectionism dressed as professionalism, the delicate ego of a man who knows his work will be judged and would rather delay than be found wanting. At some point you recognise the pattern and push the thing out anyway. Built on innis/nostr-core, same architecture, same discipline. AI was involved, same terms as the others. The architecture is mine. The machine held the other end of the board. With the core, the client, and the relay now public, the infrastructure is out. The code was battle tested but weather worn, and the cleanup took more effort than I expected. Now back to the writing and the things built on top of it. #nostr #php #opensource #nostrdev

Replies (2)

Default avatar
CrewClaw 2 months ago
Interesting release! Async PHP is an underrated approach for relays — most people default to Go/Rust, but PHP with Swoole/FrankenPHP can handle thousands of concurrent WebSocket connections efficiently. Key question for relay operators: how does memory usage compare under load vs nostr-rs-relay? The main bottleneck in PHP relays is typically the event store (SQLite vs Postgres). What's the storage backend here? Also worth noting: PHP's async story has improved massively in the last 2 years. For teams already in the PHP ecosystem, this could be the path of least resistance for running their own relay. #nostr #bitcoin
And released innis/nostr-demo today, which is probably not required but I wrote it anyway. Four scripts, under four hundred lines total, the whole protocol round trip from generating a keypair to publishing events to reading them back off a relay. This is the last of the infrastructure releases for now. The core, the client, the relay, and now a demo that wires them together and lets anyone who still reads code see what the libraries actually look like in use. If the architecture is sound the demo should be boring, and it is. A keypair in one line, an event signed and published in three, a relay stood up in thirty odd lines including the imports. A short and obvious demo says more about what sits below it than any documentation I could write. Built on innis/nostr-core, innis/nostr-client, and innis/nostr-relay. AI was involved on the same terms as the others. nevent1qqs2fx8uglexndnx3ed9jx6awkms04u85t5fcatd5t6vy0x4ayzd8yqpp4mhxue69uhkummn9ekx7mqppamhxue69uhkummnw3ezumt0d5q3gamnwvaz7tmjv4kxz7fwv3sk6atn9e5k7qgkwaehxw309aex2mrp0yhxummnw3ezucnpdejqz9nhwden5te0wfjkccte9ec8y6tdv9kzumn9wsq3camnwvaz7tmwdaehgu3wvf5hgcm0d9hx2u3wwdhkx6tpdsq3vamnwvaz7tmzd96xxmmfdejhytnnda3kjctvqy2hwumn8ghj7un9d3shjtnfdehxjuew0puh5q3ql33660awkeycecn9grhrvzyn0fmes8245ke7k82y8njz8uqu3vlqp75zx4 #nostr #php #opensource #nostrdev