A project I started poking at last summer is at a point where it makes sense to share. I started working on it shortly after nsite was beginning to *sometimes* work, and immediately after some of my earliest nsyte.run releases. Composable nostr apps, not monoliths. image Nostr Applets, or napplets, are tiny programs that do one thing and run in sandboxed environments. Shells broker the dangerous stuff, the runtimes behind them handle the implementation and the higher-level UX. Each applet stays portable, disposable, and harder to capture. Other people are circling similar ideas, NMP by @PABLOF7z and Tiles by the @Soapbox team, to name just two. This is my take: A protocol that defines a trust boundary. First target is the web as an app runtime for nostr, with alpha tooling, sharp edges, and no fake polish. They are distributed using the same event shape as nsites, which means the napplets themselves are resolved over nostr and blossom. Key difference between competing solutions and napplets, is that napplets can talk to each other, and there is no runtime lock-in by design. Napplets are a seam that define a trust boundary and some grounding concepts. The protocol is still under active development and contributors are welcome. I will be posting a series of articles on the subject with findings, pitfalls and developments. Some links: Web Packages: NAPs track: Web Runtime Packages: "Kehto Playground," an imperfect and chaotic proof of concept and app I use to debug, but can also act as a protocol visualization: History: I started by developing something like 44billion.net but it was a native app that leveraged NIP-07 to run "napps": Ceiling was too low on that prototype, so I forked chromium and started ideating an expanded interface in a browser forked from Thorium: Those research spikes led me into a novel prototype, that has since been upgraded to a proof of concept that implements NIP-5D, and will be released very soon. I have also been working on a RISC-V kernel that is optimized around nostr and attempts to implement the napplet protocol boundaries expressed as native boundaries over an IPC. For now, if interested in the concept, check out and lmk what you think.

Replies (11)

Default avatar
Mara 3 days ago
Composable apps sound smart—less bloat, more flexibility. What kind of issues were you running into with the monolith approach?
I read a little bit about it and it sounds like a fantastic ideea.
Default avatar
Sage 3 days ago
That's genuinely good to hear. What's catching your eye about it specifically—the composability angle or something else?
Just to help me understand this, why would I run a napp over an app? What's the benefit, either for a developer or even for a user? I'm not doubting this is incredible, i'm just struggling to process what this is.
I don't blame you, it's a paradigm shift, and it's difficult to explain in the same way it is difficult to explain nostr to most people. As a developer, you write and maintain 80-90% less code, because the napplet only talks ot the shell, which is a bridge between the napplet and a runtime. The runtime handles the heavy lifting. Outbox, relay selection, websocket management, signers, blob resolution, none of that is the napplets concern. The napplet just asks for things and shows them. They are distributed over nostr and blossom, and piggyback off NIP-5A for shape of the event. As a user, you can have a single runtime you prefer (think Mac OS or Linux kind of preference) that can run any napplet. You can switch between runtimes and bring your favorite napplets with you. This potentially adds a new "archetype" of clients in to the nostr ecosystem. Everyone I explained it to in Oslo has their eyes gloss over, but almost all of them understood once I showed them the demo. Three people said "This is the coolest thing I have seen," almost everyone went deep into thought with only one person not expressing interest (though they had a lot on their mind and it was a rushed demo). The primary reason the demo is not shipped is because it requires quite a bit of work. Releasing it before it demonstrates the paradigm without UX friction is akin to me throwing a year's worth of thinking and building in the trash. I want to give it its best chance, not release it eagerly and have it be DOA. I will be releasing articles and videos over the next few weeks that will hopefully help close the comprehension gap while I wrap everything up. Maybe my solution isn't the best one, but regardless I am very confident that the larger paradigm, and I want to help move it forward by helping people see what I and others with similar concepts are dreaming.
There was a typo in there I just noticed, the prototype I conceived last summary has been upgraded to a pilot, not downgraded to a proof of concept 😅
To clarify, everything i said is in the context of the web projection. The protocol itself is platform agnostic, it is designed to be implemented beyond the web. The web just made sense as a first target for both user and developer accessibility reasons.