A project I started poking at last summer is at a point wher...

npub1uac67zc9er54ln0kl6e4qp2y6ta3enfcg7ywnayshvlw9r5w6ehsqq99rx
hex
f50f61909b6e31a302b991834fb3004289cc3174601d1d300e6a17cdf83c6278nevent
nevent1qqs02rmpjzdkuvdrq2uerq60kvqy9zwvx96xq8gaxq8x597dlq7xy7qprpmhxue69uhhyetvv9ujuem4d36kwatvw5hx6mm9qgswwud0pvzu362lehm0av6sq4zd97cue5uy0z8f7jgtk0hz368dvmchlzlr7Kind-1 (TextNote)
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.
https://napplet.run Composable nostr apps, not monoliths.

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 nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and Tiles by the nostr:npub10qdp2fc9ta6vraczxrcs8prqnv69fru2k6s2dj48gqjcylulmtjsg9arpj 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: https://github.com/napplet/web NAPs track: https://github.com/napplet/naps Web Runtime Packages: https://github.com/kehto/web "Kehto Playground," an imperfect and chaotic proof of concept and app I use to debug, but can also act as a protocol visualization: https://kehto.github.io/web/playground
History: I started by developing something like 44billion.net but it was a native app that leveraged NIP-07 to run "napps": https://github.com/sandwichfarm/napp.run Ceiling was too low on that prototype, so I forked chromium and started ideating an expanded interface in a browser forked from Thorium: https://github.com/sandwichfarm/dryft
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 https://napplet.run and lmk what you think.
Raw JSON
{
"kind": 1,
"id": "f50f61909b6e31a302b991834fb3004289cc3174601d1d300e6a17cdf83c6278",
"pubkey": "e771af0b05c8e95fcdf6feb3500544d2fb1ccd384788e9f490bb3ee28e8ed66f",
"created_at": 1781894252,
"tags": [
[
"p",
"fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52"
],
[
"p",
"781a1527055f74c1f70230f10384609b34548f8ab6a0a6caa74025827f9fdae5"
]
],
"content": "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.\n\nhttps://napplet.run: Composable nostr apps, not monoliths.\n\nhttps://blossom.primal.net/4885cbf3cfdc44e9a9d6a29d44b0ec16b8d37f5541100c5ab212a98ad16eecb7.png\n\nNostr 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.\n\nOther people are circling similar ideas, NMP by nostr:npub1l2vyh47mk2p0qlsku7hg0vn29faehy9hy34ygaclpn66ukqp3afqutajft and Tiles by the nostr:npub10qdp2fc9ta6vraczxrcs8prqnv69fru2k6s2dj48gqjcylulmtjsg9arpj team, to name just two.\n\nThis 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.\n\nKey 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.\n\nThe protocol is still under active development and contributors are welcome.\n\nI will be posting a series of articles on the subject with findings, pitfalls and developments.\n\nSome links:\nWeb Packages: https://github.com/napplet/web\nNAPs track: https://github.com/napplet/naps\nWeb Runtime Packages: https://github.com/kehto/web\n\"Kehto Playground,\" an imperfect and chaotic proof of concept and app I use to debug, but can also act as a protocol visualization: https://kehto.github.io/web/playground\n\nHistory:\nI started by developing something like 44billion.net but it was a native app that leveraged NIP-07 to run \"napps\": https://github.com/sandwichfarm/napp.run\nCeiling was too low on that prototype, so I forked chromium and started ideating an expanded interface in a browser forked from Thorium: https://github.com/sandwichfarm/dryft\n\nThose 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.\n\nI 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.\n\nFor now, if interested in the concept, check out https://napplet.run and lmk what you think.",
"sig": "839c5000606b2c77b4c195663f851f0217b0c52e9363deafa415aad54045641d8304909888d37829bf62700ade9f212cca4e7c9c577ff6106e2926bf375b4c9a"
}