Transcription: OpenAgents Episode 059 - Agent Node Graphs, Litegraph Edition
June 9, 2026 ยท View on GitHub
Source: https://twitter.com/OpenAgentsInc/status/1749850948296380668 Wiki source: https://raw.githubusercontent.com/wiki/OpenAgentsInc/openagents/Video-Series.md Media title: OpenAgents - Episode 059: Agent Node Graphs, Litegraph Edition We build a UI to sh... Upload date: 20240123 Transcription model: mlx-whisper/mlx-community/whisper-tiny Generated at: 2026-06-01T20:06:16Z
Machine-generated transcript. Review speaker labels and wording before using this as quote-grade source material.
[00:00] Christopher David: Alright, we are building a UI for the back end functionality we finished in the last video,
[00:08] Christopher David: giving our agency ability to use Wazom plugins in their task and step workflows.
[00:14] Christopher David: We had previously done some work on this in episode 38.
[00:18] Christopher David: We built a little initial, like start of a library, we were going to call agent graphs,
[00:26] Christopher David: something that might be separate.
[00:29] Christopher David: And that was kind of inspired by Leva, this gorgeous, like GUI panel library from Pymondras,
[00:38] Christopher David: great React developer, collective thing, and then Light Graph, JS.
[00:43] Christopher David: And I found Light Graph originally seeing who is doing what for node graphs and comfy UI, which is this,
[00:53] Christopher David: stable diffusion GUIs, like what are they used?
[00:57] Christopher David: They use all of their, this stuff is powered by this library called Light Graph.js.
[01:05] Christopher David: And my previous thinking was, oh, this is just standalone, you know, vanilla JavaScript.
[01:11] Christopher David: I want to make it reactified, and so I was like, I'm actually getting together with the, like,
[01:16] Christopher David: React to GUI component from level, but now I don't want it reactified.
[01:21] Christopher David: And a standalone vanilla JS library may actually just be great.
[01:26] Christopher David: So in this video, I want to take a spin through the agent, or so through the light graph code base, you know,
[01:34] Christopher David: pull it in, see if this is something that will work for our purposes.
[01:41] Christopher David: So the like demo page linked from the repo there.
[01:47] Christopher David: The got some demos, different node types.
[01:53] Christopher David: This is all great. I wouldn't want to have to like rebuild this kind of stuff.
[01:58] Christopher David: And even though it feels like a little bit janky sometimes.
[02:04] Christopher David: We like a little bit janky.
[02:07] Christopher David: So yeah, we have some big ass agent workflows in here.
[02:13] Christopher David: And then you can like double click and add a node just searching.
[02:17] Christopher David: So imagine I want to like search for embedding or inference or I know I want to use mixed role and such.
[02:26] Christopher David: So I like that that people who know enough to know that they want to use mixed role here or embedding here,
[02:33] Christopher David: different APIs here, I want them to have that kind of out there fingertips and be able to kind of compose things.
[02:40] Christopher David: And it'll be cool that like the discoverability of other people's workflows will be awesome.
[02:45] Christopher David: So you don't have to like build your own everything from scratch.
[02:49] Christopher David: You can pull in someone else's study and like kind of reason about where you want to extend it.
[02:54] Christopher David: And then to be able to have these little like you tells up here for playing, you know, like running the workflow,
[03:00] Christopher David: maybe being able to, I'm guessing you can like inspect what the results are of these things.
[03:07] Christopher David: And step through live blah blah blah.
[03:12] Christopher David: So I think this it looks fine.
[03:16] Christopher David: It looks fine.
[03:19] Christopher David: So let's see if we can get.
[03:23] Christopher David: I guess maybe an objective for this video would be to see if we can get kind of like we had about into these.
[03:28] Christopher David: So this is an example.
[03:32] Christopher David: We kind of stopped on the previous one kind of showing we were passing the given like the tasks and steps that we did.
[03:39] Christopher David: In the last video for the concierge like here are those task and steps represented.
[03:44] Christopher David: As.
[03:48] Christopher David: Steps in these little widgets so about it input embedded put similar research call.
[03:53] Christopher David: If we could get a light graph version of that.
[03:58] Christopher David: Uh, working.
[04:00] Christopher David: That would be a good stopping point for this video.
[04:03] Christopher David: See if we can do that easily.
[04:05] Christopher David: Okay, so like graph.
[04:08] Christopher David: A library in JavaScript to create graphs in the browser similar to Unreal Blueprints.
[04:12] Christopher David: Those can be programmed easily and it includes an editor to construct and test the graphs.
[04:17] Christopher David: It can be integrated easily in existing web applications and graphs can be run without the need of the editor.
[04:22] Christopher David: Try it in the demo site.
[04:26] Christopher David: Windows on canvas 2D editor.
[04:33] Christopher David: Under the notes per graph customizable theme callbacks to personalize every option drawing event of nodes sub graphs nodes that contain graphs themselves.
[04:42] Christopher David: That's cool.
[04:44] Christopher David: Live mode system highs the graph but calls nodes surrender whatever they want useful to create you eyes.
[04:49] Christopher David: Graphs can be executed in the node.
[04:52] Christopher David: We'll do our own execution.
[04:54] Christopher David: Highly customizable nodes color shape slots vertical or horizontal widgets custom hiring.
[04:59] Christopher David: Easy to integrate in a JS applications one single found out dependency test.
[05:03] Christopher David: Okay.
[05:11] Christopher David: You do NPM or download the like graph.js and CSS like graph.js.
[05:18] Christopher David: So what we can do in our app is just throw that into only the page where we're going to be actually rendering it.
[05:30] Christopher David: First project.
[05:31] Christopher David: Yeah, let's try some copypasta here.
[05:35] Christopher David: So let's set up a.
[05:40] Christopher David: Page to test this on.
[05:47] Christopher David: See.
[05:51] Christopher David: Make any branch code like graph.
[05:56] Christopher David: And maybe for the test.
[06:05] Christopher David: Let's just make a view called like graph.
[06:34] Christopher David: And let's just copypaste this all in there and see what happens.
[06:38] Christopher David: Okay, I need to get the JavaScript.
[06:50] Christopher David: I'll get the main.js so we can inspect it.
[07:00] Christopher David: And I can mess bundling for now.
[07:03] Christopher David: We'll just put this in vendor like graph.
[07:10] Christopher David: Like graph.js.
[07:16] Christopher David: And we'll grab the CSS.
[07:30] Christopher David: And we'll just add the code.
[08:11] Christopher David: And I'll make this vendor.
[08:17] Christopher David: That might be right.
[08:41] Christopher David: Are we loading the JavaScript now?
[08:50] Christopher David: Oops vendor like graph.
[08:57] Christopher David: Okay.
[09:02] Christopher David: So unmanify that's 200 kb.
[09:05] Christopher David: Yeah.
[09:36] Christopher David: All right, we'll call this like graph demo.
[09:41] Christopher David: And now let's see if we can connect this to our agents.
[09:48] Christopher David: And no, it's like our agent of the step in tasks.
[09:56] Christopher David: And for our previous version of this, we had data being passed to what we called the agent view
[10:23] Christopher David: with all the data that we would need.
[10:28] Christopher David: I think.
[10:31] Christopher David: So remember where we put that agent controller.
[10:36] Christopher David: Yeah.
[10:40] Christopher David: So on the show agent page, we'll do that same thing.
[10:51] Christopher David: We have agent controller.
[10:56] Christopher David: Oh, we have us already.
[10:58] Christopher David: So now just instead of rendering the agent view.
[11:06] Christopher David: Let's render a new components.
[11:16] Christopher David: All right, let's first get the route set up for that.
[11:43] Christopher David: All right, let's go into our routes web and just see how we did it there.
[11:58] Christopher David: There we go.
[12:06] Christopher David: So we have the agent controller.
[12:13] Christopher David: And let's make sure what they're seeder doing these days.
[12:19] Christopher David: It's seeding the plug and seeder.
[12:29] Christopher David: Let's actually change that to see the, what do we call it, the concierge with plug-in seeder.
[12:37] Christopher David: So we're seeding a plug-in and the agent, the task and all the steps for an actual workflow.
[12:45] Christopher David: That's what we did in the last video.
[12:49] Christopher David: Concierge with plug-in seeder.
[12:57] Christopher David: Okay, let's reset our database and seed.
[13:07] Christopher David: Concierge with spellets.
[13:18] Christopher David: And then motions see.
[13:30] Christopher David: Okay.
[13:34] Christopher David: So what happens if I go to agent slash one?
[13:37] Christopher David: Okay, that comes up.
[13:41] Christopher David: And I think I should hear have the agent name properly.
[13:46] Christopher David: The concierge.
[13:47] Christopher David: Okay.
[13:48] Christopher David: So let's give our friend chat, jippity something to do here.
[14:11] Christopher David: We want to show a show agent page in our larval blade hgmxdill end using this controller.
[14:26] Christopher David: And we want it to render the relevant step data connected to each other, sorted by the order of the steps.
[14:40] Christopher David: Using like graph, adapting this demo code.
[15:01] Christopher David: You can infer the shape of the data from these tests.
[15:18] Christopher David: Agent step.
[15:23] Christopher David: Task.
[15:33] Christopher David: Please write the agent view blade up.
[15:44] Christopher David: Certainly.
[16:10] Christopher David: You're taking so long.
[16:20] Christopher David: This is pretty cool.
[16:40] Christopher David: That for each work in a job script like that.
[16:59] Christopher David: Oh, yeah.
[17:16] Christopher David: Agent details.
[17:21] Christopher David: A chatbot that response user message after consulting on knowledge base.
[17:29] Christopher David: Agent balance zero task and steps.
[17:37] Christopher David: That's not bad for 10 minutes of work.
[17:42] Christopher David: Let's save this as initial agent view nodes.
[17:52] Christopher David: Yeah, so yeah, just write on the code.
[17:56] Christopher David: So thanks that is not bad except you drew a line from what I presume is the task node.
[18:05] Christopher David: What's that initial node?
[18:13] Christopher David: And I don't see.
[18:21] Christopher David: Why not do we not have task name?
[18:32] Christopher David: Oh, first of all, that's not an agent task is task.
[18:47] Christopher David: Oh, task factory.
[18:57] Christopher David: So we added a name to our task.
[19:00] Christopher David: We do it's nullable.
[19:02] Christopher David: So task.
[19:06] Christopher David: Hang on, hang on.
[19:07] Christopher David: We're using a factory.
[19:08] Christopher David: We're using the concierge with plug and cedar.
[19:14] Christopher David: Oh.
[19:26] Christopher David: Respond with vowels.
[19:31] Christopher David: All right, I want to see that on the screen.
[19:33] Christopher David: Why this?
[19:37] Christopher David: Let's see that refresh.
[19:50] Christopher David: Okay.
[19:51] Christopher David: Respond with vowels.
[19:59] Christopher David: Fucking cool.
[20:08] Christopher David: That does not, that does not matter except you drew a connector line from each step to the task.
[20:19] Christopher David: And I want each step connected to each other.
[20:27] Christopher David: One after the other.
[20:29] Christopher David: And we can maybe do notes for like input output.
[20:35] Christopher David: And then we can see the difference between the two.
[20:42] Christopher David: And then we can see the difference between the two.
[20:55] Christopher David: All the time I spend sitting here.
[20:57] Christopher David: I mean, it's, I'm of course spoiled because a year ago this didn't really exist.
[21:01] Christopher David: But all the time that I'm sitting here like I want agents doing this stuff for me.
[21:06] Christopher David: I want agents building out this code base.
[21:13] Christopher David: And then we can see the difference between the two.
[21:21] Christopher David: Come on.
[21:22] Christopher David: Copy paste.
[21:43] Christopher David: I can't really believe it ever.
[21:52] Christopher David: Okay, so this is, this is not working, this is not getting me any.
[22:14] Christopher David: First was null and then it seems to think that it's connected although it's not.
[22:19] Christopher David: Why would it work there and not there.
[22:49] Christopher David: Oh, make sure they have compatible output and input ports for connections.
[23:04] Christopher David: Let's see if we can get it on trying to.
[23:07] Christopher David: And then we can try feeding it to like graph docs.
[23:19] Christopher David: And then we can see the difference between the two.
[23:26] Christopher David: And then we can see the difference between the two.
[23:33] Christopher David: And then we can see the difference between the two.
[23:39] Christopher David: And then we can see the difference between the two.
[23:47] Christopher David: Task index for each.
[23:56] Christopher David: I don't know that you can do that.
[24:06] Christopher David: Oops.
[24:12] Christopher David: That gives this.
[24:16] Christopher David: I don't think that syntax is supported.
[24:20] Christopher David: Rewrite it.
[24:35] Christopher David: That looks better.
[24:41] Christopher David: I don't think that's going to work.
[24:51] Christopher David: I don't think that's going to work.
[24:56] Christopher David: I don't think that's going to work.
[25:01] Christopher David: I don't think that's going to work.
[25:04] Christopher David: I don't think that's going to work.
[25:08] Christopher David: I'm missing the main task.
[25:14] Christopher David: Okay, so here's what we're going to do.
[25:15] Christopher David: We're going to go to the read me.
[25:37] Christopher David: I like the more logical positions of the nodes,
[25:45] Christopher David: but there are still no connections between them.
[25:49] Christopher David: We may need to use a different base node type.
[25:57] Christopher David: Let's define our own node type.
[26:07] Christopher David: That's exactly right.
[26:12] Christopher David: Thank you.
[26:22] Christopher David: Oh, yeah.
[26:27] Christopher David: I like it.
[26:36] Christopher David: I like it.
[26:58] Christopher David: There we go.
[27:07] Christopher David: What a text.
[27:10] Christopher David: Oh, my goodness.
[27:15] Christopher David: Oh, my goodness.
[27:27] Christopher David: Wow.
[27:37] Christopher David: Okay.
[27:39] Christopher David: Connect nodes together.
[27:45] Christopher David: And that comes here.
[27:48] Christopher David: That works great.
[28:06] Christopher David: Now let's please add relevant fields to that step node.
[28:17] Christopher David: Editable where you think it makes sense for the other step.
[28:26] Christopher David: Other fields on our step model.
[28:32] Christopher David: And let's give it the entire step model.
[28:35] Christopher David: What are we doing?
[28:45] Christopher David: Thank you.
[29:15] Christopher David: This is awesome.
[29:25] Christopher David: Let's go back here.
[29:36] Christopher David: Okay.
[29:58] Christopher David: This needs to be tweaked, but like,
[30:01] Christopher David: wow.
[30:15] Christopher David: That looks great, but we need to populate the node with the node data from the database.
[30:29] Christopher David: And we need to create a node.
[30:39] Christopher David: Thank you.
[31:09] Christopher David: Thank you.
[31:34] Christopher David: Thank you.
[31:49] Christopher David: Did not work.
[31:50] Christopher David: Let's see what's going on here.
[31:55] Christopher David: Do I even have this?
[31:56] Christopher David: Yeah, I've got the information.
[32:01] Christopher David: I can see the name behind there.
[32:21] Christopher David: Okay, can I change the node title?
[32:31] Christopher David: I have curiosity.
[32:36] Christopher David: Does that do something?
[32:42] Christopher David: Oops.
[32:46] Christopher David: There we go.
[32:57] Christopher David: First the order.
[33:06] Christopher David: Yeah.
[33:11] Christopher David: I don't need it to do that.
[33:33] Christopher David: I want to offset this way instead.
[33:48] Christopher David: I don't need it to work.
[34:10] Christopher David: I don't need it to work.
[34:22] Christopher David: I see.
[34:31] Christopher David: How do I do full screen?
[34:44] Christopher David: Like graph.
[34:50] Christopher David: I don't need that.
[35:02] Christopher David: I've seen it to beat bigger.
[35:11] Christopher David: Oops.
[35:25] Christopher David: All right.
[35:26] Christopher David: I'll just hard get that for now.
[35:27] Christopher David: See that out later.
[35:41] Christopher David: Okay.
[36:06] Christopher David: I'm positioning looks better.
[36:16] Christopher David: Now why is it not filling in the properties?
[36:26] Christopher David: I don't need it to fill in the properties.
[36:36] Christopher David: I don't need it to fill in the properties.
[36:41] Christopher David: Okay.
[36:51] Christopher David: Okay.
[37:01] Christopher David: Thank you.
[37:31] Christopher David: I'm going to guess if this might not be the best way to do it.
[38:23] Christopher David: Thank you.
[38:53] Christopher David: There we go.
[39:08] Christopher David: Okay.
[39:18] Christopher David: Let me make that look nicer.
[39:48] Christopher David: Okay.
[39:59] Christopher David: and
[40:14] Christopher David: I don't know, like, care. Cool.
[40:18] Christopher David: Some of these people might not want to be editable, like maybe order is not something you type in, maybe it's just something you drag around.
[40:26] Christopher David: Yeah, add a toggle.
[40:30] Christopher David: Yeah, toggle the, uh, the thing for the things.
[40:35] Christopher David: Well, as you can see, we can basically specify the behavior that we want feed our docs and code into
[40:43] Christopher David: the chatty for tea and it will do it for us.
[40:47] Christopher David: I think that is a good stopping point for this video. Clearly, this is, uh, seems pretty perfect for what we want.
[40:55] Christopher David: And next, I guess we'll, uh, maybe I'll do some code clean up offline and then let's get it so that we can run a flow in this editor and see the output.
[41:13] Christopher David: Cool.
[41:14] Christopher David: Thanks for watching.