AI Engineer World's Fair 2025
AI Pipelines and Agents in Pure TypeScript with Mastra.ai
About this talk
WorkOS presenters Nick Nisi and Zack Proser lead a hands-on workshop building an AI-powered meme generator with Mastra and TypeScript. They demonstrate composable agent workflows, structured outputs, OpenAI and Imgflip integrations, Git-based workshop checkpoints, and Model Context Protocol tooling, while attendees and an additional Mastra participant contribute questions and implementation discussion.
Chapters
- 0:16Workshop introduction, presenters, WorkOS, and the meme-generator objective
- 8:14MCP concepts, production patterns, API integrations, and workshop materials
- 30:12Workflow step composition and structured JSON results
- 1:09:15API-key challenges, audience questions, and DAG-style workflows
- 1:19:57Claude and MCP demonstrations, meme generation, and framework discussion
- 1:41:20MCP server configuration and workshop conclusion
Talk transcript
- 0:00
[upbeat music] All right, should we get going?
- 0:16
Let's do it.
- 0:16
All right. Welcome, everyone. Uh, this is AI pipelines and agents in pure TypeScript with Mastra.ai.
- 0:24
Uh, today's mission, do you wanna talk?
- 0:25
Sure. Um, so what we're gonna do today is we're gonna build an AI-powered meme generator, and, uh, yes, that's humorous. Sounds like a toy, but the patterns that we're gonna use here, uh, both with the Mastra framework and in terms of using TypeScript to build a production agent, are the same patterns that, that we've used and that
- 0:40
you can use, um, to deploy to production with, uh, AI applications. Um, so the rough format that we're gonna follow here is we're gonna do, like, a twenty-minute intros and concept just to make sure everyone's level set.
- 0:50
Feel free to, you know, stop us, ask questions, and then, um, the majority of the, the time this workshop is gonna be spent coding, uh, together, um, collaboratively, and then we'll have about ten minutes wrap up and QA, and a, a little fun demo for you at the end to get some swag.
- 1:03
Yep. And, uh, yeah. W-- So this is a true workshop format. Uh, we'll be building together. If you have questions, uh, reach out to us. We're happy to help.
- 1:11
And, uh, just so you can get kinda a head start on it, if you go to Workshop AI agents with Mastra, s-- uh, the Slack channel in the AI engineer Slack, all the materials are in the pinned link there, and we can have discussions there as well continuing. [clears throat]
- 1:26
Uh, so we work at a company called WorkOS. Um, we build developer tools and make enterprise features happy-- uh, enterprise developers happy with easy-to-use tools like SSO and SAML, directory sync, audit logs, fine-grained auth.
- 1:38
Uh, and we're really getting into AI, uh, and securing your AI, uh, things like securing your MCP, attaching identity to those agents so that they can act on your behalf and know who you are.
- 1:48
Yep. Um, another good way to think about WorkOS is if you-- Like, let's say Nick and I built the ultimate app this weekend, we're ready to go sell it, and then the first time we, we demo it to somebody, they say, "Can you give us a single sign-on for our two thousand users over here and a different
- 1:59
path over here?" Um, so then we would go and buy WorkOS or use WorkOS, drop the JavaScript in, and we would have those features, uh, ready to sell.
- 2:08
Uh, so my name's Nick Nisi. I'm developer experience at WorkOS. Uh, I'm also a host on the dysfunctional.fm podcast, formerly JS Party. Any JS Party listeners ever?
- 2:18
Yep.
- 2:19
Nice. Um, uh, I also do conference MC, MCing and speaking. Um, I'll be at Squiggle Conf MCing that, uh, which is a dev tools focus conference in Boston later this year.
- 2:30
Uh, I'm also a TypeScript en-enthusiast, as you'll see. I'm a Vim user, by the way, and I'm Nick Nisi everywhere.
- 2:37
Hey, everyone, I'm Zach. I'm really excited to be here with you all. I've mostly been an application and infrastructure developer, uh, my career, but for the last two years, I've really been focused on GenAI, uh, MLOps, and then retrieval augmented, uh, generation pipelines or RAG pipelines.
- 2:50
So, um, yeah, really excited to be here and building with you today.
- 2:57
Uh, okay. So what is Mastra? Um, I'll, I'll just embarrass, uh, two folks quickly and just point out that we have some core Mastra team members here, so this is very exciting.
- 3:04
So you'll not only be able to get some assistance from us, hopefully, but also, uh, from the Mastra core team for any questions that go over our heads. Mastra is a framework, um, and so it's a framework for building, you know, production AI applications in an agentic manner.
- 3:17
And these are the components that we're all going to learn and get hands-on with today in this workshop and understand very well by the time we leave here. So we're gonna build workflows.
- 3:24
Just think of them as, um, composable and typed pipelines, which are very exciting. Uh, tools that you can optionally use, uh, and give to agents. Agents are like the interfaces that we're chatting with.
- 3:34
Um, they're the ideal interface for humans to work with. And then, uh, the Mastra framework does some incredibly cool things o-out of the box with batteries included that we'll see.
- 3:42
Um, so not just, you know, a playground that makes it super easy to debug everything, but built-in persistence, memory, observability, and even, um, evaluations that you can determine over time how healthy your pipeline is, which is critical for, you know, successfully deploying an AI application in production.
- 3:58
Yep. And we'll be, we'll be focusing on, uh, pieces of this. We don't have time in two hours to go over everything, but there's a lot of really cool tools in there.
- 4:05
Uh, so we're gonna be focusing on some core concepts for the, uh, example app that we're building, um, and we'll kind of understand some of those building blocks as we get going.
- 4:15
Cool. So let's start off, uh, what are workflows? Um, workflows are composable pipelines. So the way that I think about this is I map it in my head mentally to if a coworker says, "I just keep on having to go scrape the site and download people that look interesting and look up their info and then take an
- 4:28
image and then write an email." You know, that sounds to me like a, a workflow, right? It's a pipeline of discrete steps. You want them to happen in a certain order.
- 4:35
And as we can begin to see with this example code on the screen, you can even have control over transforms that happen in the middle of your pipeline. So the idea is you're chaining multiple steps together to get some work done.
- 4:46
You can pass data between steps. And then very importantly, because as we know, LLMs are incredibly powerful, but they're non-deterministic. And so how do we rely on their output?
- 4:55
How do we coerce their output into something that we can actually build against dependably? That's, uh, where we're going to validate inputs with Zod, but we're also going to learn how Zod can even coerce, uh, at runtime and then handle error grace-- uh, errors gracefully.
- 5:09
But really, the key i-idea here is that workflows are a discrete set of ta-- uh, steps to get a task done.
- 5:16
Yep. And the, the API is very similar. Uh, it reminds me of, like, RxJS, like very similar. You're starting with one thing and then doing something and then mapping to something else and then doing something else, uh, and running through all of that to give a little bit of determinism to the, the call of all of these
- 5:31
tools as they're being called by your agent or some other tool.
- 5:37
Um, and speaking of tools, uh, tools are just functions that agents can call. Uh, they can give you things like file system access, API calls, database queries, uh, custom business logic.
- 5:46
If you've used MCP, uh, MCP calls tools, and, uh, so that's like a really cool thing. It gives the, the LLM abi-- the ability to act on your behalf or to read in data that it doesn't just inherently know from its latent space, uh, so that it can do more things and be more powerful for you.
- 6:04
Yep.
- 6:06
One-
- 6:06
Absolutely. I have to say that, you know, we, we think of like, uh, AI systems getting better the more data and context they have access to. And, and one of the things that MCP is really excellent at doing is, is giving-- granting context to Claude, to OpenAI, uh, that it normally wouldn't have, and that's not in its
- 6:20
training data.
- 6:21
Yep. And one note for today's workshop, we did build everything using tools, uh, but then we switched as we brought in an agent, uh, to call, and we had the agent call a workflow rather than the tools independently.
- 6:32
So we wanted to touch on them there. There's something powerful that you should look into on your own, uh, and figure out your use case for them. But we didn't really use them in, uh, the final version of this workshop.
- 6:44
Um, and then finally, what are agents? So w- we've all probably seen and used the chatbot, um, type demos, but, you know, the way that we're thinking of agents, uh, these days is really that they're kind of an ideal human interface.
- 6:54
So if I set up a workflow that's a deterministic set of steps to get some discrete task done for my colleague, let's say that my colleague is in a hurry, or they're busy, or they're doing this while they're on the phone, or they're not technical, then a chatbot can be an ideal interface for that human colleague, right?
- 7:09
Because they can describe their problem or their issue, what they need with natural language, and then the system can be smart enough to actually do what they want. And so this is the core-- this is a very, uh, core kind of pattern that we're seeing in, in a lot of, um, AI applications, and so we're actually going
- 7:24
to build this and understand this here. So after we create our workflow, we'll create an agent, and we'll grant that agent the ability to call the workflow.
- 7:31
Yep. And agents was something that when I first heard of them, like, it-- like in a lot of these things, like the, the naming adds more confusion than is really necessary.
- 7:40
And we spent like an hour on the phone call, and I kept being like, "But what is an agent? What is-- how is that anything beyond just a simple prompt?"
- 7:46
And it's really like the marriage of that prompt plus the workflows or the tools that it can use, uh, to do things in a specialized way.
- 7:53
Yeah. The other way I think of it is like if, you know, in the past, maybe five, ten years ago, you might have written deterministic-- more deterministic software. W- with agents, you're expecting that the system overall can kind of interpolate or can understand, introspect what's the state, and then make a decision, um, in like a graph sense
- 8:09
of we need to actually go here. So, um, that's the other piece that you'll hear when you're discussing agentic systems.
- 8:14
Yep. Cool. Uh, another thing, MCP or Model Context Protocol. I told you I'd show you how to spell it. Um, this is a way for you to-- It's an open standard for a way to bring like universal plug-ins or these tools to AI agents so that they can be called.
- 8:30
Uh, this was really developed, uh, by Anthropic, and you can use it easily in Claude Code, uh, among other places like Cursor, um, Windsurf, I think.
- 8:39
Yeah.
- 8:39
Uh, and even OpenAI is, is, uh, adopting these tools as well. So it's really a nice, easy-to-use API that these tools know how to use and call.
- 8:47
And to also make it concrete, like you-- So you work on the DX team at WorkOS. You're constantly crushing a ton of, of bugs in all various SDKs, and you use Claude Desktop, right?
- 8:56
Yep.
- 8:56
And so like what changed the day that you enabled the, the GitHub MCP server for Claude Desktop?
- 9:01
Yeah. The GitHub MCP server was the one that really like made me understand what MCP is doing because I was like, "Why do I wanna do this? How is this different than just like having access to GitHub and, and, you know, calling all of that?"
- 9:11
But it's really an easy way for me to have a conversation with Claude and for it to bring in the context that it needs based on the tool-- the, uh, issue that I'm working on.
- 9:20
For example, if you have a, an issue on a, a GitHub repo, I can just say, "Hey, can you check out that issue and tell me, uh, you know, here's my example app.
- 9:27
Tell me how I might reproduce this." And it can like go figure that out, pull in the comments, understand what's going on, link out to other repos or other examples from there, and then, uh, look at my example repo and tell me how to, um, to make that change.
- 9:44
Cool. [clears throat]
- 9:46
Speaking of MCPs, uh, we built a l- a fun little demo called mcp.shop. You can go there now, and you can use MCP to order a shirt, and it's the only way that you can order this shirt.
- 9:57
And for the low, low price of zero dollars, you can get an MCP shirt. The, the point is you just have to use the MCP. So it's just a fun demo to, to try out MCP-
- 10:05
Yeah
- 10:05
... play with it. You can add it-- Uh, it has instructions for adding it into Claude or into any of the, um, MCP servers-- uh, sorry, MCP clients that support it.
- 10:14
Yep. Totally. Uh, also mention that recently-- So MCP is, you know, one of the protocols that's really hot right now in, in the AI space. Um, and a lot of folks are, are taking notice.
- 10:24
We recently had an MCP night, and it was at the Exploratorium. It was a ton of fun. We, we blew out like the capacity of the event, um, and we had people like lined up around the block, which we didn't expect.
- 10:34
Um, we're almost certainly going to do something like this again soon. So, uh, be sure to follow us if you wanna hear about it. Um, and yeah, we'd love to see you there in the future.
- 10:42
Yeah.
- 10:45
All right. Um, what we're gonna actually build today though, to, to get into it, is the AI meme generator. Um, so we're going to-- Uh, if you imagine the input to this is going to be you venting any random frustration, workplace frustration, frustration with your colleagues or boss, um, into the pipeline, and, uh, the workflow will process
- 11:02
your frustration. Um, it's going to find the best base meme that already exists that would be ideal or might be humorous. It's going to think about how to, um, actually edit and, and create new captions, and it's going to publish a new meme at a stable URL that's, uh, available for you.
- 11:17
And again, I just mentioned like this is a toy. We've got two hours. It's a quick demonstration. But the patterns that you see here and the Mastra framework are, are definitely, you know, AI, um, production ready.
- 11:26
Uh, we'll use OpenAI just for the understanding, and Imgflip is the only other API involved here, which you can get free, uh, username and keys for that, and there's information in the workshop MD file for that.
- 11:36
Yep. Yeah, and it's a really fun demo just to kinda showcase some of the tooling that you can do with Mastra, uh, and how easy it is to really get all of this going, but also not just to get your, your tools going, but to test them very easily along the way.
- 11:50
So we can start with just like a single step in a workflow and test that without an agent, and then we can test the agent independent too. And we can do all of this and not have to have like a full picture, uh, to understand how it's going to work, but kind of iterate along the way.
- 12:03
And the tooling that Mastra provides is just super nice. It's why we love it. We're also huge fans of TypeScript, which makes it awesome as well. And so yeah, it's just nice and easy.
- 12:12
Yep, absolutely. Okay, this is the way that we've structured this, uh, workshop. And so, you know, we weren't really sure the level that everyone's coming in at, and some folks are experts, and some folks are just getting started.
- 12:23
So, uh, it's self-paced learning, and you can go at the speed that you wanna go. If you wanna go and fly all the way through it, you're free to do that.
- 12:30
Workshop MD in that repo is the entirety of this course, and so you can kind of follow along that way. And then we also created, uh, Git branch checkpoints for you.
- 12:39
So in case, for example, you're to fall behind, uh, you get stuck on something, and then we get to phase two, you can also skip to phase two and stay, stay with everybody just by, you know, Git checking out the right branch.
- 12:49
Um, if you get on s-- uh, if you get stuck at any point, we're here to help, so please raise your hand. We'll come around.
- 12:53
Come to the mics.
- 12:53
And then if you-- Yeah, if you have questions that other folks likely have or might benefit from in the future, please be sure to come up to a mic and, uh, we'll make sure that your question is heard.
- 13:03
Uh, and then, you know, the other way we're thinking about this, this workshop is, again, it's, it's a-- anyone can read online, we can all talk online anytime, but we're actually here in person today.
- 13:10
So, you know, please shout out questions and raise your hand and ask us things you wanna know. Um, we feel that understanding is more important than completing stuff here, and it's okay to explore, so.
- 13:20
Yeah. We're all very new to this. This is all very new stuff, very new tools, and it's very cool. It's also changing every single week, so it's, uh, it's fun, like, snapshot in time to play with this stuff.
- 13:31
Um, and if you have, uh... L-like you said, you, you don't have to finish it. Uh, we do have the whole workshop.md that you can follow step by step all the way through to the end, uh, and then those, those branches to, um, to get us there.
- 13:43
And if you just look at the main branch, that's the completed version, but it's more fun to build along the way.
- 13:49
So with that, let's get started. Um, like I said, everything is in the, uh, workshop AI agents with Mastra channel on Slack. So if you're in there, uh, you can go grab it.
- 13:59
There's also, uh, the Git clone command right there to grab the repo, and, uh, we can get started with that. Um, just go to the step slash step zero branch.
- 14:08
That has everything kind of as a baseline to start from, uh, and then you can npm install from there and get going with the workshop.workshop.md. So here, I think we can stop and, uh, you, you can get started.
- 14:20
We'll give you some time to build, um, but if there are any questions, um, please come to the mics, and we'd be happy to continue the chat.
- 14:29
I had a quick question.
- 14:30
Yeah.
- 14:30
Um, so the-- Before you, you showed the example of an agent-
- 14:33
Uh-huh
- 14:33
... and it had workflows. That's kinda different from what I'm used to seeing in these, like, agent SDKs where they usually have tools.
- 14:40
Mm-hmm.
- 14:40
So is the workflow kind of like a tool that I can use or?
- 14:43
Yeah, I mean, to-- I feel like, correct me if I'm wrong here, I feel to some degree that, like, the create tool and create step APIs are s- are somewhat similar.
- 14:49
And it-- in my mind, at least right now, it's sort of like an organizational preference. Like, if I have a simple, um, use case, and there might be three different tools, and I want the agent to decide the right time to call those tools, I might create three separate mostly fun-- essentially functions, name them tools, grant them
- 15:05
to the agent, and then start chatting with the agent and ask for things and let the LLM determine at runtime which, which ones to call. The difference is with the workflow is I'm saying, "I always want you to proceed in exactly this sequence with these steps and these transforms."
- 15:18
And then you can also, in Mastra at least, you can optionally grant an agent the ability to call that workflow. So-- And then also in my conversation recently with, with Sam, that's kind of like, you know, these are, these are various tools that you can build up and, and kind of assemble into the exact, uh, paradigm that
- 15:32
you need.
- 15:33
Can you do both tools and workflows? Like-
- 15:36
I think so. Yeah, you can grant-- 'cause, uh, it's bas-- like, you're, you're passing, like, this giant gi-- uh, J-JSON object to the agent saying you can call these tools, and you can call these workflows.
- 15:44
And then-
- 15:44
Cool
- 15:45
... the tricky part is, like, if you give something a hundred tools and then ask an LLM, like, "You've got a hundred tools. Let's, like, go to Disneyland," I don't know exactly what we're gonna get out of that. [laughs]
- 15:54
But that's where, like, the determinism of a, of a pipeline can be-- of a workflow can be beneficial.
- 15:59
Cool. Thanks.
- 15:59
Thanks. Great question. Um, anybody wanna raise their hand? Any, uh, and there's no shame here, anyone having difficulties getting started, um, need help with that?
- 16:10
Initial permission issues. Should we expect some of that or no?
- 16:13
No, not at all. Uh, what's the permission issue? I, I'll come by.
- 16:18
Uh, yeah, the repo should be fully public.
- 16:20
Yep.
- 16:20
Um, so should be able to clone that.
- 16:25
While Zach's doing that, I will also bring up the, um, Mastra docs, um, because these are-- Oops. These are wonderful. Uh, they're really easy to go through. But also, as, uh, Zach and I were working, we, uh, discovered something that was actually really [laughs] awesome, and that is the MCP doc server.
- 16:44
Um, once I installed this, things like, uh, my tooling got a lot smarter and knew how to work with Mastra, and it made things way easier. Uh, so if you get stuck or if not, and you wanna see MCP in action, I would recommend installing, uh, the Mastra tools for your IDE.
- 17:02
I installed it into Cloud Code and into, um, Cloud Desktop and played with it in both, and it immediately knew a lot easier.
- 17:11
Okay. Gotcha. You-- Can you clone with HTTPS?
- 17:15
Hmm?
- 17:15
Can you clone, um, not over SSH? Try the HTTPS.
- 17:25
What's missing?
- 17:26
Um, so if you, if you go back to the repo, uh, look at the GitHub repo, like in the browser, it should have a different option.
- 17:34
Oh, you found it. Yeah.
- 17:36
So what do I do?
- 17:37
Um, so go to github.com WorkOS, and then mastra-agents. You have to change that from a colon to a forward slash.
- 17:45
So, like, grab this whole-- Grab everything after the ampersand.
- 17:51
There's no ampersand.
- 17:53
At the at, sorry. Yeah. Grab everything after that.
- 17:55
Yeah. And then go up here. And so, uh, make-- But you gotta change the URL to do HTTPS.
- 18:04
And then github.com. Yep, and then change... Yep, hit that.
- 18:11
Sorry, I'm having trouble seeing it.
- 18:13
Oh. You know what?
- 18:15
Oh, that's why. [laughs] Thank you. Um, it searched for that URL instead of going directly. So make that, uh, HTTPS. And then change this from a colon to a forward slash, and then get rid of that final git.
- 18:26
That should go. Okay, now this will be up there.
- 18:35
And then the local should have that option in it. [whispering]
- 19:14
We need to pop an HTTPS version of the GitHub repo because people are getting confused and they don't have SSH configured on their work laptops.
- 19:21
Got it.
- 19:22
And no one knows how to get to repo browser.
- 19:24
Yeah. Anybody else, uh, any setup issues or
- 19:31
everyone, everyone good?
- 19:35
I'll post the HTTPS clone command in the-
- 19:39
Yeah, thanks.
- 19:40
Uh, in the Slack as well.
- 19:41
Yeah. In case anyone's having trouble with, um, SSH clone 'cause you're on a work laptop, we'll, uh, put in the instructions for HTTPS too.
- 19:57
Do you wanna do like a time, a timer?
- 19:59
What's that?
- 20:00
Do you wanna do like a timer set? Like a-
- 20:03
Oh, yeah, we're doing it. We're ahead by five minutes. Cool.
- 20:12
All right, we're gonna do about five more minutes set up. Um, feel free to raise your hand if you have an issue. Yeah.
- 20:17
Connection is pretty bad, so just [static] yeah.
- 20:20
Oh, sorry. What's that?
- 20:22
The connection is pretty bad.
- 20:24
Oh.
- 20:25
Also-
- 20:25
The Wi-Fi's bad.
- 20:26
The, yeah, the comment is the, the Wi-Fi is bad. Uh, I wish we could do something about that. [laughs]
- 20:31
Sorry. Sorry. Yes.
- 20:33
Classic conference Wi-Fi.
- 20:39
For Cloud Code.
- 20:40
For Cloud Code, yeah. Um, you-- If you open Cloud Code, you just need that. You still need that, like, JSON object, I think. I mean, that's what I use for my fancy client.
- 20:48
But it should, uh, yeah.
- 20:51
All right,
- 21:07
sixty-five
- 22:08
or so. Sixty-five.
- 22:09
Seventy-four.
- 24:19
Gonna do about two and a half minutes until we move on.
- 24:23
Anybody have any issues? Everyone good?
- 24:25
Still slow.
- 24:27
Slow internet still? Okay.
- 24:28
Yeah.
- 24:30
All right.
- 24:30
We can give more time. We got-
- 24:32
We'll do a queuing system. Everyone turn off their Wi-Fi, one person download packages [laughing] move to the right
- 24:37
Put it on a flash drive, and then we'll pass it around.
- 24:39
Yeah, that's, that'd be kind of sneaker net. [laughing]
- 24:43
Um, the repo, the repo is seventy-seven percent cloned.
- 24:45
Nice.
- 24:46
Oh. [laughs]
- 24:46
Yeah. Let's get in there.
- 24:47
This guy clones. [laughing]
- 24:52
We will-- We, we can get more time.
- 24:54
Excellent. These are great numbers. [laughing]
- 25:03
The end goal of this first step is really just seeing the playground, and we'll kinda show that here in a minute.
- 25:08
Yeah.
- 25:08
Um, but it's-- there's not gonna be any tools or agents or anything yet.
- 25:11
Yeah.
- 25:11
And we'll build those out. Uh, but it's just seeing kind of what Mastra gives you right out of the box so that you have everything you need to get going fast.
- 25:20
Absolutely.
- 25:24
Let's go. Let's go sixty.
- 25:26
Question.
- 25:27
Go to sixty.
- 25:28
Yes.
- 25:29
Why, why Mastra compared to all the other frameworks?
- 25:31
Oh, I can tell you why I'm excited about it.
- 25:33
Why? Tell me about it.
- 25:34
So the first couple of things I heard were pure TypeScript, right? And I'm already kind of bought into that with-- I like compilers finding my errors before I ship them.
- 25:41
Um, then there's, uh, the Vercel AI SDK that the, I think that the team wisely chose to build upon. Um, my experience with that has been excellent. It's kind of mind-bending to kind of wrap my head around.
- 25:51
But the idea that I can multiplex between any LLM provider, I mean, when, when GPT 4.0 came out, I shipped a two-character change in a PR, and my entire pipeline got way smarter.
- 26:02
And that was the day where I was like, this, this SDK. Then I found out that the, you know, Master came out, and it was like Vercel AI SDK and, uh, pure TypeScript.
- 26:12
And, uh, I can tell you that there's a ton of stuff that they put in there, like including evals that are just, uh, baked in. So that's one of OpenAI's own recommendations about the right way to deploy agents at, at enterprise and at scale, uh, is to start with a evaluated pipeline.
- 26:27
Um, and I can also-- I can tell you from working in like vector database companies too, that that's-- people that are actually in prod are, are using evaluations to determine the health of their pipeline and the health of each individual generation.
- 26:37
And Master has those baked in, so it's like import and then, like, also evaluate my pipeline. And then finally, so it's like because of that, um, then it's on the Vercel AI SDK, then being able to deploy it quickly, um, and then have a good experience that way too.
- 26:52
And, and honestly, what we'll see just in the, the local, uh, playground was pretty great. Um-
- 26:56
Okay.
- 26:57
Yeah.
- 26:57
Cool.
- 26:57
Very complete in my, in my experience. Like, every-everything has issues, but that was the experience I've had with it so far.
- 27:03
And real quick.
- 27:03
Yeah.
- 27:04
Uh, I think that for me, like, TypeScript's moving fast with that. I still don't have to figure out what pip is, so it's prolonging that. [laughing]
- 27:12
It's prolonging that. [laughing]
- 27:14
Um, but also, like, we had-- How many of you have had these, like, come to AI moments within your company? Like a big, "Hey, we're gonna have everybody-
- 27:22
Yeah. Everyone getting that-
- 27:22
"We're gonna work hard with AI."
- 27:23
"We're all doing AI now-
- 27:24
Yeah
- 27:24
"... whether you like it or not."
- 27:25
That Shopify post came out, and then, like, we had it, uh, my wife's company's had it. Like, everybody that I've talked to, like, "Oh, we're, we're gonna have this meeting where we're gonna do everything with AI.
- 27:34
We're gonna see how AI can, you know, solve every problem in every domain." And, um, after we had that, we did, like, an open workshop thing, and we had, uh, like, immediately, we showed Mastra, and then we had, like, ten people-
- 27:48
Ten. Ten engineers, yeah
- 27:49
... just, like, start going off with ten individual demos, and it was just like [snap] fast.
- 27:52
Mastra. And then 'cause they successfully built the exact workflow they were looking to build. And so then for me, the reason I'm the most excited about that piece of it is that I think it's an ideal platform for internal tooling.
- 28:01
I think all of us are rapidly experimenting with this stuff. And, you know, do I wanna live in a world where Nick's writing bespoke LLM scripts while I'm sleeping, and I wake up and I'm like, "What is this spaghetti mess?"
- 28:10
And he has to do the same with my cr-- you know, crap? Or are we all using-
- 28:13
Spaghetti. [laughs]
- 28:14
Yeah, that. Or are we all using, like, you know, an actual framework that we can agree on certain primitives that makes us faster to use? There's, there's even forethought I can see, um, in, in the way it's been organized so that once you've defined an agent, a different project can reach in and call that agent via code-
- 28:29
Yeah
- 28:29
... or API. So, um, all those reasons, I'm kind of excited to use it as sort of a unifying internal tools platform. But we'll see. Uh, yes, yes, sir.
- 28:37
Yeah, just a quick question on step-
- 28:39
Yeah.
- 28:39
This might be a little premature, but-
- 28:40
Yeah
- 28:40
... um, step one, number five-
- 28:43
Yeah
- 28:43
... where you-- so you create a workflow, you pass a discrete array of steps-
- 28:46
Mm-hmm
- 28:47
... um, which, of which there's only one, which makes sense to me, and I would think you would just-- I guess I'm asking the des- the design decision behind then needing to just also explicitly do test workflow.then and then invoke the step.
- 29:01
Yeah.
- 29:01
Is that not implicit in the array of steps?
- 29:04
That's a good question.
- 29:04
Does that make sense?
- 29:05
The commit, the ergonomics around-- Are you asking about the ergonomics around the commit method itself? Like, why I actually have to find the commit?
- 29:09
Correct. Like, why, why explicitly say, "Here's a workflow and then-"
- 29:11
What is, what is going on? What, what's-- Gentleman, what's the decision behind that? No, I'm just kidding. [laughs] I'm sorry. I actually don't know. Um, I've looked at it recently, and I actually checked that API today-
- 29:19
Yeah, I just was curious
- 29:19
... because I was curious about the same thing. I was like, "Oh, does it return?" I actually argued with Nick 'cause he correctly said, "No, it re-- commit finalizes your pipeline, returns it," and I argued with him incorrectly.
- 29:28
Gotcha. [laughs]
- 29:29
So I'm not certain. What's the, what's the final idea behind commit?
- 29:33
Uh, that then-- I mean, so for sort of the local dev experience, kind of like localization, um, so the commit's like cached and synchronized as like the-
- 29:43
It's synchronized with... Okay.
- 29:44
Yeah.
- 29:45
Got it. It's the final step that's like actually creates the whole object and adds the steps and returns the final object. Okay.
- 29:51
Gotcha. But why-- Sorry, I, I don't mean to berate this, but like why the .then and then the name of the step?
- 29:58
Is that, is that step not already in the workflow steps array there?
- 30:02
Uh, so you should be able to, um... So there's, there's sort of two ways of defining steps. You can either-
- 30:08
Can you-- I'm sorry, would you mind coming to the mic just so we...
- 30:10
Oh, sorry.
- 30:11
I apologize. [laughs]
- 30:12
No, no, no. Um, uh, so there's, uh, there's two ways of, uh, coming to, of defining, um, steps. You can either give it a step array, um, which as you might expect is kind of, um, the most-- A lot of times we just have these linear pipelines of steps, and so you can just give it a step
- 30:32
array, and it will execute things in a linear pipeline. Um, or if you want to add sort of like branching and conditionals and a lot of that kind of thing, um, we have this like fluent syntax where you can do .then, and then you can do .if and-
- 30:45
.branch
- 30:45
... .doWhile and like loop and, and do conditionals and, and all the fun, complex stuff.
- 30:51
You know, but a lot of times you're just-- you're running through a pipeline. So this stuff's kind of-
- 30:55
So you-- 'cause you also just do test workflow document, and that would run it with that-
- 30:58
Yeah
- 30:59
... all those steps.
- 30:59
Yeah. Yeah, yeah.
- 31:00
Okay.
- 31:01
For, for what it's worth, I have also recently had the experience where I had built two different GenAI apps, like experimentally, internally, and realized that I'd implemented a pipeline concept in both of them.
- 31:10
And that was another reason- [laughs] ... why I was like, "Okay, I'm excited now about a single framework-
- 31:15
Yeah
- 31:15
... with one pipeline." [laughs]
- 31:16
We're learning.
- 31:17
Yeah. [laughs] How we doing on time?
- 31:23
Good.
- 31:25
Okay. We mostly got packages installed or anyone still waiting for-
- 31:27
Anybody get to a hundred?
- 31:29
Yeah. I think Ted tethered to ours.
- 31:32
Ha.
- 31:32
Nice. Nice. Okay, excellent. And you're selling access, uh, for five dollars, right? [laughs] Okay.
- 31:45
Is there any more time?
- 31:47
I think we're good.
- 31:54
All right. Okay.
- 31:54
All right. We'll kind of show what's, what's happening. Um, feel free to keep working on it. It's not, uh...
- 32:01
You'll be able to catch up quickly, or you can skip to the next step, which I'll show here. Um, whoops. All right. So I'm going to just, um,
- 32:10
switch over to steps/step, uh, one, which is the end of step zero. That's where it would bring you to. Um,
- 32:21
and so... Ugh, I don't know what's happening. Okay. Nope, I'm not on... I think it's not switching.
- 32:33
There we go. I didn't know how to spell switch-
- 32:35
Yeah
- 32:35
... apparently. Um, okay. So once you have it all installed, then, uh, you really should just have kind of a Mastra index. It also has memory, um, set up for you automatically.
- 32:48
Uh, but this just creates the Mastra instance. Um, currently, we have nothing enabled, no agents, no workflows, uh, no tools, and that's okay. And when we... Oops. When we run npm dev,
- 33:03
uh, we will get this URL, localhost four thousand eleven. And if we go there, this... Nope. This is the s- the end of step one, which is maybe... There we go.
- 33:15
Uh, you look here, you have agents, networks, tools, MCP servers, workflows, and then this runtime context. And currently, we have nothing in there. Um, and that's currently by design because we've done nothing.
- 33:28
We've just gotten the project set up. But now we have all of these tools to help us with building along the way. And so, um, once you get this set up, uh, you should be able to switch over to step one or c- just continue on in your branch.
- 33:41
I think it might actually be the same because it's just npm installing. Um, and then you should be able to continue on in the, uh, the steps.
- 33:55
Uh, this is-- I'll just say that this is one of my favorite things, though, about Mastra, like the local playground. And if you look in the console, you'll see that there is also a couple other things spun up.
- 34:03
There's the API endpoint. There's also an, uh, Swagger spec that you get automatically. And so, like the amount of thought that's been put into this, and you can see how once everyone's comfortable with it, you could, you know, very rapidly deploy applications in a standardized way that other tools can consume, uh, reliably.
- 34:18
So that's, um, another exciting feature of it. And again, this is like without us having built anything yet.
- 34:26
So the goals that we're gonna do in, in step one now, uh, is just create our first workflow. And this is just a very basic workflow. We'll end up throwing it away, uh, but it's gonna be one workflow with a single step, and it's not gonna do anything else.
- 34:39
But we'll see kind of the power of it, uh, and then we'll build upon that in the next step to add additional steps. We're using steps a lot. Um, and then we will-- we'll, uh, be able to put that together into a full workflow in the next step.
- 34:54
But we will-- more importantly, we'll be able to see it in the Mastra playground and start really seeing the power of that.
- 34:59
Yep, testing. As always, any questions, uh, feel free to shout them out.
- 35:21
Anyone gets stuck, just raise your hand.
- 35:22
Yep.
- 35:23
We'll run past.
- 35:25
We really tried to give ample time for this, not, uh, not including Wi-Fi issues. Um, and so, um, yeah, if you have questions, we'd love to, to chat, or just ideas of this stuff 'cause-
- 35:37
Yeah
- 35:37
... I think there's a lot of really cool powers, uh, that you can do with this.
- 35:41
Hey, do you mind if I ask a question?
- 35:42
Uh, sure. Do you want to, do you want to hop, hop up to the...
- 35:43
Yeah, yeah.
- 35:43
Thanks.
- 35:44
Uh, I'm just kinda curious since you're obviously like using Vim and kinda deep in the hole.
- 35:48
Yeah.
- 35:49
Have you played around with any of like the AI integrations into Neovim? Kinda like how-- what's your current workflow-
- 35:55
Yeah
- 35:56
... that you're kind of adopting?
- 35:57
Thought nobody would ask. [laughs] [laughs]
- 36:00
What have you done?
- 36:01
Um, yeah. I'm a big fan of Vim. I haven't used Cursor yet at all because it's not Vim. Um-
- 36:08
There's Vim mode.
- 36:09
Eh, it's not great. Um, but I have played with the tools. There, there's one, I'm forgetting, Goose, I think, got in Vim. I haven't played with that one yet, but it's on my list to play with.
- 36:19
Uh, the one that I have played with is Avanti, uh, which I think I have still set up. Uh, yeah. So it gives you kind of that like chat-like interface here, so I can just start having, uh, a chat with this code.
- 36:32
Um, I don't know.
- 36:35
There's also... Was it NeoAI? I've used that for Neovim. Even a year and a half ago, you could do that before, before most of the tools allowed you to chat in IDE.
- 36:43
Yeah.
- 36:43
Yeah. That's always gonna be the benefit of open source, is it lands first, right?
- 36:47
Yep. Um, but I honestly-- like I didn't like the ergonomics of playing with this and like switching buffers and things like that, and I- Honestly felt that, uh, for me, uh, a better workflow was just not using this at all.
- 37:01
Uh, I'm also a big Tmux user, so, um, you know, I will have, like, Vim open, and then I'll just open a split and Claude, Claude Code, um, gives me that kinda the same thing, and it's often, like, its own Tmux split, so I can work in Vim as I normally would without, like, weird buffer things, and
- 37:17
then it's just off doing things, and I can, uh, you know, uh, oops, use, um,
- 37:23
use Tmux to, like, full screen Vim when I need it. Claude's out of the way. And then when I want it, I just bring it back in and go.
- 38:18
I would also be interested in hearing how all of you are using these AI tools, just for, like, not just what you're building, but how you're interacting with them day to day because they're changing our workflows.
- 38:29
And I, I feel like everybody's, like, in their own bubble doing their own thing, and then we, like, we have this opportunity to come together and learn, like, amazing new tr- tips and tricks.
- 38:40
Yeah. I'm all for that. Uh, I, I don't know that I'm all for everybody getting on the same,
- 38:48
you know, uh, bus.
- 38:50
Yeah.
- 38:51
I think, I think it should depend on, on, you know, product or, or, you know, service or whatever, what, um... I'm, I'm afraid of, of, you know, somebody coming down from on high with, like, "This is the golden framework.
- 39:06
Everybody use this."
- 39:07
Yeah.
- 39:07
I mean, we've been through that for decades.
- 39:09
Yep, for sure.
- 39:10
You know, so-
- 39:11
Absolutely
- 39:11
... that's my personal-
- 39:13
You like to mix and match and let everyone kinda choose their own lane.
- 39:16
Yeah.
- 39:16
That's exactly.
- 39:17
Even with the coding agents.
- 39:17
Yep.
- 39:18
You know, I'm, I'm like here and there and everywhere.
- 39:20
Yep.
- 39:20
AI, same thing.
- 39:22
Yep.
- 39:22
Here, there, everywhere, you know?
- 39:24
Yeah. To, to summarize for the video, mixing and matching tools is good, and I think that that's really what is, like, powering this right now, especially among, like, us hackers, right?
- 39:32
We're like, there's all these cool new things. It's a whole new world of figuring out what to do, how to do it, and you're not just being prescribed, "Oh, just, you know, go use random..."
- 39:40
I don't wanna shame any specific editor, but [laughs]
- 39:44
Yeah. Anybody specifically.
- 39:45
Yeah.
- 39:45
Yep.
- 39:46
But, I mean, the leaders come forth.
- 39:48
Yeah.
- 39:49
For sure.
- 39:49
You have those choices, you know?
- 39:51
For sure.
- 39:51
Absolutely.
- 39:52
In the meantime, I'm gonna play around.
- 39:54
Yeah.
- 39:54
Yeah, it's all about experimentation, I think. Yep.
- 39:56
Yeah. There's all sorts of experimentation, all sorts of fun. Um, and, and the, the winners will bubble up for sure. Um, also, I, I do worry that it's like, uh, you know, the, the first hit is free, and then we're [laughs] we're all like-
- 40:08
Yeah. [laughs]
- 40:08
... "Oh, no." [laughs]
- 40:10
Becoming dependent on it now.
- 40:11
Yes, sir.
- 40:12
Uh, question for you [REDACTED:gender]. Do you have a framework-specific, like, set of rules, like, that would integrate? Not that everyone has to use Cursor, but just, like, all of a sudden, like, um, at my company, we've started to essentially say, "Hey, here's the top ten tools that we use, and here's Cursor rules to do all those the
- 40:31
same kind of way." And it's not so much trying to, like, box people in, but it's more trying to say give them, like... In Mario Kart, it's like you get the, the three booster packs.
- 40:40
It's like, how can we give pe-pe-people booster packs from the beginning?
- 40:43
Yeah. We, we were talking about this earlier-
- 40:45
Yeah
- 40:45
... actually with Nick Taylor. Um, we were talking about, like, Cursor Rules growing and evolving kind of like tests, and then it's like this thing that, that evolves with your, your code base to prevent you from doing bad things.
- 40:57
Um, I don't know what that means though, 'cause I've never used Cursor. [laughs]
- 41:01
Uh, that's not exactly the question you asked, but I will just say that that's also, uh... Like if when you run, you know, NPX install Mastra, it asks you if, "Are you gonna use Cursor?
- 41:09
Are you gonna use Windsurf?" 'Cause if so, I know I can inject the MCP server for our docs. And then the experience that I had after acce-accepting that, I saw, it's like, oh, it enabled that.
- 41:18
I checked in my MCP in, in Cursor, and then that session where I coded, um, there were zero hallucinations. And so that means that every time I asked for a feature, it was one-shotted correctly.
- 41:31
Furthermore, because it was in TypeScript, I could quickly lint it and compile it and know it was good. And so that's almost like I-- We were almost starting to su- Nick and I are starting to suspect that MCP might be more powerful.
- 41:41
Because the other problem is that Cursor Rules are specific to Cursor, right? So what if, like, half your team's on Windsurf, half's on Cursor? You know, we've got tons of licenses for Cursor internally, so it's kind of like, but it's not prescriptive.
- 41:51
I think the MCP doc server so far is more powerful of a pattern-
- 41:56
Yep
- 41:56
... because it is the-- it's almost like the, the guarantee that the end user dev is gonna get your latest docs and is not gonna get a hallucination.
- 42:05
And I really wonder if that's... Like, like, there's so much excitement around that. We saw that at MCP Night a couple weeks ago. Like, there's so much excitement around that, and I'm, I'm just starting to wonder, is it really just because it's, like, a standard emerging, um, and that's the reason?
- 42:18
'Cause it's, it's very simple, uh, but it's m- it's enabling all of these tools across, you know, it's not just an Anthropic thing anymore-
- 42:25
Yeah
- 42:25
... uh, which makes it super powerful.
- 42:27
Absolutely. Totally agree. Yes, sir.
- 42:29
Yeah. I'm not sure if this is a better question for y'all or for the Mastra team, but I saw that Mastra has experimental support for ingest, which is a durable execution back-end, but that it's labeled as experimental.
- 42:39
And I was curious, like, how experimental that is [laughs] 'cause I'm-
- 42:42
Yeah. Great question
- 42:43
... really excited about durable execution for agents. You know, if you've read the 12-Factor Agents Manifesto, it's really good.
- 42:49
Oh, no, I haven't.
- 42:49
And-
- 42:49
Where is that? Who published that?
- 42:50
Uh, it's on GitHub.
- 42:51
Okay.
- 42:51
Uh, Dex from HumanLayer-
- 42:53
Okay
- 42:53
... um, originally did a lot of the work on that. Um-
- 42:56
Okay
- 42:56
... but yeah, just was curious about jamming on that.
- 42:58
Awesome. Great question. Thank you. And fortunately, we have [laughing] the folks in the room for that. Okay.
- 43:03
Yeah. I'll, I'll also actually shout him out. He'll be happy to hear that. Um, uh, so the-- we shipped in, uh, sort of a what we call Workflows V Next about three, four weeks n- ago now.
- 43:17
Um, the idea being that basically it allows you to have the same syntax but switch out the, the workflow, um, engine. So the first, um, the, the first, uh, in-integration that we shipped, we, we'd sort of initially had-- we initially built our workflow engine using XState as a back end because-
- 43:36
Mm-hmm
- 43:36
... kinda makes sense. Um, and then we kind of-- we, we needed to make a couple of syntax changes, and then we also kinda realized that, uh, people started asking us, "Hey, like, I love the syntax, but I'd love to have this work with...
- 43:47
And I love the visualization and the dev server, but I would love to have this work with Ingest or Temporal, um, or Cloudflare Work-Workflows or dot, dot, dot, dot, dot."
- 43:56
Um, and so we're like, "Yeah, that's a really good idea." So then we shipped Workflow V Next. That was, like, again, three, four weeks ago. And then now we're just starting to, you know, do the list of integrations.
- 44:05
So Ingest is first. Um, it's-- you should use it. Like, it's experimental 'cause we shipped it, like, a week ago, but
- 44:13
I would be surprised if the API changed after a week from now.
- 44:17
Thank you. I actually have a question. Um, just curious, what-- how is the team thinking about, uh, deployments going forward? Like, are you targeting specific platforms first? Are you going serverless first?
- 44:29
Like, are you thinking about trying to go everywhere? Like, what's top of mind for you there?
- 44:32
Uh, so by default, um, by, by default, like, Mastra will bundle into a Hono server. You put the Hono server in a Docker container and put it on EC2 or DigitalOcean or wherever you wanna put, uh, put it.
- 44:43
We also have adapters, uh, for Cloudflare, um, Netlify, Vercel, and we also have our own, um, Mastra Cloud. Um, we also-- So those are kind of the two, um, you know, the, the two...
- 44:55
The, the, we also like-- Hono is not a, you know, if you wanna use Hono, great, but also you can put it in Express or, um, what-whatever. You can, um, you know, put it in the back end of a, you know, Next.js operator app, you know.
- 45:11
Uh, in general, I think, like, you can't really... I mean, you can call it open source, and it cannot work everywhere, but, like, these days, you should actually make it work everywhere.
- 45:20
So that's just our philosophy on things. [chuckles]
- 45:22
Yeah. Awesome. Thanks. Yes, sir.
- 45:27
Can I ask a question? You [REDACTED:gender] don't mind publishing it?
- 45:29
Certainly. Yes. Hi.
- 45:36
Hi.
- 45:36
Hey.
- 45:39
Some error.
- 45:42
Okay. And then, uh, what's the full error?
- 45:54
Oh, yeah. I was gonna say, I ordered my MCP shirt before.
- 46:09
Oh, nice.
- 46:11
Yeah.
- 46:11
Yeah, order your MCP shirts. [chuckles] Such a fun demo.
- 46:32
Seventy-four minutes.
- 46:56
Yep. I think we're good on time. [clears throat]
- 47:14
I had a question. So-
- 47:16
Yep
- 47:16
... I saw-- I was just reading ahead a little bit. Um, so I noticed that you spe- you're specifying, like, Zod schemas, but also adding instructions to the prompt, um, to kind of follow that schema.
- 47:28
Yep.
- 47:29
So I was wondering, is there anything sort of inbuilt into the framework that ensures that the output of each step matches the schema kind of by default? Because what if, like, you specif-- like, you know, let's say in the prompt, you, you kind of forgot what your schema was, and you-- like, how does it reconcile that as
- 47:47
well?
- 47:48
Yeah. Great question. Um, so I, I think the answer to that is essentially the Zod schema, right? And the way that I look at that is, um, like, LLMs are non-deterministic.
- 47:58
That's part of why we love them. But then it's at the point where they're so useful, we're trying to get specific JSON out of them while coding too, right?
- 48:05
And the Zod, um, package and, and, like, validation library is now ubiquitous in AI engineering, at least in JavaScript. Like, you'll see it literally everywhere. So it's doing the work under the hood.
- 48:16
Um, my understanding is that the OpenAI team couldn't get to a certain level of accuracy without adding on top of training the Zod, uh, runtime validation, which can also do coercion into the right types.
- 48:28
So that's kinda doing the heavy lifting there. Um, I don't think there's anything framework specific that's doing structure generation, but correct me if I'm wrong. But you can define, like, the transform steps between the workflow.
- 48:39
Um, yeah. There's actually-- We actually just did a blog post on this, but it's funny that the models don't always actually respect the schemas that you give them, especially there's some, uh, you know, you have the, okay, Z.string, like they'll respect that.
- 48:53
But if you, you know, Z.string. you know, length, you know, four or whatever, like they're not necessarily gonna respect that, like, level of, of nuance. Um, so we actually added, uh- Uh, we, we added sort of for, for...
- 49:06
This is especially challenging. This is mostly worked, worked reasonably well with structure generation. It's more challenging with, with tool calling, um, for reasons that are not quite clear to us, but were clear when we ran 16,
- 49:21
uh, you know, uh, with the 30 schemas across 16 models. So we added like a tool compatibility structured output layer that reduced, that like in- reduced the error rate a lot.
- 49:31
Um-
- 49:32
So in addition, on top of the side-
- 49:34
Yeah
- 49:34
... like there's also Mastra side-
- 49:36
Yeah
- 49:36
... like optimizations to ensure structure generation.
- 49:38
Yeah, yeah. The, the longer version of this is in a blog post we published over the last week if you're, if you wanna dive into the, the details.
- 49:44
And I don't, I don't know if it's related to this, but one thing that we were running into constantly, uh, while we were developing this was, um, we were, like, as you'll see, we were accidentally senting, sending like a base64 u- encoded image, uh, which was huge and, and failing, and it would retry a lot.
- 49:59
So I assume that there's some retry logic built into it to... I- if like it wasn't getting back what was expected from the schema, um, is it built into the, the schema validation piece?
- 50:09
I mean, I would assume probably what was happening was that the agents has like a max steps.
- 50:14
Yeah.
- 50:15
And so it was running until, in a loop until it hit max steps.
- 50:18
Max steps.
- 50:18
And then-
- 50:19
But it, I, I guess what I'm asking is if you, if you said, "I want a string that's length four," and I, and it gave back a length five, would it automat- Would Mastra automatically retry in that case?
- 50:28
There are cases in which it would, it would retry. I don't know if that particular case is one of them.
- 50:32
Okay.
- 50:33
Yeah. Does that...
- 50:35
Yeah, that does answer, um, my question.
- 50:37
Cool.
- 50:37
To kinda to add to that with if you were to specify, uh, certain things into the schema that aren't inherently like supported, for example, the, the length, would that, um, would that be kind of er- like would that error just be displayed in compile time at all?
- 50:54
Uh, let's try it. I don't know. I, I would expect Zod to coerce it actually at runtime.
- 51:00
Um, but I'm not sure.
- 51:03
Usually the model will fail silently-
- 51:06
Mm-hmm
- 51:06
... and just give you a output that doesn't conform to the-
- 51:10
Okay
- 51:10
... to the, um, to the, uh, to the schema. And we kind of made a decision should we error or not, and we're like...
- 51:19
Makes sense.
- 51:19
You, maybe you should decide if you want to error.
- 51:21
Yeah. [laughs] All right. Thank you.
- 51:22
Thank you. Yeah, great question.
- 51:33
Uh, so just talking about deployment. Again, I, I noticed the serverless deployment is there's no like AWS Lambda or anything. It's all through Netlify or Vercel. Is that-
- 51:42
Vercel, yeah. Um, there's also a AWS Lambda, um, deployer that the community had.
- 51:47
Okay.
- 51:47
If, if you, if you Google it, you'll probably find the GitHub issue.
- 51:51
Okay.
- 51:51
Um-
- 51:51
And how does the, the serverless deploy work? Does each step kind of map onto its own Lambda function and, or how is that?
- 51:58
Yeah, I mean, we just sort of pack, bundle it in a, in a fr- in a, a platform-specific way that works for those platforms. So like Cloudflare has like a 300 meg, um, uh, bundle size limit, and so we need to do some specific things to get down under that.
- 52:15
Okay. I guess I'm just meaning in terms of the runtime model, each step kind of maps logically to a function or are you putting multiple steps inside a single function?
- 52:23
Um, I did not work on that part of that-
- 52:25
Okay
- 52:25
... so I would have to ask Ward.
- 52:26
Maybe, I'm assuming they're all bundled into one, but-
- 52:29
Yeah
- 52:29
... could be wrong.
- 52:30
I mean, I, I think they are all bundled into one, but yeah.
- 52:33
Really? Okay.
- 52:34
Yeah.
- 52:34
That would just be weird for long-running stuff 'cause there's-
- 52:37
Yeah, yeah, yeah, yeah
- 52:37
... a timeline and things.
- 52:38
I mean, we-- Yeah, that's, yeah, we, I think we, we all, we bundle it all into one, I'm pretty sure.
- 52:44
Okay. Thanks.
- 52:44
Cool.
- 52:57
How are folks doing on step, uh, step one?
- 53:01
Good.
- 53:01
Good?
- 53:01
Awesome. Okay. All right. We've got functioning Wi-Fi. Excellent. [laughs]
- 53:07
So we can kinda show that. I'll go to, um, step two. Did I spell that right? Yep. Uh, which is the end of step one. Um, and so now, like, looking at the code, uh, we've got...
- 53:23
If I update this, we've now got our test workflow in our Mastra object. Um, and then we've got a workflows directory with the test workflow and the schema for it, and it's just going to have you, um, basically extract from the user input, uh, the type of frustration that you're experiencing.
- 53:42
And the really cool thing now is, like, without building anything else, uh, we can go to our Mastra playground, refresh it, and go to Workflows, and now we've got our test workflow right there.
- 53:54
And you can see the graph here isn't very impressive with just one step in the workflow, but it's there, and we can see that it would accept a raw user input about work frustration.
- 54:07
So does anyone have a work frustration?
- 54:10
Use your na- your boss-
- 54:11
Yeah
- 54:11
... by name, please. [laughs] Please state the company you work for and your boss's name. [laughs]
- 54:18
We won't tell them.
- 54:20
"Conference Wi-Fi sucks." Not really. This is a great job, AI engineer. [laughs]
- 54:27
Um, in general sometimes though. So we can see just by calling that, it turned green in the, in, in the graph, and you can see that if we click on it, and we can see that that's the input that we gave.
- 54:38
It ran the step, and it gave us back this output, this, um, JSON object. Uh, and we can see with the text, "Conference Wi-Fi sucks," the overall mood is frustrated.
- 54:49
I think that's accurate. Uh, and the analyzed frustration is technology. We're so, we're frustrated about technology in this room.
- 55:01
So in the next step... Where did I go?
- 55:07
Oh, yeah. Here we go. Uh, in the next step, um, we're going to create our frustration schema with Zod, uh, build our first workflow step. No, that's what we just did.
- 55:19
I have my slides backwards. In this one, we're going to, uh, create all of the workflow steps. Uh, we're going to chain them together with data mapping, uh, and then we're going to successfully generate a meme, uh, and we'll understand the composition of that workflow as we go.
- 55:34
Uh, it still won't be like the perfect end result, but it will give us the full workflow where we can like kind of plug it in, in that, uh, workflows tool and see it go through all of the steps from our user input to an actual meme that's, uh, uploaded to Imgflip.
- 55:56
So you can skip to step two, uh, or continue on in your branch and, uh, continue from there.
- 59:25
Oh.
- 59:27
Yeah.
- 59:29
Yeah. I'm not sure what I'm looking at.
- 59:33
Uh, sorry, can you repeat that?
- 59:34
I-I did the-- it's, uh, frustrations, right?
- 59:39
Uh.
- 59:39
Put in a topic, ran it, got back a blue box, it's highlighted.
- 59:44
Mm-hmm.
- 59:45
It says input, output, so I put it on output.
- 59:47
Yep.
- 59:48
So I, I got a JSON object.
- 59:50
Yep.
- 59:50
Right? And, and so what is this? Is this something, an object that I would then pass to another pass on?
- 59:57
Precisely. Precisely. And it's just right now is we're just in the early stages of showing exactly that, and that you could have structured this object however you want.
- 1:00:05
Right.
- 1:00:05
Um, but in our case, because of the pipeline that we're building, this is the data that we found valuable. And so we formed it this way, and then we're gonna pass it further into the pipeline to do more work based on that.
- 1:00:15
Yeah.
- 1:00:15
And so, um, the output is, is, uh, sort of like you can change it.
- 1:00:25
Totally.
- 1:00:25
I mean, so I can-
- 1:00:25
It's your, it's your arbitrary schema.
- 1:00:27
Yeah. If I want Markdown, if I want JSON, if I want whatever.
- 1:00:31
Yep. Yep, absolutely. And that's part of what Zod will help you do too, 'cause you can define like, you know, maybe you have some giant object and, you know, this many fields, and this is a string, and this is an array of strings, and all that.
- 1:00:41
Um, but it's really for you to compose together the exact structure that you need.
- 1:00:45
Would-- You would have to know what the next stage is.
- 1:00:48
Yeah.
- 1:00:49
Right?
- 1:00:49
Yeah.
- 1:00:50
So there's a little bit of forethought here.
- 1:00:52
Absolutely. Forethought or the third time you've written that app. [laughing]
- 1:00:57
You've had enough. You've had two shitty first drafts, and you're ready for the third. Um, sometimes I do it that way. But yeah, sometimes I'll plan it out and be like, "What's the logical breakdown for these steps?"
- 1:01:05
Yeah.
- 1:01:05
Yeah.
- 1:01:06
Yep. The main point of this one is to just determine like the level of frustration and what you're frustrated about so that it can be fed in in the next step to, uh, Imgflip's API to get back an, an image template, um, that-- or a meme template that would accurately fit that, and then we kind of shoehorn
- 1:01:26
it in from there.
- 1:01:27
Totally. But the-- But again, the, the, like, I guess the mental mapping that we're all trying to do here too is like to think about how do we take this home, then like turn it into something that actually solves a problem or automates something at work, so we get promoted before the machines come for us, you know?
- 1:01:42
That's the general...
- 1:01:43
It's a race. [laughs]
- 1:01:44
Pretty much.
- 1:01:45
Human race.
- 1:01:45
Yeah, I think so. [laughs]
- 1:01:51
And just so we're level setting, this is like the memes that you've seen. Imgflip is a-- They have an API for not only finding great memes, uh, but also just having blank templates.
- 1:02:01
So they, they can give us back information about this The Rock meme, The Rock, uh, in a taxi meme or whatever. And those boxes are blank, and then you can post to their API with whatever you want it to say in each of those, and it'll tell, tell you like, "Oh, I have three boxes."
- 1:02:16
And, uh, then you just post in there, and that's what we're eventually going to be doing in one of these steps.
- 1:02:21
But that, that's a perfect real-world example. It's like knowing those box slots is critical to the rest of the pipeline. If any other step in the pipeline didn't know the box slots correctly, right?
- 1:02:29
Like that would be a problem. So you can define that in your schema and make sure that it's there. And like that's part of it. Yeah.
- 1:02:35
Okay.
- 1:02:35
Yep.
- 1:03:08
Putting this workflow together too is probably the biggest of the steps.
- 1:03:11
Yep.
- 1:03:11
Um, once we have this, we'll, we'll create an agent in the next one, and that's pretty straightforward, uh, as you'll see. Um, and so there's, there's time built in also to, to play with this experiment, tweak things like the, um, like the prompt.
- 1:03:26
Temperature.
- 1:03:26
Temperature, things like that.
- 1:03:28
We'll, we'll look at that in the playground. That's the cool thing is like once we get the agent and start chatting with it, um, you know, like there's just a-- I-iterating locally is so much faster, right?
- 1:03:36
Yes.
- 1:03:36
And that's really what the, the playground's about. So you can even tweak the prompt on a per request basis. You can change temperature, model, whatever.
- 1:03:56
Can I get help with the website?
- 1:04:00
Certainly. Yep. [background chatter]
- 1:05:05
We got it.
- 1:05:28
What
- 1:05:39
happened?
- 1:07:15
Nope.
- 1:07:16
Okay.
- 1:07:16
Oh, well, that, that's a, a common issue. The other trick is when you get that image flip username and password, it's not your email and your username and password.
- 1:07:25
Okay.
- 1:07:25
And I'll pop it in the dial over here.
- 1:07:27
Okay.
- 1:07:27
Pop it in.
- 1:07:27
So I need to go to image flip?
- 1:07:30
Just go to image flip. That's all I can do. [keyboard clacking] That's where you... That's where it
- 1:07:36
definitely stops.
- 1:07:38
Does it sound like the credentials are being hit?
- 1:07:40
Well, yeah. So in general, if you get an error, uh, at the generate meme step, and you don't get a clear error message, and you have not created an ImageFlip username and password, that's likely the problem.
- 1:07:50
I did it first.
- 1:07:51
Sweet. [laughs] All right. And then if you sign in with Google, which is the same thing I did, that's fine, and then you just have to go into ImageFlip's settings after and set a password because you're OAuth-ing in, so you didn't get to set a password.
- 1:08:04
Right. Right. Okay.
- 1:08:05
So the, the complexity is in the UI of ImageFlip. [laughs] Just-
- 1:08:10
Thank you.
- 1:08:10
Yes, absolutely. Let me know if you have another issue. Yes.
- 1:08:14
Do we need to set a username?
- 1:08:16
So, um, in our testing, like, and also there, there's a public... I think it's for ImageFlip, there's a public key that floats around. So there is an anonymous key that's public.
- 1:08:24
Like, GitGuardian will flag. Others consider it a secret, but apparently it's not, and people are using it. And the reason that we finally asked people to make their username and password is that it gets you a significantly higher rate limit.
- 1:08:35
Yes.
- 1:08:35
And so you're less likely to run into this is-issue in the workshop at least.
- 1:08:38
But the error is in-
- 1:08:39
Yeah, the error
- 1:08:41
... generating. Yeah.
- 1:08:41
The, uh-- What, what's the specific error you're getting?
- 1:08:44
Um.
- 1:08:44
Is it opaque?
- 1:08:44
It's actually now, now I'm getting just, uh, like, blank. Uh, but I don't know. It was like, "Cannot run,"
- 1:08:52
uh-
- 1:08:52
Oh, if you like-
- 1:08:53
"This branch."
- 1:08:53
Are you on the-- Which branch are you? Are you on the-
- 1:08:55
Uh, I was... Well, I guess I'm trying to get my branches still.
- 1:09:00
Um, let's see.
- 1:09:01
Okay. I think we're on two. We're, we're on two?
- 1:09:04
Mm-hmm.
- 1:09:05
Yeah, I think. So try doing git switch and yeah, so two.
- 1:09:09
Let me just stash all that stuff first. Yeah.
- 1:09:15
You have no idea the struggles of trying to do a workshop with-- wh-when API keys are involved. Uh, we originally had a step that w-it would not-- It would take an inspiration from an ImageFlip-
- 1:09:25
All right
- 1:09:25
... image, and then generate-
- 1:09:27
Okay
- 1:09:27
... a new meme. So it was a completely unique meme. Uh, but in order to do that, you would have to go in and verify your OpenAI account, which means, like, you would have to scan your passport to [laughs] be able to do it.
- 1:09:40
And we thought that might be a little much to ask in this workshop. [laughs]
- 1:10:11
Can, um, can you [REDACTED:gender] say more about, like, how you're, I guess, like, interacting with these workflows and agents, like, in the cases you've seen? You said something about Vercel.
- 1:10:20
Like, are you deploying them and then contacting them through, like, an API call? Or, like, are they actually embedded into your application?
- 1:10:26
Yeah. Um, what I'm primarily doing right now is, uh, still using the Vercel AI SDK. So everything I've got, like, at least at work that's deployed already, that's mostly Vercel AI SDK, and then we're building a, a ton of, like, internal tooling with Mastra, and that started, like, two, three weeks ago.
- 1:10:40
Mm-hmm.
- 1:10:40
And most of our stuff goes to Vercel, um, just 'cause we already had that, and it's pretty fast. Um, and then most of the things I've built so far are, are web applications that might have a pipeline, so there's a UI, and there's still a, a user kind of requesting generations and asking for things.
- 1:10:55
Mm-hmm.
- 1:10:56
Um, what I think would be super cool and powerful though is, like, the, the workflows expose, like, an API endpoint to, to start them and hit them from anything, and so I think that's also, like, a pretty powerful pattern.
- 1:11:05
I've not really used it really fully right now in prod yet, but that's, um, something I would think about for sure, like cron jobs almost.
- 1:11:13
Yeah.
- 1:11:13
Workflows that need to run, like, every night, you know, maybe have a cron that fires that or something.
- 1:11:19
All right, cool. Thanks.
- 1:11:20
Yeah. Great question. All right.
- 1:11:44
We got about five minutes, and then we're gonna move to the next step. So if anyone's stuck on anything or has questions, don't be shy.
- 1:12:06
Does anybody have the memes generating right now through the workflow?
- 1:12:09
All right. One, two, three, four, five, six, seven, eight, nine, ten, eleven, twelve, thirteen.
- 1:12:14
Nice.
- 1:12:15
That's amazing.
- 1:12:16
Post some of your favorites in the, in the Slack.
- 1:12:19
Yeah. [laughs] Uh, there's no filters left on them, so-
- 1:12:23
Yes. [laughs]
- 1:12:23
... if you like what happened, it's, uh, we did it, and if you are offended, it's not our fault.
- 1:12:28
This is the-- When you're dealing with memes like this, it really brings out the non-determinism of-
- 1:12:33
Yeah
- 1:12:33
... of this. If it generates offensive ones, we tried to, to curb that, but also these AIs are not great [laughs] sometimes. [laughs]
- 1:12:46
If people who finished it wanna raise their hands, I'll go around and give you [REDACTED:gender] books.
- 1:12:50
If you want a, yeah, a free, uh, signed. Are we talking autographs here, Sam, or?
- 1:12:53
Ooh. [laughs]
- 1:12:55
Okay. I'll autograph.
- 1:12:55
Uh, we're talking autographed copies. So the first edition or second edition?
- 1:12:58
Uh, first edition.
- 1:13:00
Autographed first edition from, from the CEO of Mastra itself. If you, if you got a meme working and you want, or you just want a book, raise your hand.
- 1:13:08
Excellent. [laughs] That's pretty offensive. [laughs] It's a pretty offensive meme.[laughs]
- 1:13:34
This, this gentleman would like a, a book as well.
- 1:13:40
Awesome. Yeah. Thank you.
- 1:13:42
What you got?
- 1:13:43
Places to survive on. This is the Bible on building-
- 1:13:51
On, yeah, on building agents in TypeScript. Got it.
- 1:13:55
Cheers.
- 1:14:01
Oh, these are all point-- This is amazing. [laughs]
- 1:14:05
Yeah, I got some pretty racy ones by saying, "Why did they put a systems engineer on an open floor plan with the sales folks that are screaming all day?"
- 1:14:12
That's a fun prompt. [laughs] I love this. [laughs]
- 1:14:30
That's awesome. Every project is high priority. [laughs]
- 1:14:45
Yes, sir.
- 1:14:46
So I come from a data engineering background, and there's something called DAGs in Airflow-
- 1:14:52
Mm-hmm
- 1:14:52
... which are, for whatever reason, culturally, they've caught on. Um, as you [REDACTED:gender] have designed workflows, have you thought of DAGs? Are they similar, dissimilar, um-
- 1:15:02
Are you talking about directed acyclic graphs?
- 1:15:03
Yeah.
- 1:15:04
Yeah.
- 1:15:04
Control-- What does the control flow look like for workflows?
- 1:15:08
So far, uh, stuff that I've, I've seen, you know, supported by the semantics of, like, a, a Master pipeline. Honestly, um, to be perfectly frank, the place that my mind goes with that is just graph rag, like a graph plus retrieval augmented generation.
- 1:15:20
So, like, some vector database plus a graph, knowledge graph to, like, do traversal, um, to also answer, like, structured questions about entities in addition to, like, semantic search capabilities.
- 1:15:30
Um, that's honestly what I've built mostly, or I've see-seeing people kind of like, um, po- like, positing is gonna be a next-gen architecture. But so far what I've needed has just been pretty simple pipelines.
- 1:15:42
Basically, run these steps, branch over here if this happens. Um,
- 1:15:47
you know, I see the DAG as like, that's like Terraform in my mind from, from DevOps, like, land of like, it must proceed this way, and the entire thing fails if, if like node three, uh, is unhealthy kind of. [laughs]
- 1:16:00
For that, so in my workflow, I see like success if steps one, two, and three are super expensive-
- 1:16:07
Uh-huh
- 1:16:07
... from like an LLM perspective.
- 1:16:08
Yeah.
- 1:16:09
Have you [REDACTED:gender]-- Is it possible to trigger step four?
- 1:16:13
That's a great question. We were-- Actually, Nick asked if we could s- uh, trigger a specific step. I'm not sure. But the other thing I'll say is that in those cases, that's the other reason I love the pipelines and also even just the concept of steps and agents, because I can do a, a specific model for each
- 1:16:26
one. So, like, extracting frustrations is like, that's pretty simple and should be fast and cheap. So it's like do four, oh, or even something simpler. Or maybe even get away with like a seven billion parameter model that's deployed on like Cloudflare workers.
- 1:16:37
Yep.
- 1:16:38
Right? And then which c-- It's like essentially free. Um, that's like-- And that, that question, by the way, this is like the f-- uh, like how do you right size AI application workloads like that is top of mind for everybody now.
- 1:16:48
Everyone's asking that question. It's like, how do I get the infra to s- be what's correct for the workload I have?
- 1:16:54
And-
- 1:16:54
I think everyone's trying to figure that out. Yeah.
- 1:16:56
And, and another thing, like you can explore different ways of doing this. Uh, when we first started with this, we had all of these steps as tools.
- 1:17:03
Yeah.
- 1:17:03
And then kinda let the AI decide when it should call them. Um, so that could be another approach depending on if it can intelligently skip steps, um, it might be able to do that.
- 1:17:14
Um, there is a question. Is, uh, this is in our chat, right? Or is it, is it-
- 1:17:18
Yep.
- 1:17:18
I'm looking. Okay. So there's a question. Is, is there a way to implement or configure caching with Master? I think the answer is yes. Yeah, for sure.
- 1:17:25
Yeah. This-- So I, I did imple- I did implement the, uh, Imgflip this time.
- 1:17:31
Uh-huh.
- 1:17:32
So when I, when I tried it recently, it was still-
- 1:17:35
The same error.
- 1:17:36
Totally.
- 1:17:36
Show me the, your dot env file, if you would.
- 1:17:46
Okay. Yep. Okay.
- 1:17:49
I might have to do fix a few more of those.
- 1:17:52
Yeah. Right.
- 1:17:54
I think it-
- 1:17:55
That looks right to me, assuming those are your actual creds.
- 1:17:59
Yeah.
- 1:17:59
And then the other thing is, did you, uh, did you restart environment var env?
- 1:18:03
I, I saved it, and then I, then I, uh...
- 1:18:11
Think that user and password combination.
- 1:18:13
So it's saying it's still saving.
- 1:18:16
Oh. So restart it now 'cause I bet you-- Did you update env while that was running?
- 1:18:21
Correct.
- 1:18:22
So if you restart it, it should, um, pick up the new dot env, and let's see if it's the same error or not.
- 1:18:28
Okay. So we got...
- 1:18:31
Yep. Yep.
- 1:18:41
So we-
- 1:18:42
Yep, exactly. Yep.
- 1:18:48
Uh, what did I say badly?
- 1:18:49
Bad food. Yeah. Nice. [laughs]
- 1:18:53
I thought it was because it was two words instead of one.
- 1:18:56
It might still have a-- Is there an extra space anywhere in-- 'Cause I had that issue even after I had the correct values. Like there has to be-
- 1:19:02
All right. Let me switch. All right.
- 1:19:06
Yeah, still saying that.
- 1:19:07
How long should it take for the shirt to-- Like the MCP shirt? Oh, uh, it'll take a l- a few weeks probably. Oh, no, I mean like- Oh. Did I miss my open- Is it not going through?
- 1:19:17
I'm key. Did it try and execute the tool? Yeah. Uh, what- Try a different key. What, um- I don't think it's a problem with the AI, right? 'Cause that's-
- 1:19:25
Client API. No, no, no, it's, it's definitely not. This is-
- 1:19:27
For sure.
- 1:19:27
It's just the-
- 1:19:28
It, it should be relatively fast. Is there an second time trying?
- 1:19:32
Waiting for approval
- 1:19:33
It is-
- 1:19:34
Ah, okay. Uh, good to know. Let's try that.
- 1:19:38
I don't think you [REDACTED:gender] have an order Linux to maybe put that in there. [laughs]
- 1:19:44
We should. [laughs] Um, so I can show this now.
- 1:19:50
No, I guess.
- 1:19:51
Uh, so if you go, if you have it installed, which I do, um-
- 1:19:56
By changing it in here though, it'll-
- 1:19:57
Down in here, I have MCP shop set up. This is Claude, by the way. Uh, hey bro, I hear I can get a shirt.
- 1:20:06
You can also do the-
- 1:20:07
Let's see if it works
- 1:20:08
Should I do install or just, you know, just refresh the server, make sure that's all inside.
- 1:20:13
Pondering T-shirt potential. That was awesome.
- 1:20:16
Thank you. Here.
- 1:20:17
Ah. I can't provide physical shirts or merchandise. That's interesting.
- 1:20:23
I want you...
- 1:20:25
Is it connected?
- 1:20:33
Should be connected. Nope. That's the problem. There we go.
- 1:20:44
Try that again.
- 1:20:45
Oh, that's okay. Yeah, it's, it's, it
- 1:20:51
Hey, bro, I hear I can get a sweet MCP shirt now that we're maybe connected.
- 1:20:55
Yeah.
- 1:20:56
Yeah. Cool. So it pops up. We'll allow that.
- 1:21:07
You can definitely get an MCP shirt. There's one available right now. Here's what you can get.
- 1:21:12
Minimal design. I don't know that it says context is everything, but it might. [laughs]
- 1:21:25
Yeah, I don't think it says that.
- 1:21:26
Yeah. Go to the last one.
- 1:21:28
Oh. Oh, yeah. Okay. It does. [laughs]
- 1:21:32
Context is everything.
- 1:21:33
Yep.
- 1:21:34
Nice. [laughs]
- 1:21:36
Cool. Uh, so it just needs for me my company name, my mailing address, and my T-shirt size. So I'll say XL, um, One Infinite Loop.
- 1:21:50
And company name, uh, WorkOS. Oh, it needs my city, state, and zip code. I don't, I don't know what that is for Apple. Um, so I'll just... I'm, I live in Omaha.
- 1:22:15
Oh, and look at that. It's gonna buy my shirt.
- 1:22:25
And it's ordered.
- 1:22:29
We will, we will actually send you a shirt, so be, be sure to-
- 1:22:32
Yeah
- 1:22:32
... be sure to submit it while you're here.
- 1:22:33
You can also ask things like, um, "Can you tell me about my order?"
- 1:22:39
I have a question. Technically on Cloudflare, deployed on WorkOS.
- 1:22:46
Uh, it's deployed on... Is, is this-
- 1:22:48
You put it on Cloudflare.
- 1:22:49
Yeah.
- 1:22:50
Yeah.
- 1:22:50
I have a version deployed on Cloudflare. Um, this one I think is, it might be deployed-
- 1:22:54
The original MCP shop?
- 1:22:55
Yeah.
- 1:22:55
Probably on Vercel.
- 1:22:56
I think it's, yeah, Ver- it's deployed to Vercel, um, for this specific instance of it. I, I have a talk on Thursday where I'm also, I have the same thing deployed to Cloudflare.
- 1:23:05
So, um, we'll go into the code, and I can send out the repo for that. But, um, yes, that one just saves it, saves the info to a KV store, uh, and then that's, that's what's used to order the shirts.
- 1:23:18
Uh, you can deploy MCP servers to Cloudflare now using WorkOS as the auth layer.
- 1:23:22
Yeah.
- 1:23:23
So, so-
- 1:23:23
And then-
- 1:23:24
Uh, feel free to check that out. We have a blog post and a couple of tutorials.
- 1:23:26
Yeah.
- 1:23:26
Yeah.
- 1:23:27
That's the thing. It's using WorkOS to do that auth. You didn't see it 'cause I'm already authed in, but when I hit Connect, it opened up and it was do-- completing that auth flow to get me a token so that I could, uh, do that here.
- 1:23:38
And you can see that in here, it's got, like, my order information.
- 1:23:44
Um, I don't know. Do you know my name and email? Which is totally not something I've said yet.
- 1:23:55
But, but also to tie it again, uh, back together, right? 'Cause again, it's, like, toy, it's fun, got a T-shirt, but imagine this as an e-commerce workflow, right?
- 1:24:03
Yeah.
- 1:24:03
This is what people are building. Like, this is what everyone's trying to figure out how to do correctly. What I actually wanna do is just go, I'm in a hurry, I wanna get on the page and say, "It needs to be a product exactly like this.
- 1:24:11
Does it support that? Okay, fine, go. Not forty dollars, less than that." Right? That's what everyone wants to do. Um, and so that's what this interface is.
- 1:24:18
Yeah. Pretty soon you'll be social engineering your way through LLMs to get a free shirt-
- 1:24:22
Yep
- 1:24:22
... when it's not free.
- 1:24:23
Yep. [laughs]
- 1:24:25
I can't wait for the future.
- 1:24:27
Mm-hmm.
- 1:24:29
Uh, cool.
- 1:24:30
These are generating these.
- 1:24:31
Yeah. Let's, let's, uh, look at the workflow. So I switched over to the step three branch, which is the end of step two, uh, where you should be at.
- 1:24:39
And you've got a new meme generation workflow, uh, and it's got, you know, a bunch of schemas set up for the input and output schemas, uh, and all of the steps set up to run each of these.
- 1:24:52
And, you know, that's the code for it. Let's go look at the, the actual, get out of here, um, the tools in Mastra. So I'll refresh this and go back to work- nope.
- 1:25:06
Workflows. There we go. Now we have our meme generation workflow, and it's got four steps. And so this is a little bit better, a little, little more detailed in what, what it's doing.
- 1:25:15
Um, it's got, not including these mappings, it's got our extract functions, find base meme, generate captions, generate meme.
- 1:25:25
Oh, come on. Uh, and then a final mapping. Um, and so, I don't know. Someone give me a work frustration.
- 1:25:35
Somebody ate my sandwich out of the fridge
- 1:25:39
When no one in the workshop is-
- 1:25:43
Someone was too busy preparing a workshop to review my PR. [laughs]
- 1:25:48
Nick
- 1:25:50
No, never. [laughs] And won't review my PR. That's a made-up one. Um, so yeah, it can run-- You can see it running. Um, and then we can go-- we can see all of the steps are now green, and so we can see the input and debug the input and output on each of the steps.
- 1:26:10
So there's the input that we got, and it gave out a frustration, a communication frustration.
- 1:26:21
And, oh, I am all sorts of messing this up.
- 1:26:28
Uh, but we can have it find the base meme and then generate the captions for it. Find out what that is. So when the meeting could have been an email, but everyone is just smiling like it's fine.
- 1:26:39
That's relatable. Um, but then down in the generate meme one, that's gonna receive the captions. It's gonna receive apparently a meme called Disaster Girl. And
- 1:26:53
did I mention that these are non-deterministic, and I don't know what it's gonna generate?
- 1:27:00
Ah. When the meeting could have been an email, but everyone is just smiling like it's fine. [laughs] This is fine.
- 1:27:07
Yeah.
- 1:27:08
Um, yeah. So this is fun, right? We can see the workflows, the, the inputs and outputs of it, and we can debug those steps along the way. We can see exactly what is-- what we're starting with and how it progresses through each of the steps, uh, to give us a full workflow, which is awesome.
- 1:27:25
Um-
- 1:27:25
We haven't even had to do a deployment yet.
- 1:27:27
Nope.
- 1:27:27
And we can just iterate locally, change the prompts, change the schemas until you get it exactly the way you want, and then you haven't wasted time going back and forth.
- 1:27:34
You've, like, iterated rapidly.
- 1:27:36
Yeah. And so really easy debugging. That's why we love this tool. Like, it's j- it's just really fun and easy to do. So in the final step, um, the, the final main step we have, uh, we're going to, like, take that workflow now and call it with an agent.
- 1:27:52
So this is a pretty straightforward step. We're just gonna create an agent, give it a prompt to work with, and give it the, the knowledge of th- this workflow that it can run, and then it'll run it for us.
- 1:28:02
So instead of having to use that interface, we can use a chat interface, uh, that we're more familiar with and go from there.
- 1:28:11
And so-
- 1:28:12
And, and again, to tie it back to actually taking this home and doing something useful with it, like we've gotten to the point where we've described a workflow of steps that completes a discrete task, and maybe that's something that our, our coworker needs.
- 1:28:23
And then again, maybe they are technical, maybe they're not, maybe they're just in a hurry. So by building them an agent and saying, "Use this workflow," and you, you have the ability to call this workflow, that becomes an ideal interface to give to our colleagues to start using this.
- 1:28:36
And then something that they used to have to do piecemeal, they're just now firing off a chat request, and it's done for them automatically.
- 1:28:44
Yeah. Yeah, so with this, you'll learn what agents are, how you give them instructions, um, the memory systems for them, the workflow integration, uh, through Mastra, and then how you can test them in the playground.
- 1:29:16
Wow, these are awesome. So these are new community memes pouring in in real time.
- 1:29:22
We finally catch up on Slack messages, but there's already twenty more waiting. Nice.
- 1:29:37
Yeah, that's a great idea.
- 1:29:38
Yeah.
- 1:29:40
There's some great, um, feedback on the framework, [REDACTED:gender], in the, in the Slack channel. There's like some UX requests as well. Let me see. [laughs]
- 1:29:51
That's great. [laughs]
- 1:30:02
Too real. [laughs] You can also play with the, uh, prompt, uh, the prompts a little bit to tweak it about what it's-- how it's like analyzing the frustration, the level of frustration, the type of meme, um, things like that.
- 1:30:28
It's really fun to get a, a vibe for it.
- 1:30:30
Yeah, indeed. All right. Does everyone more or less have, uh, what they need, or is anyone still stuck on anything? Any last-minute questions or hiccups?
- 1:30:44
No? Cool. That's amazing. [laughs]
- 1:31:03
I'm gonna make a T-shirt with that.
- 1:31:47
Uh, just a, I guess a comment from us, and I guess from the team as well, like honestly, like thanks everybody for coming and building these. We didn't even know this workshop was happening until last week, I think it, it was.
- 1:32:00
But, um, I mean, previously like so like most of us at Mastra were previously building Gatsby, like I was the co-founder, and so we've been doing open source JavaScript stuff for a while, but it's like pretty humbling when you show up for a conference and actually someone else is giving a workshop- [laughs] -about how to use the thing
- 1:32:21
that you built. Um, and I think I speak for all of us, so like thanks everybody.
- 1:32:26
Thanks a lot.
- 1:32:27
Yeah, thanks.
- 1:32:27
It's been a pleasure. [clapping]
- 1:32:31
And on the same side, we didn't know that you were gonna be here until I think like yesterday. [laughs]
- 1:32:35
But we got very excited because then it's like, "Hey, you got a question about Commit? Let's go ask them."
- 1:32:39
Yeah. [laughs]
- 1:32:45
I'm just personally curious how many folks have or like already have agents deployed at work in prod that they're using for things? Only spoke a couple. How many folks are trying to get them in, into prod right now?
- 1:32:58
I'd be curious to know what you're using them for.
- 1:33:00
Yeah. I'd also be curious if anyone wants to share either in the Slack or just call it out or come up to mic, like what are the top use cases that you're thinking of for agents or struggling with?
- 1:33:09
I'd be curious to know too.
- 1:33:12
This is such a fun time 'cause there's like, like you, you have to get your head around what it's doing and then get your head around what it can do, and it just, it starts to feel like the possibilities are endless and-
- 1:33:23
Mm-hmm
- 1:33:23
... just super fun.
- 1:33:24
Yep.
- 1:33:27
I'm working on chatting with infrastructure.
- 1:33:30
Oh, nice.
- 1:33:31
I want to talk about getting around the common operating tools.
- 1:33:34
Yeah.
- 1:33:36
Our server, um, kind of cluster. We have physical servers that have issues operationally.
- 1:33:43
Yep.
- 1:33:44
And end goal is to have a problem for getting logs, like that.
- 1:33:50
That's awesome. [inaudible] Yeah. That's awesome. So like you've got, um... So you wanna be able to chat with your infrastructure and like ask questions, like either an in- incident, like show up to the incident and even already have like initial guesses maybe?
- 1:34:01
Yeah. It's very close.
- 1:34:02
Yeah. That's awesome. Cool. Any other use cases?
- 1:34:07
I think that we're finding, um, we're mostly able to just knock out a ton of like low-hanging fruit that folks are doing manually right now. It's, you know, especially with tools like this, like you, you know, create a simple agent or even just a s- pipeline with a few steps and a couple API calls, and that can
- 1:34:21
like free up hours of somebody's week.
- 1:34:23
Mm-hmm.
- 1:34:24
Um, I think that's the part that I'm most excited about right now.
- 1:34:26
Yeah. It's like all the little paper cuts, you can just so quickly iterate on them and get things going.
- 1:34:31
Yep.
- 1:34:31
And not just with the- these tools, but just like vibe coding in general. Like you can, you know, be like, "I'm gonna spend an hour just seeing where I can get to," and-
- 1:34:40
Yeah
- 1:34:40
... it's amazing. [laughs]
- 1:34:40
It's incredible h-how quickly you can get there.
- 1:34:45
Always review the code though, please. [laughs]
- 1:34:47
What's that?
- 1:34:48
Always review the code, please. [laughs]
- 1:34:49
Yeah. Please review the code, and use tools like GitGuardian before you commit.
- 1:34:52
Yeah. Yeah, we had our, our AI moment, uh, a couple weeks ago at our last onsite, and, um, we had like a couple hours just to spend doing something with AI, and it-- There was really no prescription to it.
- 1:35:12
It was just explore and play, and if you can solve a problem, great. If not, you learned something along the way. And, uh, the thing that I worked on was, uh, like ma- as the, the maintainer of several SDKs across several languages, uh, a pain point I saw was like people adding in, you know, very simple PRs
- 1:35:30
to one repo that's like the node repo, the node SDK, and then doing the same thing. It's like adding a new field to the node SDK and then adding the same field to the Ruby, Go, PHP, Kotlin, like all of the SDKs.
- 1:35:43
I was like, "I wonder if we could do something to alleviate that and make it easier." And after two hours of pure vibe coding with Claude, uh, I had a GitHub action that when you label the first PR that you do, if you just add a label to it, it will go and generate the PRs for every
- 1:35:58
other repo and just-
- 1:36:00
In every other SDK
- 1:36:00
... automatically PR.
- 1:36:01
In every other SDK. Yeah.
- 1:36:03
Yep.
- 1:36:03
That's awesome.
- 1:36:04
Were you using like a software engineering framework like Dagger or something to potentially
- 1:36:11
make the changes for Claude?
- 1:36:11
Making the-- Oh, that's a great question. Making the changes is one thing, and-
- 1:36:14
Yeah
- 1:36:14
... that's something that, yeah, I think Dagger would make a lot of sense. But-
- 1:36:16
Would it?
- 1:36:17
... what were you doing with that?
- 1:36:18
I wasn't. I wasn't doing any of that. Um, I vibe coded it, and I actually don't know what the code does. [laughs]
- 1:36:24
He-- And he had the-
- 1:36:25
What?
- 1:36:25
I didn't review it.
- 1:36:26
Yeah. So he had a four thousand three hundred line, uh, GitHub action-
- 1:36:28
Yeah
- 1:36:28
... that's working great. How?
- 1:36:29
I wanna hear more about that. [laughs]
- 1:36:32
But to be clear, we didn't ship it. Uh, it's, it's an experiment. [laughs] Maybe, maybe we will, for sure. Um, but the week after that, I think, um, Claude had come out with like b- the ability to run Claude code as a, uh, like via an API, so that you could like spin it up, run it, give it
- 1:36:50
the instructions on what to do, and then let it figure out how to do it, 'cause like most of the code that it generated was just handling how it was gonna do the diffs.
- 1:36:58
And for several hours of that, it was just like, it made the changes I wanted and then deleted the rest of the files, and that wasn't great, you know? [laughs]
- 1:37:13
Um, we're also, for what it's worth, finding, uh, incredible utility with tools like v0 Dev. So if you're already in the Vercel ecosystem or have used Next.js, there's now...
- 1:37:21
They're, they were originally conceived of as like rapid prototyping tools that may be for designers or may be for developers. But like an example is that somebody on our marketing and sales team is trying to figure out who would be interesting engineers who are already doing work with MCP to contact about conferences like this, and their workflow
- 1:37:37
is completely manual, and they're, you know, talking to me about it on a, on a call, and four minutes after they started telling me about it, I had it working like in v0 Dev.
- 1:37:45
And hand it to them and they had a completely separate, you know, tool that's available on a URL that they can just paste in whatever they need essentially and get like the analysis done.
- 1:37:56
Um, and so that was very eye-eye-eye-opening for me 'cause it's-- in some cases now it's faster to create the tool that your colleague needs than it is to continue talking about the tool that your colleague needs and even ticketing it or saying next Tuesday we should try and like...
- 1:38:12
Sometimes you can literally sit down in v0 dev with like a paragraph, very descript prompt, and get what you need.
- 1:38:23
Nice. That's pretty good.
- 1:38:25
So then question.
- 1:38:26
Yes.
- 1:38:27
Do your salespeople do they respond by saying, "I can create a keyboard." Now I wanna be that tool.
- 1:38:33
No.
- 1:38:33
And I just-
- 1:38:34
Not in my experience. Not yet. [laughs] Yeah. Totally. I think that's, that's a fascinating question. Yeah. The question is like when, um, folks in other roles that are not traditionally technical see how quickly you can scaffold this stuff, are they all clamoring for the keyboard?
- 1:38:47
That's not been my experience yet. They're-- I think that's also like part of what the trepidation and anxiety is around, is like, well, now everyone can do it. But then I also comfort myself and say that I define a pleasurable evening as like sitting down for twelve hours on one of these machines and going back and forth
- 1:39:02
to try and get it to go the way I want. And that's not most people's description of a fun time. So like even when the tools are better, I, I still think you kinda have to find this enjoyable. [laughs]
- 1:39:11
You know what I mean? I don't, I don't... I, I, I think it might change to some degree like when like most generation becomes one-shottable.
- 1:39:19
Yeah.
- 1:39:19
And you say, "I want this app," and it's of like this complexity, and most people can get something working immediately if that's correct. I think that'll take a lot of low-hanging fruit off.
- 1:39:28
But...
- 1:39:29
It's interesting. I heard, um, some people is that then profit of the lawyers would put their lawyers down in the
- 1:39:37
CSPs.
- 1:39:37
They would do what?
- 1:39:38
Put lawyer, like legal-
- 1:39:40
Uh-huh.
- 1:39:40
-questions and data into CSPs, and then they literally, uh, almost like one out start telling, "Block code, go to XYZ, and tell me what the results are." And so I don't know.
- 1:39:54
I kind of feel like from a philosophical point, people just don't see cultures today structured the way these people see AI and other people see other people. They're not the same.
- 1:40:07
Yeah. I, I think that's super fascinating. And anecdotally, um, it's mostly been lawyers when I've been at meetups that have come up and asked the most like salient questions about GenAI, and they'll say like, "I'm not a coder, but like this is what we're trying to do."
- 1:40:17
Also semantic search and all like the information compression that's available with a lot of the GenAI tools, like I think uniquely speaks to their use case too of there's this gigantic corpus of case law and need to know exactly this right now, right?
- 1:40:31
Yeah. It's-- But it is, um, it's an intense time I think for that reason. Yeah. Culturally, right? [whispering]
- 1:41:02
What are we doing? [whispering]
- 1:41:06
Nothing. [whispering]
- 1:41:09
What do you mean? [whispering]
- 1:41:09
We've got, uh, five slides left. [whispering]
- 1:41:20
Okay. [clears throat] Are you [REDACTED:gender] gonna configure an MCP server and MCPServers?
- 1:41:34
Uh, in this, uh, s-session or in general? Sorry, I didn't-- Right now? Uh, no. Yeah.
- 1:41:41
But, uh, I have a, I have a- [inaudible] Yeah. Yeah, for the most part. I have a tutorial for you that does that if you want it. [laughs] Thanks. Thanks for coming.
- 1:41:47
Appreciate it.
- 1:41:48
Yeah. Thank you.
- 1:41:51
Yeah.
- 1:41:52
All right, so we can show the agent piece of it now. Um, so I switched over to the step four branch, uh, which is the end of step three, uh, where we should have the created, uh, agent now that can run, uh, and actually have a conversation with the tooling, uh, which makes it really a lot easier
- 1:42:09
to work with. Uh, but we still have the power of being able to use the workflow tool to see what's going on and debug the steps along the way.
- 1:42:18
Uh, but now if we go to the Agents tab in Mastra, we've got a meme generator, and this gives us a very sim-- a, a very familiar look and feel.
- 1:42:27
Gives us a chat window, uh, but it gives us more than that. In the, uh, the sidebar here, we've got an overview. We can see the instructions, uh, that are given to the agent.
- 1:42:37
So it's a helpful UI agent, uh, or AI agent that's going to help us do that. Uh, it's got some critical steps in there. It's got the workflow that it should follow, um, and telling it what it has access to.
- 1:42:50
We also can see the model settings, and we can adjust this as we go. So we can add more or less temperature, uh, top P. We can change all of these on the fly and test it to really hone in on like what works best for whatever we're trying to build.
- 1:43:05
So I'll ask one more time. Work frustration.
- 1:43:08
Who's got the gnarliest work frust-- Who's the most frustrated at work right now? Raise your hand. And again, you must state your company and your immediate superior's name.
- 1:43:19
Um, I always get asked to go to large meetings for four hours, and then, uh, I don't speak at all. [laughs]
- 1:43:44
This bothers you too, I see. Okay.
- 1:43:46
Yes. Uh, meeting fatigue. Um, so now we can just ask the chat
- 1:43:52
And see the output, and it's much cleaner. It'll actually give us the image in line too, um, which makes it really nice and easy to [laughs] work with. That pointless meeting I was dragged into. [laughs]
- 1:44:05
But if you scroll up a little bit too, the other thing, uh, to see here is like, so the user asked a question, and you saw that the workflow got run.
- 1:44:12
Um, but now there's also additionally, like, the agent is still chatting, and it's in a familiar way that you already-- if it-- are familiar with if you use GPT.
- 1:44:20
Um, but then again, just a reminder that this is kind of in-- the ideal interface for, uh, folks that might be your clients or your customers or your colleagues.
- 1:44:27
Yep. And we can see, like, in line what happened. You know, the tool arguments that were passed in, the total result. We can see what tools were called, uh, and how in this case it was the workflow, and here's all of the information, and then the end result that we can actually play with.
- 1:44:44
Yeah, so this could be, you know, a chatbot that someone is, uh, requesting a report from, an analysis, a SQL query, a new code, a review of code, a review of a design, like a new image.
- 1:44:55
Uh, you can kind of put whatever you want behind the same interface. [typing]
- 1:45:16
Not really. Not really. [laughs]
- 1:45:37
It's non-deterministic, [REDACTED:gender]. [laughs] Um.
- 1:45:47
There's, there's no HR for this conference. [laughs] I was told that in advance.
- 1:45:51
So, uh, kinda to wrap that up, uh, what we built was a multi-step workflow that we could give to a conversational agent who knows how to execute it, knows what to pass into it, and what it's going to get back, and then it can do with that what it will.
- 1:46:05
It gave us, you know, human feedback. Uh, it wasn't just spitting out JSON in the end. Uh, it was giving us an actual response, and then showing us the image online and giving us a, a clickable link so that we could go share that image, uh, to whoever we wanted to.
- 1:46:20
Um, and we were able to create some awesome memes. I highly recommend you deploy this and use it because it's cathartic to really vent to it. Um, and if you're deploying it, the-- your data's safe probably.
- 1:46:32
I don't know. [laughs] Find out. Do it. So some key takeaways, uh, from this. Uh, we learned about the workflows, agents. We learned, uh, type safety, um, catching errors in that, uh, and the structured generation to ensure re-reliable output, uh, and some of the benefits of Mastra.
- 1:46:52
Yep. Um, also just say that, that we didn't show this here, but one of the examples that's on Mastra's site you can go check out is, like, a thirty-seven line of code, uh, pipeline that does retrieval augmented generation.
- 1:47:01
And if you've worked-- If you've built those pipelines before, like two years ago, you know, you had to glue together at least three or four libraries, and it was a super crappy experience.
- 1:47:09
Um, so it's just really nice to have a single place that you can go and define that pipeline at a high level. Um, so yeah, excited to experiment more with that as well.
- 1:47:20
There's a ton in here that you can do that we did not even scratch the surface of or, or point to yet.
- 1:47:24
Yeah, for sure. Coming up with, uh, what to do in two hours, it's, uh, not a lot of time.
- 1:47:28
Yeah.
- 1:47:29
And there's a lot, a lot more that we could dig into, and we highly encourage you to. So this was meant as a, a primer. Uh, you, you now have like an example.
- 1:47:37
What you're appetite.
- 1:47:37
Yeah.
- 1:47:37
Yeah.
- 1:47:38
Uh, now experiment with it. Add things, add tools, um, deploy it with MCP, like figure out how-
- 1:47:43
Share it with your coworkers. Yeah.
- 1:47:44
Yeah.
- 1:47:44
Ask them to use it, see what happens. [clears throat]
- 1:47:48
So yeah, explore the tool creation, uh, add a vector database, implement RAG, uh, all of those. And just a final reminder, uh, mcp.shop, um, go order a T-shirt, check it out.
- 1:48:00
Uh, it's really cool. So thank you. With that, um, we've got fifteen minutes left. We wanted to save that for questions. Any, uh, additional follow-up? Any just general casual conversation about these tools, uh, the fascinating world of AI, anything?
- 1:48:16
Vote on memes that we generated-
- 1:48:19
Yep
- 1:48:19
... and see who is the ultimate winner in the Slack channel. [laughs]
- 1:48:25
So I'm giving a talk on agents and workflows tomorrow, and I really liked your agents and workflows slide. Can you bring them up again?
- 1:48:31
What? I didn't hear what you said.
- 1:48:32
Yes, I didn't hear. Sorry.
- 1:48:33
Oh, sorry. I-I'm giving a talk on agents and workflows tomorrow.
- 1:48:37
Uh-huh.
- 1:48:37
And your agents and workflow slides were really good. Can you bring them up again? [laughs] [laughs]
- 1:48:41
Sure. We can share them too. They're open source because they're in our repo, and they're in Markdown.
- 1:48:50
How do you make those in Markdown?
- 1:48:52
There's a couple tools that Nick, Nick likes.
- 1:48:54
Oh, yeah, this was sly dot-- uh, slydev or sly.dev. Um,
- 1:49:00
yeah, it was something that we switched to relatively-
- 1:49:04
Twenty minutes
- 1:49:04
... not that long ago.
- 1:49:05
T-twenty minutes before this talk, yeah.
- 1:49:07
Pretty much. Yeah. [laughs]
- 1:49:14
Uh, questions for us or the Mastra team?
- 1:49:23
Uh, do make sure that you-- if you want a shirt, buy a shirt because we will actually send you a shirt. We might not send it this week, but, uh, we're tracking all the orders, and we're going to honor all of them.
- 1:49:33
So it's a limited edition mcp.shop shirt that will never be seen again. [laughs] [laughs]
- 1:49:41
And we have the books. We have some here, and I think we brought some in the back.
- 1:49:45
Yep.
- 1:49:45
As well as some pins. If you take one, uh-
- 1:49:48
If you want an official Mastra book, um, autographed copies are thirty dollars, right? [laughs]
- 1:49:53
And otherwise... [laughs]
- 1:49:57
Cool. Um, but yeah. Yeah, question.
- 1:50:00
Where's the memory and execution step?
- 1:50:03
The memory and execution step? Um.
- 1:50:06
Yeah. So y-y-you can configure, you know-- We, we configured SQLite for this demo, and that's what's powering, like, the ability as you create additional chats, you'll see the previous chats on the left rail.
- 1:50:15
Um, but there's a ton of different storage drivers. Like, there's the Postgres and everything else, right? Um, so you can basically choose what you need to. Um, and then once you configure the memory, you pass it into either the workflow or agent, um, and then that-- by, by way of doing that, you're telling it can use it
- 1:50:31
essentially. Is that your question?
- 1:50:33
The demo one doesn't have memory.
- 1:50:34
The demo one does have memory. It's using SQLite, and it's-
- 1:50:37
Yes, I saw, but, uh, it says to check the execution step. Where do I find that?
- 1:50:41
Uh, check execution step? Where are you? Let me... Oh, I'll come over.
- 1:50:50
Great talks.
- 1:50:51
Oh, thank you.
- 1:50:52
Thank you.
- 1:50:52
Thanks so much for coming. Appreciate it.
- 1:50:54
And, uh, yeah, we'll be around, uh, all week, uh, at the conference, so reach out. Uh, we'd love to chat more.
- 1:51:00
Let's talk about just, uh, like, that graph.
- 1:51:04
This is amazing. [applause]
- 1:51:05
Thank you. [upbeat music]