WEBVTT

NOTE Sentence-level transcript of https://www.youtube.com/watch?v=jc3kbZkuHTo

NOTE One cue per sentence. Cue ids are the line anchors on /transcripts/jc3kbZkuHTo.html. A cue ends where the next begins, or 2 s after its last word.

s1
00:00:13.120 --> 00:00:13.600
All right.

s2
00:00:13.600 --> 00:00:19.840
Well, I'm here to talk to you today about this demo and I've already stepped outside the box they told me not to step outside of.

s3
00:00:19.840 --> 00:00:26.920
Anyways, I'm here to talk to you today about an ice cream delivery demo that I've got for you and ultimately I'm here to talk to you about Temporal.

s4
00:00:26.920 --> 00:00:37.400
So, you're going to hear me pitching about the company that I work for and specifically in a way that will be about this ice cream delivery that's happening as you can see online right now.

s5
00:00:37.400 --> 00:00:38.520
So, what's happening?

s6
00:00:38.520 --> 00:00:39.640
Well, this is Ziggy.

s7
00:00:39.640 --> 00:00:41.800
Ziggy's Ziggy's is our mascot.

s8
00:00:41.800 --> 00:00:42.760
I love Ziggy.

s9
00:00:42.760 --> 00:00:47.920
And Ziggy has an ice cream store, not really, but let's say he does down in the Ferry Building.

s10
00:00:47.920 --> 00:00:50.600
Currently working hard delivering all kinds of ice cream.

s11
00:00:50.600 --> 00:01:01.160
Now, what's happening on this screen is that um we have multiple agents that are currently coordinating the delivery that's happening for deliver for Ziggy's ice cream service.

s12
00:01:01.160 --> 00:01:10.400
We have a fleet agent and a customer agent and a dispatch agent all working in coordination to make sure that the ice cream goes where it needs to go.

s13
00:01:10.400 --> 00:01:17.160
In this specific demo, what I've got up here is showing you we have 80K integrated with Temporal.

s14
00:01:17.160 --> 00:01:30.080
So, 80K is a um solution that Google's providing to help you orchestrate agents or multiple agents um and in this case it's specifically helping to coordinate the activities in relation to these agents.

s15
00:01:30.080 --> 00:01:32.480
And Temporal is baked into it.

s16
00:01:32.480 --> 00:01:38.680
We are integrated into it so that we can help track the state of what's happening with this kind of delivery.

s17
00:01:38.680 --> 00:01:48.720
So, Temporal actually helps you track your state and manage that state and we provide a UI that allows you to see what's going on on that screen.

s18
00:01:48.720 --> 00:01:50.840
So, this is what you're seeing over here.

s19
00:01:50.840 --> 00:01:53.400
And in that UI it's showing you the event history.

s20
00:01:53.400 --> 00:01:59.720
There's this this is the parent workflow for all the activities that are happening for Ziggy right now in its delivery suite.

s21
00:01:59.720 --> 00:02:06.680
And in this world, sometimes what we'll have in multiple agents is we need to have human in the loop.

s22
00:02:06.680 --> 00:02:12.520
So, let's say a customer made an order and the customer said, "Hey, I think I changed my mind about that order.

s23
00:02:12.520 --> 00:02:14.560
So, I'm going to submit a change."

s24
00:02:14.560 --> 00:02:24.320
And of course, when you do submit that change, it will not it if you depending on how you build it out, it could actually break your system.

s25
00:02:24.320 --> 00:02:29.080
But, heaven forbid you have it break your system when somebody has a change to submit.

s26
00:02:29.080 --> 00:02:40.560
In this case, we have an order and this order is currently pausing driver A. And so, driver A is waiting for that update to come through.

s27
00:02:40.560 --> 00:02:48.800
The system is running while this one specific change is only pausing one part of your system.

s28
00:02:48.800 --> 00:02:51.720
That one change coming from a human.

s29
00:02:51.720 --> 00:02:56.600
And another human needs to make a call and whether or not they want to accept that.

s30
00:02:56.600 --> 00:03:09.000
So, they say approve, and you'll watch that as I mentioned, the rest of the system kept running, orders were coming in, they're being filled, but in this specific question that came up about changing that order,

s31
00:03:09.000 --> 00:03:16.080
the update is getting processed and should go through in a second.

s32
00:03:16.080 --> 00:03:18.120
I suspect internet is part of it.

s33
00:03:18.120 --> 00:03:25.760
You can see it does get processed, the update is read, and that order will now move on to its next location, which is to the Oracle Park.

s34
00:03:25.760 --> 00:03:28.880
And there goes little A delivering the order for you.

s35
00:03:28.880 --> 00:03:29.480
So, there you go.

s36
00:03:29.480 --> 00:03:34.920
That is durable execution with Temporal and 80K integrated.

s37
00:03:34.920 --> 00:03:35.440
All right.

s38
00:03:35.440 --> 00:03:40.400
I'm here to talk to you about the human is an async API.

s39
00:03:41.120 --> 00:03:46.720
Let's go into First off, we've been hearing about agentic loops, right?

s40
00:03:46.720 --> 00:03:49.560
You can reason, act, and observe.

s41
00:03:49.560 --> 00:03:58.720
That is our whole thing that everybody's been talking about when they're talking about building out these agents and these agents running as autonomously as we possibly can.

s42
00:03:58.720 --> 00:04:01.360
Um there's this kind of loop that we're looking at, right?

s43
00:04:01.360 --> 00:04:05.840
We've heard other words for this where we're thinking, we're acting, we're perceiving.

s44
00:04:05.840 --> 00:04:09.440
Um and that's that's the essence of it.

s45
00:04:09.440 --> 00:04:12.480
It can be a for loop, it can be a while loop.

s46
00:04:12.480 --> 00:04:21.079
Most of this year we've been hearing people tell us about the harness and what the harness is supposed to be to help us get those agents into production.

s47
00:04:21.079 --> 00:04:26.360
So, the harness I'm not going to sit here and tell you I I am the expert on the harness.

s48
00:04:26.360 --> 00:04:35.120
Um I'm going to tell you from everything I've researched, I'm trying to give you at least a map to a degree of what I understand so far with the understanding that there's a lot of debate about this.

s49
00:04:35.120 --> 00:04:40.800
I've heard that the harness is possibly the model is is part of all of this or it's not.

s50
00:04:40.800 --> 00:04:50.040
I think there's there's debates around whether the model's in it, whether tools are in it, memory's in it, uh guardrails, security, but ultimately it's all about getting these agents

s51
00:04:50.040 --> 00:04:55.320
with structure so that they can work reasonably well when they're put out into production.

s52
00:04:55.320 --> 00:04:59.000
And part of that picture should be durability.

s53
00:05:00.120 --> 00:05:04.400
The system that I showed you, the demo that I just showed you, this is what it is.

s54
00:05:04.400 --> 00:05:05.840
It's got these loops.

s55
00:05:05.840 --> 00:05:11.160
We've got a loop for the fleet agent, we got a loop for the customer agent, we got a loop for the dispatch agent.

s56
00:05:11.160 --> 00:05:13.640
The fleet and the customer are doing research.

s57
00:05:13.640 --> 00:05:18.520
One's doing it on the actual drivers using thing tools like Google Maps.

s58
00:05:18.520 --> 00:05:23.240
Um the other one is doing research on the orders like Google with tools like Google Search.

s59
00:05:23.240 --> 00:05:28.240
While the dispatch agent is taking that input and making decisions with it.

s60
00:05:28.800 --> 00:05:29.200
All right.

s61
00:05:29.200 --> 00:05:38.200
So, that's great that these activities are happening with these three loops and we've got the human potentially providing input in part of this structure.

s62
00:05:38.200 --> 00:05:45.640
But what's important is that we need to have some durability in that system to make sure that it stays up and running and doesn't fall over.

s63
00:05:45.640 --> 00:05:47.400
And that's where Temporal comes in.

s64
00:05:47.400 --> 00:05:55.080
So, Temporal is helping you to standardize your fai- failure handling and your state management in your system.

s65
00:05:55.080 --> 00:06:00.400
Any system, any distributed system, especially any systems with agents, we are going to help you standardize that.

s66
00:06:00.400 --> 00:06:03.040
We're software and we're also a service.

s67
00:06:03.040 --> 00:06:10.360
The software itself is creating a lot of primitives that you can just use out of the box and basically apply to your code base.

s68
00:06:10.360 --> 00:06:24.160
We come in all kinds of flavors of code, uh so you can use this in Python or TypeScript or Rust, um but ultimately we're giving you some standard primitives to apply to your code to be able to make sure your your state your

s69
00:06:24.160 --> 00:06:26.440
your system is stateful.

s70
00:06:26.440 --> 00:06:31.880
So, the three main primitives we tend to talk about are the worker, the workflow, and the activity.

s71
00:06:31.880 --> 00:06:34.360
The worker is really running that code.

s72
00:06:34.360 --> 00:06:40.360
The workflow is where you're going to be able to uh keep track of the steps in your system.

s73
00:06:40.360 --> 00:06:44.880
And so, this is where like an 80K framework would be running inside a workflow.

s74
00:06:44.880 --> 00:06:50.120
Uh your agent could work run inside of a workflow cuz it's a loop, right?

s75
00:06:50.120 --> 00:06:55.000
Whereas the activity is all the stuff that's integrating or interacting with stuff externally.

s76
00:06:55.000 --> 00:07:01.440
So, if you've got a loop, uh any kind of model call or any kind of tool call, those would be set up as activities.

s77
00:07:01.440 --> 00:07:02.320
So, these are the primitives.

s78
00:07:02.320 --> 00:07:10.160
So, you structure your code with our primitives to be able to track the state of your system.

s79
00:07:10.160 --> 00:07:13.840
And we're free and open source at that GitHub URL.

s80
00:07:13.840 --> 00:07:17.880
Um you pay us if you you have us manage your state with our service.

s81
00:07:17.880 --> 00:07:22.680
Otherwise, you can host it self-host it on your own system.

s82
00:07:22.720 --> 00:07:24.240
Let's get back to human in the loop.

s83
00:07:24.240 --> 00:07:29.520
Why uh what I wanted to really get across to you about this whole talk.

s84
00:07:29.520 --> 00:07:35.960
So, the human, granted, you know, we're not tools, but we are a tool to the agent.

s85
00:07:35.960 --> 00:07:44.720
Um and you might think, "Okay, well, we're going to call the human or we're going to have the human come in and give us uh some kind of information to pass into this loop.

s86
00:07:44.720 --> 00:07:54.080
If you write it just straight out as a function to say call the human or let the human have a an input, it can become a blocking call.

s87
00:07:54.080 --> 00:07:57.240
And it can get lost if your service went down.

s88
00:07:57.240 --> 00:08:03.000
It might lose track of what was going on with that human's engagement.

s89
00:08:04.480 --> 00:08:09.880
What you want is these two core primitives to be applied to your your code and your agents.

s90
00:08:09.880 --> 00:08:13.040
You want a wait condition and a signal.

s91
00:08:13.040 --> 00:08:27.760
You're allowing yourself to isolate an event, apply a wait condition, store that in that workflow, in that durability layer, so that if anything fell over in the system, when that

s92
00:08:27.760 --> 00:08:31.840
system came back up, it would know where it left off.

s93
00:08:31.840 --> 00:08:41.159
And you could send a signal at any point, but the whole system could keep running without you necessarily being blocked on that one call to the human.

s94
00:08:42.360 --> 00:08:46.120
The code pretty much is is is fairly simple in terms of the primitives.

s95
00:08:46.120 --> 00:08:49.240
And granted, I know this is Python, but it's the same situation.

s96
00:08:49.240 --> 00:08:53.600
You're going to apply a wait condition and you're going to apply a signal.

s97
00:08:54.480 --> 00:08:59.760
You basically you're not holding a thread, you're not it's going to survive any kind of crashes.

s98
00:08:59.760 --> 00:09:04.360
It's got all kinds of built-in primitives like timeouts, for example.

s99
00:09:04.360 --> 00:09:12.240
If you're waiting on a human to respond and you want to make sure that it only waits for so long, you can apply timeouts and other types of primitives.

s100
00:09:12.240 --> 00:09:14.280
Um and this can scale.

s101
00:09:14.280 --> 00:09:19.520
You can have millions of workflows out there parked, and it can keep running.

s102
00:09:19.520 --> 00:09:25.800
So, what I want to show you actually I'm going to show you some more code, but I'm going to kick off the next demo so that it's up and running.

s103
00:09:25.800 --> 00:09:31.166
And I'll share with all of you, if you haven't already figured this out, uh my eyes are injured.

s104
00:09:31.166 --> 00:09:31.640
[laughter]

s105
00:09:31.640 --> 00:09:41.640
I am squinting at times and also realizing that I need additional in support here that I did not prepare for, but that's okay cuz I can adapt.

s106
00:09:41.640 --> 00:09:48.320
All right, so let's get this other example up and running and then I'm going to tell you a little bit more about the code that's up here.

s107
00:09:48.320 --> 00:09:51.200
Let's make sure that's running.

s108
00:09:51.640 --> 00:09:58.480
I'm resetting my example and of course it's not going to be as easy peasy as I'd like.

s109
00:09:58.600 --> 00:10:01.400
Also, is everybody hearing me okay?

s110
00:10:01.400 --> 00:10:02.080
Think so.

s111
00:10:02.080 --> 00:10:04.040
Great.

s112
00:10:04.040 --> 00:10:09.320
It's an interesting condition to be working in this space with the noises around us.

s113
00:10:09.320 --> 00:10:12.120
All right, I think it's up and running.

s114
00:10:12.120 --> 00:10:14.560
All right, so let's talk a little bit more about the code.

s115
00:10:14.560 --> 00:10:20.680
Now, I already told you about our primitives of activity workflow and worker.

s116
00:10:20.680 --> 00:10:35.640
And so with the activity, you are basically for ADK in particular, we have we have the temporal model class that you will wrap around the model and then you'll pass it in for ADK to be able to set up that actual agent.

s117
00:10:35.640 --> 00:10:36.880
It's pretty simple.

s118
00:10:36.880 --> 00:10:47.320
You apply this temporal model, you apply our activity tool to wrap around your tools and you you run your agent.

s119
00:10:47.320 --> 00:10:50.760
You run your agent like you would with any kind of ADK setup that you're going to do.

s120
00:10:50.760 --> 00:10:56.120
And you also set up a worker and you pass in the Google ADK plugin.

s121
00:10:56.120 --> 00:10:59.680
So that's setting up your worker workflow and activity.

s122
00:10:59.680 --> 00:11:13.440
And then similarly, you have your wait condition and the wait condition is using this async io when it uses a wait to say like for that specific workflow, I want you to pause it, don't run any other code, but you can keep running the co-routines

s123
00:11:13.440 --> 00:11:16.880
on that workflow or any other workflows in the system.

s124
00:11:16.880 --> 00:11:25.600
Meanwhile, that workflow.signal, it will be able to take any kind of input and inject it into a running workflow.

s125
00:11:25.640 --> 00:11:35.680
And the workflow will be taken off of your memory or taken off of your system and put in in parked if it's not running anything at that point.

s126
00:11:36.200 --> 00:11:38.000
So, I showed you human to agent.

s127
00:11:38.000 --> 00:11:44.480
What I want to show you is what does it look like when the agent comes in and needs the human to be involved?

s128
00:11:44.480 --> 00:11:45.480
It's pretty similar.

s129
00:11:45.480 --> 00:11:52.400
You're using I'm just going to go ahead and tell you right now, you're going to use a workflow you're going to use a wait condition and a signal.

s130
00:11:52.400 --> 00:12:00.200
I'm going to use LangChain in this example and also 80K because the reality is with Temporal we can work with multiple frameworks.

s131
00:12:00.200 --> 00:12:02.160
We are framework agnostic.

s132
00:12:02.160 --> 00:12:05.640
We work across a variety of different tools.

s133
00:12:05.640 --> 00:12:11.680
Um so, in terms of LangChain they build out graphs and to build out the multiple agent setup.

s134
00:12:11.680 --> 00:12:17.400
And in this integration the way we work, you're passing us into each node for your graph.

s135
00:12:17.400 --> 00:12:19.760
So, you're setting up with the metadata looks like.

s136
00:12:19.760 --> 00:12:25.680
And if you're making any kind of model call like an invoke the model, that would be set up as an activity.

s137
00:12:25.680 --> 00:12:30.080
If you're making any type of other tool call, it would also be set up as an activity.

s138
00:12:30.080 --> 00:12:35.120
But if it's a step, a step in that process, then that's set up as a workflow.

s139
00:12:35.120 --> 00:12:43.760
This is determinism and non-determinism in terms of workflows are deterministic, activities are non-deterministic.

s140
00:12:43.760 --> 00:12:49.160
And then of course, you pass in for the worker the plugin for the LangChain.

s141
00:12:50.800 --> 00:12:55.920
In terms of LangChain in particular, we use the interrupt to call out from their node.

s142
00:12:55.920 --> 00:13:01.839
So, this is part of LangChain and also to be fair, LangChain is more than a framework, but in this case I'm using it as a framework.

s143
00:13:01.839 --> 00:13:13.280
But you use interrupt to call out and then what you're going to do next is use that wait condition in the loop tracking for that interrupt signal to pause that workflow.

s144
00:13:13.280 --> 00:13:20.600
And then the signal will capture whatever the human human responds with to the question that's been asked.

s145
00:13:20.600 --> 00:13:22.440
Okay, let's see what that looks like.

s146
00:13:22.440 --> 00:13:26.839
I'm going to bring up my demo and show you as they're running.

s147
00:13:26.839 --> 00:13:28.760
This is the design that I've got.

s148
00:13:28.760 --> 00:13:31.920
I've got the customer and the fleet agents running on 80K.

s149
00:13:31.920 --> 00:13:35.480
I've got the dispatch agent running on LangGraph.

s150
00:13:35.480 --> 00:13:39.760
And Temporal is interwoven throughout.

s151
00:13:40.240 --> 00:13:42.080
So, that's how that's working.

s152
00:13:42.080 --> 00:13:46.400
Now, let's see if I can show you.

s153
00:13:47.720 --> 00:13:51.600
In this case, I'm going to drop a high-value order.

s154
00:13:51.960 --> 00:13:55.680
This is an order that will most likely want a human involved.

s155
00:13:55.680 --> 00:14:01.040
The workflow for the whole system is showing that all these agents are doing their job.

s156
00:14:01.040 --> 00:14:03.560
They're continuing to keep assessing orders.

s157
00:14:03.560 --> 00:14:12.600
And the way I've got this set up is I have workflows uh child workflows that are split off for each order per framework.

s158
00:14:12.600 --> 00:14:17.720
So, that special order actually had its own assessment done.

s159
00:14:17.720 --> 00:14:21.480
And here we see that the customer and the fleet agents did their work.

s160
00:14:21.480 --> 00:14:22.400
They did their assessment.

s161
00:14:22.400 --> 00:14:24.400
They came back with a result.

s162
00:14:24.400 --> 00:14:28.080
And they sent that off to the dispatch agent.

s163
00:14:28.080 --> 00:14:33.125
The dispatch agent said, "Hey, okay, I need Oh, well, there you go.

s164
00:14:33.125 --> 00:14:34.240
[laughter]

s165
00:14:34.240 --> 00:14:38.160
I need to get uh a human involved in this.

s166
00:14:38.160 --> 00:14:42.440
So, I'm going to go into a pause state while I'm waiting for the human to respond."

s167
00:14:42.440 --> 00:14:46.040
And we know that humans are not going to respond in 200 milliseconds.

s168
00:14:46.040 --> 00:14:47.520
If you are, that's great.

s169
00:14:47.520 --> 00:14:50.080
Maybe there's a there's probably a couple people out there who are.

s170
00:14:50.080 --> 00:14:54.440
But humans are most likely going to take several minutes, maybe days, maybe weeks, maybe longer.

s171
00:14:54.440 --> 00:15:01.880
And you can you can because this is just pausing that one specific event.

s172
00:15:01.880 --> 00:15:04.520
And as you can see, the little cars are continuing to keep going.

s173
00:15:04.520 --> 00:15:11.800
So, now what I'm going to try to do is show you what happens if I was to take this service offline.

s174
00:15:11.800 --> 00:15:15.800
So, let's make it bigger for all of us.

s175
00:15:15.800 --> 00:15:20.320
And kill worker.

s176
00:15:20.320 --> 00:15:21.080
Cool.

s177
00:15:21.080 --> 00:15:24.040
So, that takes it offline.

s178
00:15:25.040 --> 00:15:27.160
You can see it's disconnected.

s179
00:15:27.160 --> 00:15:29.840
Don't mind me as I do this in a very interesting way.

s180
00:15:29.840 --> 00:15:30.680
All right.

s181
00:15:30.680 --> 00:15:39.800
If I say approve while it's offline, so what's happened is as I mentioned, this is stuff that's happening off of your service.

s182
00:15:39.800 --> 00:15:42.400
It's over on its own data store.

s183
00:15:42.400 --> 00:15:46.440
So, we can still keep track of that event and queue it.

s184
00:15:46.440 --> 00:15:50.800
And then when I bring it back up, yeah, I know.

s185
00:15:50.800 --> 00:15:52.920
I have this really well organized here here for y'all.

s186
00:15:52.920 --> 00:15:55.760
But, I'm going to I'm going to bring it back up and then we're going to see if it works.

s187
00:15:55.760 --> 00:15:57.040
Let's see.

s188
00:15:57.040 --> 00:15:59.080
Make it.

s189
00:15:59.080 --> 00:16:00.440
And it's back online.

s190
00:16:00.440 --> 00:16:05.680
And you'll notice that the dispatch agent will What's happening is that your event log is getting replayed.

s191
00:16:05.680 --> 00:16:06.840
It's not redone.

s192
00:16:06.840 --> 00:16:13.040
It's just replayed up until the point at which it last left off, so it knows, here's my current state.

s193
00:16:13.040 --> 00:16:15.880
And this is now the next step in that state.

s194
00:16:15.880 --> 00:16:24.360
And it's been queued up to then have that step know that it that the person approved it, and that order got assigned, and it's already been delivered, actually.

s195
00:16:24.360 --> 00:16:25.920
So, there you go.

s196
00:16:25.920 --> 00:16:29.360
That is durability in your system.

s197
00:16:29.360 --> 00:16:33.120
Your system can come down, and it can recover.

s198
00:16:33.120 --> 00:16:41.080
And it can have all these other primitives that will help you manage a complex state because these kinds of distributed systems are complex.

s199
00:16:41.080 --> 00:16:41.600
All right.

s200
00:16:41.600 --> 00:16:44.600
Last couple things I want to mention.

s201
00:16:44.600 --> 00:16:46.680
When should the human be in the loop?

s202
00:16:46.680 --> 00:16:48.240
This is the real question.

s203
00:16:48.240 --> 00:16:49.440
It's a hard one.

s204
00:16:49.440 --> 00:16:50.800
I will say this.

s205
00:16:50.800 --> 00:16:54.800
The big thing you want to take into consideration is the cost of being wrong is high.

s206
00:16:54.800 --> 00:16:59.280
Okay, it's a case-by-case basis, and we know we're trying to get to autonomy as much as we possibly can.

s207
00:16:59.280 --> 00:17:04.839
We also know these models are probabilistic, and they are hard to get to a place to be reliable.

s208
00:17:04.839 --> 00:17:07.839
That's why we got all this stuff happening around harnesses that are interesting.

s209
00:17:07.839 --> 00:17:10.920
I could go into a whole 'nother conversation about that if y'all want it at a later date.

s210
00:17:10.920 --> 00:17:14.360
But, ultimately, you want to assess the cost of being wrong.

s211
00:17:14.360 --> 00:17:15.400
What is that worth to you?

s212
00:17:15.400 --> 00:17:18.000
And especially in a security standpoint.

s213
00:17:18.000 --> 00:17:21.720
And we know like on the other side of this picture, alert fatigue is real.

s214
00:17:21.720 --> 00:17:26.720
Like a lot of us are seeing, you know, you just start saying yes, yes, yes, yes, yes every time it asks you questions.

s215
00:17:26.720 --> 00:17:29.280
So, you're trying to balance between those two.

s216
00:17:29.280 --> 00:17:37.240
And we're trying to get the models better so that you can trust them, so that you can address that alert fatigue, but they're still probabilistic models.

s217
00:17:37.240 --> 00:17:40.320
So, when should they be in the When should the human be in the loop?

s218
00:17:40.320 --> 00:17:44.400
That's the thing you've got to evaluate for the problems that you're solving.

s219
00:17:45.040 --> 00:17:57.480
At the end of the day though, what you saw there, what I gave you as an example, whether it's the human initiating it or the computer initiating it, um you were seeing that we are using two main primitives

s220
00:17:57.480 --> 00:18:07.120
in terms of you're applying a weight condition to pause that workflow, and a signal from the human to be able to continue the work and say, "Here's the result.

s221
00:18:07.120 --> 00:18:09.280
Now keep moving forward."

s222
00:18:09.280 --> 00:18:15.480
And And whether you've actually paused it and taken it offline or you brought it back online.

s223
00:18:15.480 --> 00:18:19.160
And I've shown you that we can use multiple frameworks.

s224
00:18:20.280 --> 00:18:24.000
All right, if you have any questions, I'm going to stick around for a few more minutes.

s225
00:18:24.000 --> 00:18:32.840
Um if you I've got up here a QR code that will take you to some resources about Temporal, as well as some of the demos that I've done, this demo included.

s226
00:18:32.840 --> 00:18:34.600
This is up on GitHub.

s227
00:18:34.600 --> 00:18:40.480
Uh the slides itself will be up later cuz of course in true form I've been tweaking them up until now.

s228
00:18:40.480 --> 00:18:44.160
So, I'll be posting those up and linking them to the GitHub repo.

s229
00:18:44.160 --> 00:18:47.040
But yeah, if you have questions, please reach out.

s230
00:18:47.040 --> 00:18:49.760
Um and you know, have fun building your agent clips.

s231
00:18:49.760 --> 00:18:55.160
I'm also curious to hear what your what problems you're solving with agents and how you're building them autonomously currently.

s232
00:18:55.160 --> 00:18:56.720
So, feel free to find me.

s233
00:18:56.720 --> 00:18:59.120
And thank you.

s234
00:19:14.880 --> 00:19:16.880
Woo!
