Transcription: OpenAgents Episode 066 - Nostr Plugin Registry

June 9, 2026 ยท View on GitHub

Source: https://twitter.com/OpenAgentsInc/status/1752537446003118431 Wiki source: https://raw.githubusercontent.com/wiki/OpenAgentsInc/openagents/Video-Series.md Media title: OpenAgents - Episode 066: Nostr Plugin Registry We review our first community PR i... Upload date: 20240131 Transcription model: mlx-whisper/mlx-community/whisper-tiny Generated at: 2026-06-01T20:00:23Z

Machine-generated transcript. Review speaker labels and wording before using this as quote-grade source material.

[00:00] Christopher David: Let's talk about Nostar. We have a PR, our first PR from the community, Alex, who won a

[00:08] Christopher David: bouncy building a Nostar version of our worker bee software for GPU 2, a couple of months ago,

[00:16] Christopher David: has built a Nostar version of our plugin discovery system. So for those new to Nostar,

[00:25] Christopher David: Nostar is a decentralized data network. Some people are kind of more tightly associating it with

[00:34] Christopher David: a social network, but it's really a protocol that can work with any arbitrary decentralized data.

[00:42] Christopher David: For Bitcoin and Lightning, even though Nostar has no specific type to Bitcoin,

[00:49] Christopher David: a lot of Bitcoiners love Nostar because it provides the kind of decentralized data layer that is

[00:56] Christopher David: kind of missing from Bitcoin to be able to power decentralized applications. So people talk about the

[01:01] Christopher David: Bitcoin Lightning Nostar stack or the Bitcoin Lightning Nostar AI stack. The talk I give

[01:10] Christopher David: the other day, kind of stepping through the thesis here about how actually open AI wins,

[01:21] Christopher David: this kind of powerfully introduces Bitcoin Lightning and Nostar together, Nostar being the neutral

[01:27] Christopher David: decentralized protocol for data and communications. Here's why that's so cool.

[01:34] Christopher David: If we're not in a world without Nostar or sort of shared data layers, then I need to get you to

[01:45] Christopher David: care like only about getting plugins for openagents.com and only trusting me and my company.

[01:53] Christopher David: Whereas this idea of like a wasm plugin that can have a batch of code that could be run

[02:00] Christopher David: by anyone, there's no reason that you should have to get that from my company. That's something

[02:07] Christopher David: that should be a commodity and could be gotten freely from multiple different websites. Now,

[02:12] Christopher David: I have an incentive as a developer and a product owner and a business owner to try to provide

[02:17] Christopher David: you in a value to useopenagents.com for as much of that use case of those types of plugins is possible.

[02:26] Christopher David: But I love the idea that we have this more open kind of substrate of communication, enabling

[02:35] Christopher David: interoperable code and business logic to live in a way that could be written to and read by

[02:44] Christopher David: applications, tens or hundreds of thousands of different applications. So the idea that there could be

[02:50] Christopher David: one sort of specification for wasm plugins that a critical mass of the community agrees on

[02:56] Christopher David: and we all just kind of can read the idea of plugins and have it be consumed by multiple

[03:04] Christopher David: different apps. Potentially very powerful. We've seen that already emerge in social media where

[03:13] Christopher David: kind of the main use case thus far for Nostar has been social media. But there's a ton of

[03:17] Christopher David: different social clients. One of the big ones being Domus is sort of inspired by Twitter or

[03:24] Christopher David: it's a kind of explicit Twitter clone. But when you make a post on Domus, which is an iOS

[03:32] Christopher David: only app, it can be read by someone reading that feed from an Android client written by a

[03:42] Christopher David: completely different developer because they're all kind of reading and writing to the same

[03:47] Christopher David: public feed. And then if you apply that idea for all sorts of different use cases,

[03:54] Christopher David: there's people building marketplaces, a couple of years ago I wrote the public chat specification

[04:00] Christopher David: at 28 is a few different chat clients out there. So it's cool.

[04:08] Christopher David: Let's step through this PR from Alex and we'll talk a little bit more about that. So

[04:16] Christopher David: implement Nostar client side for exploring and publish plugins for open agents on the Nostar network

[04:21] Christopher David: using a new event kind. And let's look at the UI example video. So it's pretty much

[04:31] Christopher David: kind of the same plugin flow that we have that's kind of anchored to our database

[04:40] Christopher David: except this reads plugins from Nostar release and also publishes plugins to Nostar release.

[04:52] Christopher David: And the first plugins that are being published are just kind of demo plugins.

[05:00] Christopher David: But the idea that we can so here they're you're signing with your public key and distributing that out.

[05:11] Christopher David: We could do an implementation without that if we just wanted to sign it on the server. But

[05:18] Christopher David: this is great.

[05:23] Christopher David: And so the open agents website even though we'll have sort of our own repository of plugins

[05:31] Christopher David: at least for now. We'll also be able to pull in plugins from sort of like the broader community.

[05:36] Christopher David: So if someone has a agents site it's in a completely different language that just caters to an

[05:42] Christopher David: area of the world that we don't really or it's you know better used you know it's more usable

[05:47] Christopher David: by people in for example Brazil. If they create plugins and submit it to that site to the same

[05:54] Christopher David: using the same kind of event kind we can pull those into our site. So this is still kind of like

[06:01] Christopher David: early and and kind of proof of concept but it's a pretty powerful proof of concept. So I'm

[06:07] Christopher David: really like take a look at the code here and I'll see if we can test it out.

[06:12] Christopher David: So we've got a new controller settings we'll pull this down in a second and play with it.

[06:25] Christopher David: Adds the Nostor Dev Kit and decay.

[06:29] Christopher David: Nostor Development Kit with Outbox and Model Support.

[06:48] Christopher David: Now there's the Nip 28 group chat channel for this. I wrote that back in the day.

[06:56] Christopher David: Um, Duk-Doo.

[07:00] Christopher David: Signers, Bubble Ball, Albee. You can use that as a browser extension. Very nice.

[07:07] Christopher David: Let's keep going down. So before we leave, sure fine. Plug in kind. That's just something that Alex

[07:13] Christopher David: scaled up with. And then eventually we will once we kind of demonstrate that this deserves to be

[07:21] Christopher David: further formalized. Then we'll get it added to somewhere in here is a

[07:31] Christopher David: list of the different event kinds. I don't know where they have that now.

[07:44] Christopher David: Here. So these are different event kinds. So short text note like posts.

[07:51] Christopher David: Nip 28, the chat channel things are there. You got bid, overtime stamps, live chat message,

[07:57] Christopher David: problem tracker, label. These are all things that have their own separate Nostor implementation

[08:03] Christopher David: protocol, Nip, specifying how they're used. Marketplace calendar event. Yeah. So, um,

[08:20] Christopher David: Alex is proposing adding 3514. So that would live right there. Cool. So at some point we

[08:32] Christopher David: may do an Nip for this. Okay, try to get realized from the local store to the

[08:36] Christopher David: organization. The default relays. You connect to one or more relays where events are stored.

[08:41] Christopher David: And then you can kind of connect to any relays that you want. Okay. Nostor index, cash,

[08:51] Christopher David: basic stuff for Alpine for US stuff. Cash adapter. I have never used this before. This looks interesting.

[08:59] Christopher David: Alpine reactive, NDK, explicit really URLs, cash adapter. Alpine form for

[09:06] Christopher David: creating a new plug in and publishing into the Nostor network.

[09:19] Christopher David: Create new events, push some tags, price,

[09:36] Christopher David: and then you can create a new one.

[09:47] Christopher David: Okay. Thank you.

[10:05] Christopher David: Very cool. Okay. I think we'll just, um, merge it and try it. This failure, I think, is just a problem

[10:16] Christopher David: with the, uh, the fact that it's a PR. Let's just see what happens.

[10:30] Christopher David: EO, co-authored by. No, he's the full author.

[10:45] Christopher David: Implement Nostor for exploring plugins.

[10:49] Christopher David: Okay. Let's pull it down and try it.

[11:04] Christopher David: So I will probably need to do

[11:08] Christopher David: MPM I for the extra JavaScript package.

[11:25] Christopher David: And then we got Vico in there. Let's just reload that just in case.

[11:37] Christopher David: And I guess let's try it.

[11:52] Christopher David: Okay. Uh, what?

[11:54] Christopher David: Give it to this. What route should I try?

[12:10] Christopher David: This spell check thing is pretty annoying.

[12:12] Christopher David: Ruffle. What is this?

[12:17] Christopher David: Are you just complaining about the spell check?

[12:19] Christopher David: I just able to. Okay. So um,

[12:25] Christopher David: Nostor slash plugins.

[12:31] Christopher David: Who yeah. Okay. Inspect.

[12:34] Christopher David: Right.

[12:46] Christopher David: Now I don't have any nip seven.

[12:52] Christopher David: Thighy.

[12:57] Christopher David: So question one is what's supposed to happen at Nostor plugins?

[13:04] Christopher David: Okay.

[13:16] Christopher David: Resources.js Nostor index.

[13:27] Christopher David: Okay. I see some.

[13:30] Christopher David: Connections to relays.

[13:51] Christopher David: So I'm guessing that's defined in Nostor index.

[13:59] Christopher David: Do I even have a JavaScript linter in gun?

[14:15] Christopher David: All right. What happens if I do create plugin?

[14:18] Christopher David: Oh, here we go. All relays. Nostor one. Open Nostor settings.

[14:25] Christopher David: Okay. There's my preferred relays probably.

[14:30] Christopher David: See create plugin.

[14:34] Christopher David: Okay. Make a new agent plugin from an ex toism wasm file.

[14:37] Christopher David: Make sure you have a Nostor browser extension installed to broadcast the plugin to the Nostor network.

[14:42] Christopher David: Okay. So I don't. But let's do that now.

[14:47] Christopher David: Uh, I think you used Nostor at the law. Is that a website?

[14:51] Christopher David: Um, unlike six months out of date with.

[15:08] Christopher David: Here we go. Nostor x file files. Let's give that a try.

[15:20] Christopher David: Okay. Anything else I have to do? All right. Let's see if anything changes down here. Does it matter?

[15:48] Christopher David: Does that have connected? Okay. And I actually want to use the.

[15:55] Christopher David: Actual wasm link like an actual plugin.

[16:00] Christopher David: Even though it's kind of a demo plugin.

[16:09] Christopher David: All right. Here's what I want to do.

[16:14] Christopher David: I would like to learn how to copy between these quotes here.

[16:18] Christopher David: If I'm in NeoVim, how do I copy the URL without the quotes?

[16:28] Christopher David: If my cursor is on the URL.

[16:48] Christopher David: Uh, no, give me the actual shortcut to grab the entire string between the quotation marks.

[16:57] Christopher David: Oh, yeah. I could copy over the stupid.

[17:03] Christopher David: Okay. Text object. Yes. V. I quote. Yank.

[17:10] Christopher David: So V. I quote. Yank.

[17:13] Christopher David: Yeah, just just should have just said that. Okay. V. I quote Yank.

[17:22] Christopher David: Oh, that feels nice assuming it works. Okay. So let's paste that.

[17:29] Christopher David: What's that? Let's do a video. Get out of here.

[17:34] Christopher David: Paste that over here. Oh. V. I quote Yank plus. I'm guessing.

[17:52] Christopher David: I need to yank it to my system clipboard and that did not.

[18:04] Christopher David: I'm going to do a video.

[18:17] Christopher David: Quote plus Y. I quote really.

[18:26] Christopher David: Colin first I'm assuming.

[18:30] Christopher David: Quote plus Y. I quote.

[18:33] Christopher David: Quote.

[18:43] Christopher David: No, that did not work. Do I need to enter visual mode?

[18:48] Christopher David: No.

[19:03] Christopher David: Tell me the sequence in one line.

[19:11] Christopher David: The I quote.

[19:14] Christopher David: Star Y.

[19:20] Christopher David: The I quote.

[19:23] Christopher David: Star Y.

[19:29] Christopher David: Row.

[19:39] Christopher David: I'm telling it. Oh, much.

[19:44] Christopher David: We're going to do plus Y.

[19:54] Christopher David: The I quote.

[19:59] Christopher David: Plus.

[19:59] Christopher David: Why?

[20:01] Christopher David: That doesn't feel right.

[20:03] Christopher David: Oh, look, okay, at least got close.

[20:06] Christopher David: Chad, do you need to use fucking suck?

[20:08] Christopher David: Okay.

[20:09] Christopher David: That goes there.

[20:15] Christopher David: Count of owls.

[20:18] Christopher David: I count your owls.

[20:21] Christopher David: Fee, you know what, I'm going to count your owls for free.

[20:25] Christopher David: Okay, error.

[20:26] Christopher David: And then indicate nip 07.

[20:29] Christopher David: Signors not to find it, but it says creative n.

[20:35] Christopher David: And I'm back in my day.

[20:36] Christopher David: We didn't have all these fields on our event.

[20:40] Christopher David: Content.

[20:47] Christopher David: Okay.

[20:56] Christopher David: Okay.

[21:26] Christopher David: So we have ndk.

[21:27] Christopher David: So we have ndk.

[21:29] Christopher David: So we have ndk.

[21:50] Christopher David: So we have ndk.

[21:58] Christopher David: If there's no ndk signer, generate a new ndk nip signer, but where was there's to get this from?

[22:28] Christopher David: Okay.

[22:54] Christopher David: Make sure we're connecting.

[22:58] Christopher David: Okay, we're connected to the ndk.

[23:10] Christopher David: If there's no signer, then the signer is this.

[23:13] Christopher David: Okay, so where is that supposed to come from?

[23:28] Christopher David: Okay, it's supposed to be imported from the ndk.

[23:40] Christopher David: Ndk.

[23:43] Christopher David: Nip 07 signer.

[23:46] Christopher David: Q it.

[23:48] Christopher David: Okay, trigger.

[23:53] Christopher David: So.

[23:54] Christopher David: Wow, counter.

[23:58] Christopher David: I count your vowels.

[24:00] Christopher David: Boom.

[24:02] Christopher David: Puri.

[24:05] Christopher David: Error, nostox fox.

[24:07] Christopher David: No active private key.

[24:08] Christopher David: I thought I did that.

[24:10] Christopher David: I guess I did not.

[24:14] Christopher David: Save key.

[24:18] Christopher David: Generate.

[24:19] Christopher David: Save key.

[24:20] Christopher David: I can't save key.

[24:21] Christopher David: New.

[24:23] Christopher David: Generate.

[24:24] Christopher David: Save.

[24:25] Christopher David: Save private key.

[24:26] Christopher David: There we go.

[24:29] Christopher David: Okay.

[24:30] Christopher David: I do have an actual npub that I guess I can import later.

[24:35] Christopher David: Final that should hopefully.

[24:44] Christopher David: Vowl counter.

[24:46] Christopher David: I count your vowels.

[24:50] Christopher David: 0.

[24:52] Christopher David: All right, event.

[24:56] Christopher David: Not recognized.

[24:57] Christopher David: I know is requesting to your information to read your public key.

[25:01] Christopher David: I will give you permission forever.

[25:04] Christopher David: Now acting on.

[25:07] Christopher David: I don't know what that is.

[25:09] Christopher David: Local host.

[25:10] Christopher David: Is requesting to your permission to read your public key.

[25:13] Christopher David: Read your list of preferred relay.

[25:15] Christopher David: Signar.

[25:16] Christopher David: Signar.

[25:17] Christopher David: Signar.

[25:18] Christopher David: Signar.

[25:19] Christopher David: Signar.

[25:20] Christopher David: Signar.

[25:22] Christopher David: Signar.

[25:25] Christopher David: After ice cream shot this, good.

[25:27] Christopher David: It looks pretty cool.

[25:47] Christopher David: All right, all authorizes for five minutes.

[25:52] Christopher David: Okay, plugin data.

[25:54] Christopher David: And now apparently, oh yeah, local host,

[25:57] Christopher David: Nostra plugin.

[25:59] Christopher David: Nice.

[26:00] Christopher David: So now we have a URL with that pub key.

[26:09] Christopher David: And here's the event.

[26:10] Christopher David: Fee of zero, boba, and the.

[26:12] Christopher David: Wasm where it's hosted.

[26:15] Christopher David: Does this work?

[26:22] Christopher David: I'm guessing that part of it's not connected.

[26:28] Christopher David: That's all right.

[26:30] Christopher David: But so what I want to test now is if I go to open agents, first of all,

[26:35] Christopher David: I want to see if it deployed successfully.

[26:51] Christopher David: I'm guessing there might have been like a v-bundling error or something.

[26:58] Christopher David: Let's see.

[27:00] Christopher David: How can I take this real quick?

[27:02] Christopher David: Okay.

[27:12] Christopher David: What I want to do is see my.

[27:14] Christopher David: Um.

[27:17] Christopher David: The same pub key.

[27:18] Christopher David: If I like connected the same relays,

[27:20] Christopher David: I should be able to see that same plug plugin.

[27:24] Christopher David: Looks like that deployed fine.

[27:27] Christopher David: Let me see if I can go log into.

[27:33] Christopher David: Now I disabled that so I need to go into.

[27:42] Christopher David: The database maybe.

[27:45] Christopher David: There should be an error.

[27:51] Christopher David: View exception.

[28:00] Christopher David: Okay. Yeah.

[28:11] Christopher David: I'm able to locate file in VT manifest.

[28:16] Christopher David: Because it was not. I think added to the VT config.

[28:23] Christopher David: Okay.

[28:33] Christopher David: Okay.

[28:38] Christopher David: Okay.

[28:44] Christopher David: Uh.

[28:51] Christopher David: Resources.

[28:55] Christopher David: Js.

[28:57] Christopher David: Nostor index.js.

[29:00] Christopher David: Maybe.

[29:03] Christopher David: I get all work locally, but if it hasn't been built that.

[29:07] Christopher David: Okay. Let's pop over to.

[29:10] Christopher David: Here.

[29:13] Christopher David: And get status.

[29:18] Christopher David: Fix VT config.

[29:21] Christopher David: And the seven imports.

[29:25] Christopher David: And let's push that up.

[29:35] Christopher David: Uh, perhaps the Alex for braving.

[29:38] Christopher David: The fact that we have no documentation, no contributor guide.

[29:45] Christopher David: And yet you are your our first contributor on this repo.

[29:49] Christopher David: Thank you.

[29:51] Christopher David: Let's see.

[29:56] Christopher David: I was surprised our CI did not catch that.

[30:14] Christopher David: I'm going to go to the file.

[30:24] Christopher David: I'm going to go to the file.

[30:29] Christopher David: I'm going to go to the file.

[30:32] Christopher David: I'm going to go to the file.

[30:35] Christopher David: I'm going to go to the file.

[30:38] Christopher David: I'm going to go to the file.

[30:42] Christopher David: Um.

[30:48] Christopher David: Fortunately, we don't need to await for it.

[31:12] Christopher David: Um, push that up and then while that goes, it just makes sure,

[31:15] Christopher David: locally, that it built.

[31:16] Christopher David: See as it does.

[32:12] Christopher David: Nostor HTMX.

[32:21] Christopher David: Oh, I didn't know via job did some HTML stuff.

[32:24] Christopher David: That doesn't surprise me.

[32:29] Christopher David: Oh.

[32:35] Christopher David: I got to look into this.

[32:41] Christopher David: Yo.

[32:44] Christopher David: Nostor HTMX.

[32:46] Christopher David: Nice.

[32:48] Christopher David: Okay.

[32:49] Christopher David: That succeeded.

[32:52] Christopher David: What happens if I go here now?

[32:55] Christopher David: Boo.

[32:56] Christopher David: Yeah.

[32:57] Christopher David: That will counter.

[32:59] Christopher David: I counter.

[33:01] Christopher David: Very nice.

[33:04] Christopher David: Very nice.

[33:13] Christopher David: Um.

[33:16] Christopher David: Out of curiosity.

[33:19] Christopher David: Is this.

[33:20] Christopher David: Oh, gosh.

[33:21] Christopher David: No, I actually don't yet want to implement the.

[33:25] Christopher David: Testing.

[33:28] Christopher David: Um.

[33:31] Christopher David: But the fact that we are automatically discovering a plugin on the live site that I put out on the local host.

[33:44] Christopher David: There's no database sink.

[33:46] Christopher David: It's just pulling for the release.

[33:48] Christopher David: Um, that's great.

[33:49] Christopher David: Okay.

[33:50] Christopher David: So what we have now is like proof of concept, but like the code for.

[33:55] Christopher David: We can publish a plugin event to the Nostor network and we can pull that in.

[34:02] Christopher David: So we're probably not going to do anything with this in the immediate future.

[34:09] Christopher David: Just while we get our own kind of like UX nailed, we're probably going to want to maybe evolve the event structure.

[34:20] Christopher David: Before we like submit some sort of formal approval process to get like more people wanting to use this.

[34:30] Christopher David: What will be an IP I think for Wasm plugins using Nostor.

[34:37] Christopher David: But this is awesome.

[34:38] Christopher David: Happy to award a bounty to Alex for this.

[34:41] Christopher David: And congrats on being our first contribute tour.

[34:45] Christopher David: All right.

[34:46] Christopher David: We'll go back to our agent workflow and push on word port release.

[34:51] Christopher David: It's isn't.