Latest / Agentic Conversations (formally mlops.community) / Durable Execution and Modern Distributed Systems
Transcript
- 0:00It's all about developer productivity, but different
- 0:01aspects of developer productivity, right?
- 0:03Here's some common patterns for building agentic systems.
- 0:06OK, boom, agent SDKI want it interacting with the world.
- 0:11I want it long running, reliable async temporal.
- 0:16What you can do now is you can just go, you can fix that error,
- 0:22save the file and then we go restart the server and that'll
- 0:26just finish. Should we chat durable
- 0:43execution? Let's do it.
- 0:44All right, let's do it. Let's talk about durable
- 0:46execution. Can you give me the breakdown,
- 0:48the TLDR of what it is? So durable execution basically
- 0:52just means that your software does what it's supposed to do.
- 0:56At Temporal, we talk about making software crash proof, and
- 1:02that means that whatever it is, the program starts at the
- 1:05beginning and it's going to run to the end regardless of what
- 1:11happens with failures, which are particularly common in the
- 1:14cloud, right? You have servers that are flaky,
- 1:17services that are overloaded, AP is that are down rate limited,
- 1:22you name it. There's a mechanism within
- 1:25Temporal for recovering from that.
- 1:28And what's important about it is that the programmer doesn't need
- 1:32to do extra work to do that. Of course you can write retry
- 1:36logic. Of course you can think about
- 1:38distributed systems like you can do it.
- 1:40People have been doing, people have been building reliable
- 1:42software. But how do you make it easy?
- 1:45And that's really what the the breakthrough is with modern
- 1:49durable execution in systems like Temporal.
- 1:52Plan for the best, but expect the worst.
- 1:55Folks that are operating at scale and, and in the cloud,
- 2:02maybe not the complete worst, but often, you know, most of the
- 2:07worst things that you can imagine.
- 2:09Like a lot of those things are actually just going to happen.
- 2:11Like that's just the reality of scale.
- 2:13That's why they're going to exist.
- 2:16What you're doing with durable execution, and I think I
- 2:18probably should take a moment to just sort of explain some of the
- 2:21mechanics of how it works. But but what you're doing is
- 2:26you're basically taking that concern of dealing with making
- 2:31things reliable and you're putting it in a piece of
- 2:34software, right, which is, you know, say that that temporal
- 2:38software, you're saying, OK, we have reliability over here, we
- 2:41have business logic over here. And those can be treated as
- 2:44separate concerns. And Temporal is open sources,
- 2:48MIT licensed. You can run it on top of
- 2:52Cassandra or Postgres for your persistence layer.
- 2:54You can also use temporal cloud if you want.
- 2:56But it's, it's all of the same functionality that you can
- 2:59migrate back and forth. Let's talk about how it works
- 3:04because this is one of the things that it definitely took
- 3:08me a minute to wrap my head around it.
- 3:10I think it takes most people a minute to wrap their head around
- 3:13it. And then once you kind of get
- 3:15it, it, it just, it makes a lot of sense.
- 3:18So from the programming model perspective, what you're doing
- 3:23is you're working with an abstraction that is going to
- 3:30basically cover up a lot of the things that are complicated
- 3:33about distributed systems. So you're going to be working
- 3:35not with servers as your building blocks, but with
- 3:38programming language level constructs like and in
- 3:43particular, these are in our terminology, workflows and
- 3:48activities. And each of those are are
- 3:51basically just functions, so regular code in whatever
- 3:53language you want. And there is a distinction
- 3:59between the types of code that you put in those.
- 4:02So activities are doing IO and basically they're arbitrary
- 4:06code. What makes durable execution
- 4:09work is that the workflow code is a restricted program model.
- 4:17And in particular, the restriction that we have on that
- 4:20is to say, if something goes wrong and we rerun that code,
- 4:27provided we give it the same inputs as it had the first time
- 4:30it ran, it's going to do the same thing again.
- 4:33And so this is called deterministic execution.
- 4:36It's what you get in, you know, normal code if you have, you
- 4:39know, 4 loops. As long as you're not calling,
- 4:41say, a random number generator. Or an LLM.
- 4:44Or an LLM, which is sort of the obvious case for for an
- 4:49activity, then it's going to do the same thing, right?
- 4:53And so for example, if you are coding an agent with Temporal or
- 4:58if you're using one of our integrations in general, that
- 5:01agentic loop, right, that is workflow code, right?
- 5:06And because what is it doing? It's it's iterating over calling
- 5:10the LLM, calling tools, calling the LLM, calling tools until
- 5:14it's done, OK, that's, that's a deterministic program that does
- 5:18that. And then whenever those
- 5:20activities which are say tool calls, maybe calling an API or
- 5:24calling an LLM, whenever those are made, whenever that result
- 5:28comes back, what happens in the Temporal SDK is that it takes
- 5:33that result and it saves it out to the temporal server.
- 5:39So that's where it's captured durably in temporal server,
- 5:42which is going to be backed by a database or by Temporal cloud.
- 5:45In the case of cloud, it can even be replicated to multiple
- 5:50cloud regions, right? So, you know, we, we actually
- 5:53see this when say you have a major cloud provider outage, you
- 5:56have a a region go down, you can actually take a running program
- 6:00like mid execution and move that from one region to another
- 6:04region, which is just a whole nother level of reliability.
- 6:07And when you think about it, we think about, oh, I could do,
- 6:09maybe I could replicate my database, right.
- 6:13Will a database move a running query?
- 6:15Is there any database? I haven't done exhaustive
- 6:17research, but that will move a running query from one region to
- 6:20another when it fails. And what about exactly?
- 6:23Yeah. Or when that region fails or a
- 6:24business process. So that's the type of thing that
- 6:27this model lets you do. And it lets you do it with your
- 6:31regular programming, like regular code.
- 6:34And I think that's, I mean, that's basically the thing
- 6:36that's so brilliant about it where I give the founders and
- 6:39the, you know, the other folks who are innovating on this like
- 6:42a just a ton of credit for figuring this out.
- 6:44If we're not using durable execution, what does that look
- 6:47like? Yeah, there's a bunch of
- 6:49different things that that people do.
- 6:51So I'll say there's some folks who just build systems that are
- 6:53just not that reliable, right? And those are the folks that I,
- 6:57I built them in my day too. And that means that you are
- 7:01spending a bunch of time chasing down what went wrong.
- 7:05You're going to write some scripts against the database,
- 7:07right? And you're going to say, hey,
- 7:09you know, maybe I had a transaction.
- 7:11I was, maybe I'm doing something simple.
- 7:12Let's just say we always take the money moving example, debit
- 7:14credit, right? Can I write a job that goes
- 7:17through at the end of the day and figures out where things
- 7:20broke and then writes a script to to fix all those I can do it,
- 7:24right? It's like it's kind of doable.
- 7:28Do I want to do that? Is that robust?
- 7:29Is that reliable? Does that scale to a team and
- 7:31complex functionality? What if there's like more
- 7:34business logic? What if it's not just debit,
- 7:36credit? What if there's, you know, some
- 7:39checks that you know, know your customer, any of these kinds of
- 7:41things, right? It it's going to get really
- 7:44messy really, really fast. So then kind of another level on
- 7:48top of that is people say, OK, well now I'm going to start to
- 7:53use event driven architecture, I'm going to start having queues
- 7:56and I'm going to put my process together this way.
- 7:59And so again, can you do it? Like, yes, you can do it.
- 8:03You can cover all the edge cases, You can have the dead
- 8:05letter queues and you can have the compensation logic and you
- 8:07can do all of that, right? Like you can do it with a
- 8:12durable execution abstraction. That code just becomes really
- 8:16simple. It gets cleaned up.
- 8:17You make sure that activity code on a piece by piece basis is
- 8:20item potent in terms of the operations on the database.
- 8:23That maybe basically means you have some key.
- 8:25If that key, you know the customer key, the transaction ID
- 8:27is unique. It'll anytime it retries, it'll
- 8:30just you know, it'll, it'll fail out.
- 8:32It'll make sure it gets done exactly once and then it, it
- 8:36really cleans that up. And then, you know, I, I'd say
- 8:43another class that we're seeing now, particularly with the
- 8:46agentic systems is that you have checkpoint based solutions.
- 8:50OK, So what is a checkpoint? A checkpoint basically means
- 8:53take my entire program state, save it down.
- 8:56You also see this often in machine learning training, for
- 8:59example. And you know, checkpoints are
- 9:02OK, right? But they are coarse grained,
- 9:07generally speaking. So if you are in the middle of
- 9:11say, multiple tool calls or maybe you have a human in the
- 9:15loop interaction, it's not clear that that point in the code is
- 9:20going to necessarily be a good point to write a checkpoint.
- 9:23And on top of that, you're going to have to write checkpoint
- 9:27logic. And there's some frameworks
- 9:30that, you know, do an OK job of sort of hiding some of the work
- 9:33of writing a checkpoint logic. But in in the general case, you
- 9:38know, you're still writing a function to take all my state,
- 9:42save it out and bring it back. And then you're getting more
- 9:45coarse grained recovery. So I thought this was a form of
- 9:49checkpointing. How is it different?
- 9:51Yeah. So I think you can define the
- 9:57terminology potentially in in different ways.
- 10:00If I were to think about say just set aside code and just
- 10:04talk about maybe something like file systems or backups, right?
- 10:08Where I could say, OK, well, I'm going to snapshot this file
- 10:11system and then maybe I'll do some incremental backups or
- 10:14incremental snapshot updates. It's basically doing it
- 10:21incrementally in the sense that you have some, some starting
- 10:25state, which in general is, is, is nothing, right?
- 10:28It's just the program starts, maybe has some initial
- 10:30arguments. And then as it runs and as it
- 10:33interacts with other systems, with tools, with, with LMS, it's
- 10:37getting sort of the incremental deltas to each state and that's
- 10:41being saved. And then because we have certain
- 10:45guarantees about how that program runs, we can apply those
- 10:51deltas back to that state for programs that do run for a
- 10:57extended period of time. So you have an agent that's
- 11:00going to run forever. You may also with temporal find
- 11:04points where you say, OK, you know what, this is where I'm
- 11:07going to save a full snapshot of my state.
- 11:10It's just gotten too big of a history.
- 11:12And oh, and, and it's a good point for me to do it right.
- 11:14And in some cases like that top of that, say, say it's a chat,
- 11:18you know, the top of that loop where you say, OK, now we're
- 11:20pausing the agent, let's see whether what the user wants to
- 11:23do next. That can be a place where we can
- 11:25say OK. And it in temporal language is
- 11:28called continuous new. And now we basically do a, you
- 11:32know, a full checkpoint. But it is, you know, the, the
- 11:35durable execution model, it is a different abstraction and it's,
- 11:41you know, the, the IT gives you what a checkpoint would give
- 11:45you. But with it's a very different
- 11:47way of doing it. And that's what we call it,
- 11:48something. Is it right to assume that
- 11:51basically you're guaranteeing the end goal in a way like
- 11:58you're saying? OK, a checkpoint is more for
- 12:01it's almost reactive, like I'm checkpointing along the way so
- 12:05that if shit hits the fan, I can come back to that checkpoint.
- 12:10But you're saying like we're going to guarantee you, we get
- 12:12to the end. You don't necessarily need to
- 12:14know if we if shit hit the fan along the way.
- 12:18Absolutely. You don't need to know about it
- 12:20and you actually also don't need to think about writing that save
- 12:26code in most situations. I'll say there is this.
- 12:29Like I said, you can do the continuous new, you can do
- 12:32checkpoints for things that are going to run for a long time and
- 12:35generate state for a long period of time.
- 12:37Temporal jobs can run forever, right?
- 12:40I, I said they make sure they run to completion.
- 12:42It's whatever that is. That actually could be Infinity,
- 12:46but but but yeah, if if you're doing, say you're doing, you
- 12:50know, model training or something like that, you'd be
- 12:53probably be familiar with, you know, you get to a certain
- 12:55point, you say, OK, now would be a good time to save a
- 12:57checkpoint, right? Maybe I've, I've done a passive
- 12:59fan out and and and back, OK, checkpoint this thing.
- 13:03Or maybe I've after so many iterations or steps, write a
- 13:06checkpoint and then I have to write also the code to recover,
- 13:10which is to read that checkpoint.
- 13:13If I have one single program that does one thing linearly,
- 13:18OK, maybe I can do that. Maybe that, that that's not so
- 13:21bad, right? It's but if things are branching
- 13:24out, right, if I'm doing hyper parameter optimization, I've got
- 13:27like a whole bunch of these that are running in parallel.
- 13:30And then maybe they also sometimes you communicate and
- 13:34feed updates back to each other. Now sort of getting clean
- 13:38checkpoints across a sort of concurrent program like that
- 13:45basically doesn't really work. Yeah, it's like a It's like
- 13:51Santa Claus. It's nice in theory, but it
- 13:54doesn't exist. Yeah, don't tell my kids.
- 13:58Yeah. Exactly.
- 13:59We used to in Spain, there was a moment that we would joke when
- 14:05something was like, not real. You'll be like, oh, it's the
- 14:09parents. That was the same like Santa
- 14:12Claus. It doesn't exist.
- 14:13It's the parents kind of alluding to that.
- 14:16So OK, I'm getting a better idea of it now.
- 14:21You're a databases guy though, right?
- 14:23Through and through. And I.
- 14:26Have a lot of time in databases. Like marry these two worlds for
- 14:28me. Yeah.
- 14:30So prior to being at Temporal I had actually started a company
- 14:36that was in the database space looking at serverless database
- 14:39and also AI for database administration.
- 14:43So Crystal DBA Company was acquired by Temporal last
- 14:46summer. Congrats.
- 14:47So thank you. So what was really interesting
- 14:52there when we did we did that acquisition was actually the
- 14:56missions of the companies were basically the same even though
- 15:01the technology was actually quite different.
- 15:05So at the end of the day, when we think about databases and and
- 15:13temporal, it's about making the systems run reliably without
- 15:18developers needing to think about it, right.
- 15:21So if you think about where the that sort of just write the code
- 15:28and put it in some system and it'll just it'll do the right
- 15:31thing. Where does that happen?
- 15:32Actually, it happens in these transactional database systems,
- 15:35right? They give you those guarantees
- 15:37of it'll run end to end. It'll make all the changes.
- 15:41Now there are a bunch of drawbacks there.
- 15:45So one is, is that you're often writing in some arcane language
- 15:50that the basically nobody, you know, whether whether it's, you
- 15:55know, PL. sequel or the, the Postgres, everybody's kind of
- 15:59got their own variant of it that just works for that one specific
- 16:01database. No standards.
- 16:03And just a really, you know, take me back to the, to the 80s
- 16:08or 90s typically, like in terms of programming language style
- 16:11and capability. And you know, I can't, can't
- 16:14define things the way I normally do so on and so forth.
- 16:17So what you're getting with modern durable execution is
- 16:24you're getting that guarantee basically of my software is, you
- 16:28know, bulletproof. It does what it's supposed to do
- 16:32and you're getting it with whatever programming language
- 16:34you want. Now, I, you know, I, I, I will
- 16:37say there, there are some things that databases give you in
- 16:40addition. So for example, they give you
- 16:44sort of a, a, a consistency model around the way that
- 16:49different programs interact that the durable execution doesn't do
- 16:53on its own. Maybe it will someday, I don't
- 16:55know. But definitely being able to
- 16:58just bring it to regular programming languages is just a
- 17:02huge thing. That like guarantee that you get
- 17:04is only in the database. That's, I mean, that's the other
- 17:07big thing is that if, if you are monolithic, right, if if your
- 17:13application is, you know, one database and 1, you know, front
- 17:20end or something like that, then great.
- 17:22What happens if I have more than one database?
- 17:25Basically everyone does. 100% unless you're, you know, super
- 17:29small, yeah. Like you're going to have,
- 17:31you're going to have all the old systems.
- 17:33Yeah, exactly. You're going to have your,
- 17:35you're going to have your older systems and your newer, you
- 17:36know, your, your legacy, the one that's coming next.
- 17:39You have to be able to connect all that together and, and
- 17:42that's why you really want to take that understanding of
- 17:47reliability basically and basically just put it in a box
- 17:51and say, OK, it's handled over here.
- 17:55If you're on temporal cloud, you know, it's, it's handled by
- 17:58these folks who by the way, there's a like more than half, I
- 18:03think of the engineering organization at Temporal
- 18:06actually just works on making the cloud thing reliable.
- 18:09Oh, nice. And and and and scale.
- 18:11Well, I would hope. That, yeah.
- 18:12So, so, so there's just like there's like a whole bunch of
- 18:14people who work on doing that and doing that really, really
- 18:18well, which is why so many top brands trust Temporal to, to run
- 18:25the durable execution for them. Who do you normally have using
- 18:30it? Is it the Sr.
- 18:31ES that are bringing it in? Like who's champion for
- 18:34Temporal? So there are a couple of
- 18:37patterns that we're seeing more emerge. 1 is that in
- 18:43organizations that have platform teams, the platform team is
- 18:46often the owner for temporal and.
- 18:50Well, because they're the ones that get called, right?
- 18:53Yes, and and they are. They're the ones who have a
- 18:56responsibility. You have a platform team, so
- 18:58somebody's gonna say, OK, reliable infrastructure,
- 19:01somebody owns that, somebody's measuring it, somebody is.
- 19:07But, but also I'd I'd say developer productivity, right?
- 19:11Because the idea of a platform team is, hey, let's have some
- 19:14shared infrastructure so that all of our other teams can move
- 19:17faster and that we can kind of have some standards and best
- 19:20practices around that. Different orgs do it in
- 19:22different ways, but the productivity angle of Temporal
- 19:26also really plays into that where you know, we see platform
- 19:29teams that say, OK, we could, we could offer this to our
- 19:32developers and and then all the application teams can just build
- 19:36a lot faster. There's like flavors of airflow,
- 19:40right? There's flavors of like Argo
- 19:42workflows. How do you kind of like place
- 19:46yourself in that market map? I'd say Airflow is relatively
- 19:54domain specific, you know, ETL data movement and you could
- 20:02build an Airflow with temporal with durable execution.
- 20:06And, and we actually, I, I think some of our customers
- 20:11effectively do that. They build their own sort of in
- 20:13house frameworks for for different sorts of processes.
- 20:16Oh, I'm not saying that that they're running.
- 20:19Airflow exactly, but they will do Airflow like things maybe
- 20:22with their own framework, you know, which connects to their
- 20:25data sources and syncs and so forth.
- 20:28We definitely have folks who build DAG executors on top of
- 20:32Temporal. That's sort of a, a, a normal
- 20:35thing to do. Temporal is it's, it's a more
- 20:39general programming model. It's it's, it's sort of the one
- 20:41of the key things. And so where you see that
- 20:46displacing things like Airflow sometimes, is that OK?
- 20:49If I needed to ETLA bunch of records, maybe Airflow's the
- 20:52right solution for that, right? But if I am say, say I got a
- 20:57dump of legal documents and media files and other sorts of
- 21:02things, I need to go, I need to figure out what these things
- 21:04are, maybe do some enhancement on them.
- 21:07And then maybe I'll either dump them somewhere else or I will
- 21:12maybe index them, You know, either an elastic or, or, or a
- 21:16vector database of some kind. The code that you write for that
- 21:24is not necessarily most naturally expressed as a DAG or
- 21:27something like like just write Python code, right?
- 21:30Call these different things and run it with durable execution.
- 21:34And then, you know, you'll make sure that you're not missing
- 21:37page four O 6 or or whatever it is.
- 21:40OK, can you give me more examples like that?
- 21:42Yeah, hyperparameter optimization.
- 21:44So, you know, I can write a driver program for that as a
- 21:48Python script. And as long as the server that
- 21:50I'm running that on, maybe it's even my laptop, as long as that
- 21:52doesn't crash, right? Great.
- 21:57Now, if I want to say close my laptop and walk away or if I
- 22:05maybe have that running for a for a longer period of time,
- 22:08right, even over overnight, maybe even for a week.
- 22:10And that job could, you know, who knows what will happen in
- 22:14the cloud with that VM? Maybe I put it on a on a virtual
- 22:16machine in the cloud. You don't have to basically
- 22:19worry about any of that with temporal because what it really
- 22:23does is, is it the the actual part of the program that
- 22:28matters, which is the program state, right?
- 22:30Essentially compute is it's all essentially ephemeral
- 22:33fundamental. You can replace the compute.
- 22:35What matters is the state and the state of that program.
- 22:38Which iteration is it odd on on which roll out and all that is
- 22:42going to be saved in the server. And then there's a, you know, a
- 22:45server process that knows that if any of the compute resources
- 22:49go away, you know that that it needs to go find someplace to
- 22:53run that again. In a way it's like the idea of
- 23:01like this declarative type of stuff where you just say, hey
- 23:04look, I wanna declare this, I don't care how you figure out
- 23:09what is gonna happen. Like abstract all that away from
- 23:12me and just make sure that what I declare is what happens.
- 23:17And, and to make that concrete, I'm gonna declare something like
- 23:20here is my program, Python, TypeScript, whatever you name
- 23:23it, here's my program. And I've put that on a on a
- 23:27server. So, so the way it works in terms
- 23:29of the model is that we talked about the temporal server that's
- 23:32holding the state backed by a database or the cloud.
- 23:36There is sort of the, the, the worker which is going to be
- 23:40listening on that server and saying, what should I run?
- 23:44And then you'll have a client which is going to be sort of the
- 23:47declaration of go run this workflow.
- 23:49These are the arguments. Go run that code with these
- 23:51arguments. Once that acts, and once that
- 23:53returns, it's going to go make it happen.
- 23:56Yeah, it reminds me of the Kubernetes philosophy, very much
- 24:00like just. Yep, here's what I want system
- 24:04go figure it out. Exactly.
- 24:05Yep, in terms of other examples, agents are are definitely.
- 24:11Well, that was kind of where I was gonna go.
- 24:13Is it probably gets a little bit more messy when you have agents
- 24:18doing this right because. So it, it could so, but, but
- 24:23actually it, it works pretty well.
- 24:25So, so there's a misconception that's out there a little bit
- 24:27that people have. And I, I understand it can be
- 24:30confusing when you think about LLMS being non deterministic and
- 24:34then you say, well, wait a minute, but there's this like
- 24:36deterministic execution thing. And so how is that going to
- 24:41work? Like is that even going to work?
- 24:43Can I even use durable execution with, with LLMS?
- 24:46I think as we talked about before, that agentic loop
- 24:51actually is deterministic code. It's not the output.
- 24:55The, the output of the LLMS, even if it's controlling so, so
- 24:59the difference with an LLM and with an agent really versus say
- 25:03other types of LLM enabled applications, is that the
- 25:11control flow at the end of the day, do I continue, do I call a
- 25:15tool is going to be dictated by the LLM responses, right?
- 25:20Versus perhaps one of those document processing examples
- 25:25where, yeah, you're still using LMS, but you're going to say
- 25:28apply transformation, ABC, summarize and so forth.
- 25:31And so, so that's, that's sort of very, it's actually a big use
- 25:34case, right? But that's sort of 1 box of of
- 25:37uses. And then and which is basically
- 25:39non agentic AI. It's still AI, it's still
- 25:41generated by it's still LMS, it's still really cool, really
- 25:43useful new, but it's not agentic.
- 25:46So agentic now the the LM is going to decide what to do next.
- 25:50But effectively the way that works with with temporal is that
- 25:53that is still that's like state relative to the workflow of LLM
- 25:59said call this tool that comes back in an activity and then,
- 26:03you know, we we run it and it's captured and it's captured
- 26:05durably. Where we see a lot of additional
- 26:09value for temporal in in agents is a long running, right.
- 26:16So if you are say monitoring something or or or you have some
- 26:22business process. And now we're seeing a lot more
- 26:24of this too with, you know, the emergent open car type uses
- 26:28where things are running on timers, right?
- 26:30It's in the name. It's kind of obvious, but yeah,
- 26:32but but like that, that that's just like super supernatural of
- 26:35like, OK, this is going to run every half hour every day at
- 26:393:00 PM, whatever it is, it's going to check something and
- 26:42then you have to wake stuff up. You have to do whatever whatever
- 26:44you need to do, you have to remember where you were and then
- 26:46you're going to go back to sleep for a while.
- 26:48And the important thing there is that you don't need to have
- 26:52compute resources for that. What matters while it's sleeping
- 26:56is just OK, what is the state? Where was I?
- 26:58So all that is saved in in the server and and and then, you
- 27:04know, it's basically brought back and rehydrated to whatever
- 27:07it was in that code path at that right time.
- 27:10The other case that's pretty valuable is for human in the
- 27:15loop. Really we talk about humans, but
- 27:18frankly it's it's any sort of interaction with outside world.
- 27:21So if it was a human, it could be OK, I am getting to a certain
- 27:25point and then maybe I have a tool call that is actually going
- 27:29to go generate a a, a, a document for signature and send
- 27:32it out for E signature and then continue when it gets that back
- 27:36right. And so maybe that's going to be
- 27:39quick, maybe that's not going to be quick.
- 27:40We don't really know. If it's not quick, we want to be
- 27:42able to reclaim the resources which are basically in the
- 27:45temporal. Those are going to be cache
- 27:46compute resources and then it'll just come right back to where
- 27:49that was and, and continue in that flow.
- 27:53But you can also, you know, you can also set a timer on top of
- 27:57that, which you say, oh, it hasn't been signed it, you know,
- 28:00and it's been, you know, six hours or or 24 hours or whatever
- 28:03it is. OK, great.
- 28:04Now you know, we're going to kick a reminder or we're going
- 28:07to expire it or actually somebody came along and said we
- 28:10have to retract this. And so one of the things that
- 28:13temporal lets you do that actually some of the other
- 28:16durable execution frameworks don't quite have the same level
- 28:18of flexibility is it allows you to have interactions with that
- 28:24running workflow program through what what we call signals,
- 28:31updates and queries. So you can basically write these
- 28:33handlers that sit in that class. You've got your entry point kind
- 28:38of your main function, right? But then you can have these
- 28:41other pieces of code and they're basically they're they're
- 28:43running in that environment. And so if that is, you know,
- 28:48some sort of, oh, we changed our mind or, or whatever it is,
- 28:52it'll just come right in there and it'll interact with all that
- 28:54state in that program and it'll do whatever it needs to do, take
- 28:58it back and and, and just, and just execute chip with regular
- 29:03code. Tell me more about that, because
- 29:05that that sounds fascinating is it's almost in a way you've got
- 29:09this scale to 0 like serverless type of style.
- 29:13And then you've also got these little side quests or what
- 29:19different types of pathways that you can go down if else
- 29:24statements, if do, if this happens, then we've got this
- 29:27logic over here that you can go and you can run.
- 29:29Yep, it's. It is in your workflow, right?
- 29:33It is a regular. Let's let's focus on Python.
- 29:39So with Python, you tend to have an async await style of
- 29:44programming and so you can have concurrent things happening at
- 29:47different times, right? And in temporal, what we've
- 29:51actually done is we've replaced in in our SDK, we've replaced
- 29:55Python's event loop, it's async event loop with a deterministic
- 30:00one that basically makes sure that the interleaving on replay
- 30:04is, is always going to be exactly the same.
- 30:07And so that allows you to do any of the things that you do with
- 30:13concurrent programming like, you know, having queues and handlers
- 30:16and stuff like that. If you could, you could, you
- 30:17could basically you get your full concurrent programming
- 30:21model inside of this durable execution.
- 30:26So, so you know, oh, I ran something, oh, maybe it's, maybe
- 30:30it's taking too long for that thing to finish and I need to
- 30:33get a response back to a customer, right.
- 30:36OK, set it, set it just just sleep.
- 30:38We, we replace the, the, the sleep function, right?
- 30:43So that it's, instead of just doing the system sleep, it's
- 30:46going to be temporal sleep. And then that means that if it's
- 30:50short, you know, at least it'll be, it'll actually keep it
- 30:53cache, it'll be deterministic and durable.
- 30:57So if it did crash during that sleep, it would recover.
- 31:01But then if it's long, we'll actually effectively
- 31:03intentionally crash it. We'll clear the cache, flush it
- 31:06out, reclaim the resources and then come back again.
- 31:09But yeah, full, full, full programming model.
- 31:10That's that's the thing that's really different about durable
- 31:14execution. How are you seeing folks take
- 31:17advantage of this? Because I instantly am thinking
- 31:19about the open clause situation and and thinking, Oh well, what
- 31:24I would do is just probably program in hey, every X amount
- 31:29of time, just wake up the LLM or send off something to an LLM
- 31:35with context. Here's what's happened.
- 31:37Here's all of the definition. There are a bunch of folks who
- 31:43build on top of temporal directly and who build different
- 31:46sorts of experiences. You know, I can't go into the
- 31:50specifics of the details, but I, you know, I can tell you that in
- 31:55addition to open eyes codecs on the web, we have repple it and
- 32:00and lovable and they they, they use temporal as as as do a bunch
- 32:04of other folks. And so just using those
- 32:10primitives, you can build very sort of from the ground up, very
- 32:16robust agentic systems. Now, another thing that we've
- 32:21actually done is we've done a number of integrations with some
- 32:27of the leading agent frameworks. So for example, Open AI Agents
- 32:31SDK, Pedantic AI, AISDK by Versal, those are ones that have
- 32:39been released. We're continuing to work on
- 32:41others. We have integrated with Brain
- 32:45Trust on the observability side, we've integrated with Lang Fuse.
- 32:49So our goal with our integrations is really to give
- 32:56users choice of basically what pieces of the AI ecosystem do
- 33:03you want to bring in and use to build your agentic system,
- 33:08right? And let us handle the
- 33:11durability. Let us make it reliable.
- 33:14Let us give you the ability to use these sort of primitives to
- 33:20to send messages and queries and kind of ask the agent, what are
- 33:25you doing right now, right? And, and things like that.
- 33:28Those are all things that come with a temporal programming
- 33:30model and that by when we integrate with those frameworks
- 33:35it makes it easy for you to access it.
- 33:36Yeah, I was thinking exactly that, where you're almost using
- 33:42the temporal state, feeding that to the agent to say here's where
- 33:45we're at now, what should you do next?
- 33:48Yeah, it's, it's really just separating different concerns.
- 33:54So the temporal state is your program state.
- 33:56I mean, another way to think about it is, you know, whatever
- 33:59your stack and, and memory state is is effectively protected by
- 34:04temporal, but it's it's your programming language state,
- 34:06right? Where are you in terms of that
- 34:10execution path? And then the agent framework is
- 34:14about making it easy to put together, you know, multiple
- 34:21agents and guardrails or increasingly now what we're
- 34:25seeing the coding agents and the file systems and all these other
- 34:27pieces, it's actually moving towards almost this new
- 34:30category, which is the harnesses, right?
- 34:34And so it's all evolving quickly.
- 34:35We're we're we're evolving with that ecosystem.
- 34:38But the key thing is, is really just kind of it's all about
- 34:45developer productivity, but different aspects of developer
- 34:47productivity, right? Here's some common patterns for
- 34:50building agentic systems. OK, boom, agent SDKI want it
- 34:54interacting with the world. I want it long running reliable
- 34:58async temporal. OK, so now can you break down
- 35:04like what do I do first? OK, so the way that you start is
- 35:10you really have have two options.
- 35:11You can either download the temporal CLI and run it on your
- 35:14laptop, which is a totally good way to do it.
- 35:17You can also start on Temporal cloud, but you do need a
- 35:19temporal server of of some kind and then you get the SDK.
- 35:23These days. What I would recommend that you
- 35:25do, frankly, is that you just grab your favorite coding agent.
- 35:29I create a project. We have a temporal skill and you
- 35:36know, probably just ask it to to build you a hello world.
- 35:39Look, we've got great documentation.
- 35:40We've got tutorials on the website and so forth, which
- 35:44which I definitely encourage people to to look at as well.
- 35:48But they if, if you want to be forward-looking and if you kind
- 35:51of want to see where we're going with some of this stuff is like
- 35:54actually just say, you know, Hey, agent, teach me, teach me
- 35:58temporal. Yeah, that's a common pattern
- 36:01that I've heard folks talking about is how before they'll jump
- 36:04into any new, whether it's a new programming language or a new
- 36:10new tool, yes, they'll ask the chat, yes, give me some of the
- 36:16the TLDR and then go a little bit deeper.
- 36:18And then once you have this mental model of how it works,
- 36:22you can then start using the tool much more effectively.
- 36:27Grab the skill because that that will ensure sort of the
- 36:31consistency that the LMS of the foundation models are, are
- 36:33pretty good. They understand temporal pretty
- 36:35well, but there are, you know, certain edge cases and gosh, I
- 36:39mean, we, we, we know that LMS aren't always perfect and the
- 36:42scale will will definitely accelerate that.
- 36:45Yeah, it feels like right now in this conversation we've
- 36:48established what it does and why you would want to use it, right
- 36:53Then maybe the next step is all right now I'm using it.
- 36:56What are some things that I should be focusing on while
- 36:59using it? Yeah.
- 37:02So I definitely recommend that people spend a little bit of
- 37:07time wrapping their head around the model.
- 37:10Some of this it just because it's a little bit different
- 37:15sometimes. I, I, I think if you just focus
- 37:18on and understand it, then you'll be good.
- 37:19But, but just understanding like, OK, I'm going to have this
- 37:22worker, right, Which is where the code actually runs.
- 37:27I'm going to have a starter program that's going to be the
- 37:30client that initiates that code. And then I'm going to have the
- 37:34temporal server backed by, you know, whatever reliable back end
- 37:37it has. And those are kind of the
- 37:39different pieces. So, so making sure you
- 37:41understand that part of the model, making sure you
- 37:43understand that you have activities, activities do
- 37:46anything and you have workflow restricted and, and that's kind
- 37:50of the model. So really thinking about, well,
- 37:51how do I break my program up into these pieces?
- 37:54The simple question to ask usually is, does it do IO,
- 37:58right? If it does IO, that means it's
- 38:00going in an activity, right? Because that means that state
- 38:03that's going to come in that we need to save and then yeah, you
- 38:07know, work on modeling your problem.
- 38:09We have a number of sample applications.
- 38:13We have an AI cookbook that we're continuing to add recipes
- 38:17to. And so those are good to sort of
- 38:20sort of pull from and you can kind of see how, if there's
- 38:24something that matches what you're trying to do.
- 38:26And then the other thing that I encourage folks to do is to use
- 38:30the temporal UI. So that's when the, if you start
- 38:34up the CLI, if you go to the cloud, it'll just be there.
- 38:37If you start up the, the, the server on your local
- 38:41environment, you'll get a URL. You click that, you open it up
- 38:44and basically what you can then see is you can see the program
- 38:48executing. So you can see, you know, the,
- 38:51the, the, the workflow, you can see the activities, you can dive
- 38:54in, you can see the arguments, the return values, you can see
- 38:57any sort of retries, you can see failures.
- 39:00And actually one of the cool things that I encourage folks to
- 39:04do this, this kind of blew my mind when I, when I first saw
- 39:08it, is that suppose you write your code and you're, you're
- 39:12like, you're just developing right?
- 39:14And you did something wrong, right, Or, or, or your coding
- 39:18agent did something wrong. There's a bug, it's a syntax
- 39:21error, whatever Python blows up 3/4 of the way through whatever.
- 39:26So what you can do now is you can just go.
- 39:30You can fix that error. Save the file.
- 39:34I know where you're going. Restart the server and that'll
- 39:37just finish and so that's obviously can save you time in
- 39:42on your local development loop. But also, if you think about if
- 39:47I've set some job to run right, this is always my fear.
- 39:51And you know, that's, look, I'm, it's great to use, you know, to
- 39:54type annotations and other stuff in Python to try to reduce this.
- 39:57But definitely like you kick that job off, it runs for a week
- 40:00and now it's broken and because of something silly, right?
- 40:05And now you're like, OK, well, I kind of have the pieces, I can
- 40:08pull them together and I can write a new program that will
- 40:11pick up kind of from where that one broke.
- 40:12And like, I'll do that. But it's.
- 40:14But with temporal you. With temporal you don't do that.
- 40:17You just like fix the thing and then the thing finishes.
- 40:19It remembers where it broke. It remembers where it broke.
- 40:21Yes it can. It can.
- 40:22It can move to the new version of the code, yeah.
- 40:26It also makes me think there's a lot of time we talk about
- 40:29memory, right, for agents and we talk about there's the
- 40:32personalization side of memory and then there's the I did
- 40:37something as an agent and so how do I remember how I completed
- 40:42that kind of is moving in that direction a little bit it.
- 40:46Is so one of the things that's that's interesting about
- 40:49temporal and this is kind of where I think 2026, frankly, we
- 40:54know it's going to be a wild year and and we'll see how
- 40:57things play out. So the file system has been sort
- 41:02of the main repository for for memory in most of these agents.
- 41:06Certainly something like open clause is using the file system.
- 41:10You know, if I'm using cloud code, it's sort of keeping the
- 41:13session history and in the file system and so forth.
- 41:16And you know, and and and that's OK.
- 41:19And, and you can build file system enabled agents and
- 41:26applications with temporal. But actually you don't
- 41:29necessarily need a file system for a depending for for a lot of
- 41:32agents. So if you're going to be
- 41:34generating code, running scripts, doing sort of
- 41:37sophisticated computer use type tools, then you probably want a
- 41:43file system. If your agent is calling AP is
- 41:49and and, and LMS working with databases, then you can probably
- 41:55keep all the state that you need in temporal, right?
- 41:59And certainly if it is sort of that episodic memory relating to
- 42:05a particular session, then that should be totally fine for
- 42:10memory that that sort of crosses sessions.
- 42:12Then I think frankly that's the area where we're still sort of
- 42:16experimenting and exploring things.
- 42:18And, and frankly, the the whole ecosystem is both terms, terms
- 42:21of how do you structure it and then where do you put it?
- 42:24And how memory is such a a fascinating one because you want
- 42:29that memory, but you don't want to leak that memory too if
- 42:32there's different things that are, if you're going across
- 42:35sessions and they're not the same person for that same.
- 42:41Session you'll you'll get a level of isolation just kind of
- 42:46out-of-the-box where basically every workflow, which is
- 42:49basically every invocation of that you know of that workflow
- 42:54is basically private and that that's just part of your
- 42:58programming languages isolation model.
- 43:00You can put more isolation on that, right.
- 43:03So if you want to, you know, run inside of, of containers or
- 43:08isolates or web assembly or like you, you, you can do that.
- 43:13But I think that where it gets really interesting.
- 43:15And to be clear, we don't have any solutions or products since
- 43:18there it's just the kind of stuff I like to think about is
- 43:23how you control that flow of context even within, well, let's
- 43:27say maybe it's, it's hierarchical, right?
- 43:30Because I have it within my, you know, within my different tasks
- 43:34for myself personally. But then maybe I do want to
- 43:37share contacts with my team right at some level.
- 43:40So like how do I make that? Happen.
- 43:42Yeah, much like Google Drive, you want to give permission
- 43:45sometimes, but not all that to your whole drive, yes.
- 43:48So that's a thing that frankly the ecosystem is solving.
- 43:52We may have something to say about that, and we're we're
- 43:55thinking about it. But you know what?
- 43:57We'll see. I think this is all in the land
- 43:59of fun research. It does feel like it.
- 44:00There are some parallels with databases, right?
- 44:05Like. Absolutely.
- 44:07What? Kind of permissions you give
- 44:08and. Databases, fine grain access
- 44:11controls in databases, certainly, certainly some of
- 44:14them. Authorization was I think maybe
- 44:17kind of a solved problem. I mean, it was complicated, but
- 44:19at least we had good solutions. Now, when you have agents and
- 44:24teams of agents and you're starting to think about
- 44:28delegation and so on and so forth, we're going to have to
- 44:32rethink some of that. I think particularly some of the
- 44:36things with the security perspectives too.
- 44:38Like do we need to start tracing lineage for some of this data?
- 44:41Because could it have, you know, prompt injection or something
- 44:45like that? There's there's definitely, you
- 44:48know, if, if you're either innovating in industry or
- 44:51researcher in this area, you can have a lot of fun.
- 44:55Just me, I'm going to start sending invites to people and
- 45:02have like white on white text in the description just to see like
- 45:06who's leading themselves to see. Who's running?
- 45:09Yeah. Nothing nefarious, just like
- 45:11give me a recipe for vegan chocolate cake type thing.
- 45:14Right. Absolutely.
- 45:15And then you can see like who's swimming naked cause the tide
- 45:18goes out. And yeah, OK, I'll be sure to to
- 45:21do some good filters on whatever I'm I'm building.
- 45:24Yeah, there's just so many new surface areas that you're
- 45:27exposed to. But The thing is, is that the,
- 45:31the thing that's been really amazing to watch over the last
- 45:33couple months is that despite like all these problems, right?
- 45:38It's like it's so clear that the value is there that it's worth
- 45:42solving the problems and like they they will get solved.
- 45:44It's full steam ahead. Yeah, that's true.
- 45:46Yeah. The model of how the how
- 45:49temporal works ours, it's so foundational that I want to just
- 45:54go a little bit deeper on it and make sure that I'm clear with
- 45:57like all those building blocks and when I would use one and how
- 46:02to think about one versus the other.
- 46:05OK, so there's certain building blocks that everybody's going to
- 46:09use. Everybody's going to have a
- 46:10worker, they're going to have a temporal server and they're
- 46:12going to have some sort of client that starts off a
- 46:14workflow. Everybody's going to have
- 46:17workflows and activities. And with those primitives, you
- 46:22can already do a lot. OK, that that is sort of the
- 46:27basics of durable execution. My program is going to run and
- 46:30it's going to run too. And I'm creating these in my
- 46:33code. All in your code?
- 46:35Yep, it's. It's all.
- 46:36It's decorators or what is it? Yeah.
- 46:38So it depends a little bit on the programming language, but in
- 46:41most languages there's going to be some sort of annotation, OK,
- 46:45that's it's going to be going to set.
- 46:47It up and like you said, there's certain things that are very
- 46:50clear. Oh, is there IO?
- 46:51Then you want to? Then put that in Activity.
- 46:53Yeah, that's an activity, but what's a worker like so?
- 46:57So the worker is the thing that you deploy, which you could
- 47:04deploy to, you could put it on just a server, you could put on
- 47:07Kubernetes. But it's, it's going to be the
- 47:10process really that actually runs that code because that code
- 47:14is not running. If I it's, it's well, if I run
- 47:17the worker on my laptop, it's running on my laptop.
- 47:20But if I want to close my laptop and walk away, that code needs
- 47:23to run somewhere. So, so this is actually where I
- 47:26want to say some things that are, yeah, important about the,
- 47:29the model, the temporal server and certainly like an in
- 47:36temporal cloud, we actually don't see any of your data, OK,
- 47:43any of your application data. And the reason for that is
- 47:46because you'll end up configuring in, in production,
- 47:50you'll configure the client, the temporal client, to encrypt
- 47:55everything before it gets sent to the temporal server.
- 47:59And then you have the keys. We don't have the keys or, or if
- 48:05you're hosting it yourself, you can do the same thing.
- 48:07That system doesn't have the data.
- 48:10So what does it mean if you can't see the data?
- 48:12Well, actually you can't compute on that data either.
- 48:16And so that's where you bring up the worker, right?
- 48:19And the worker is running in your VPC, your trusted
- 48:23environment and and, and that's actually where you're going to
- 48:28decrypt the data. And then it's going to run, you
- 48:31know, just like it would run ordinarily on decrypted data.
- 48:34OK, so the workers where the code gets executed.
- 48:37The worker executes the code. Yes, yes.
- 48:40And that worker could be, you know, a simple way is, is to
- 48:45deploy to some sort of container service and those can be set up
- 48:49to auto scale and so forth. But but you can really.
- 48:53You can deploy it however you want.
- 48:54OK, so you're not dealing with the auto scaling?
- 48:57We can give you some signals and so for example, in Kubernetes,
- 49:01there is an auto scaling mechanism that can talk to
- 49:05temporal server and can say, hey, this thing needs to be
- 49:08scaled up. And, and this is actually, it's
- 49:11an area where we're continuing to do more work and make it sort
- 49:16of more and more transparent for people because ultimately what
- 49:20we are driving towards. And frankly, there's a pretty
- 49:24deep connection between durable execution and, and, and
- 49:28serverless. And so that's really, you know,
- 49:31I, I, I would expect, you know, sort of no concrete product Rd.
- 49:35maps to, to share right now. But just even just just looking
- 49:38at it and looking at the ecosystem as well as the things
- 49:41that we're thinking about internally, it just it makes a
- 49:44lot of sense to move it more towards the serverless model.
- 49:46Well, it's almost like you guarantee the durable execution.
- 49:53A way to get out in front of that is before stuff blows up
- 49:59you auto scale in case. That's one of the problems.
- 50:02I It's almost like you're preemptively trying to do things
- 50:06so that you never have to restart.
- 50:09So you, you could definitely predictively scale that, that's
- 50:12sort of 1 option and and you could think about ways to do
- 50:16that. But it, you know, as it pertains
- 50:21to service that most server like, OK, if you go back to
- 50:23serverless function as a service that is actually mostly
- 50:26reactive, but I just found ways to scale it really fast.
- 50:30And there's a bunch of tricks that you play and a bunch of bin
- 50:32packing. But the way that I think it
- 50:34really comes together is that what the sort of promise of
- 50:38serverless was originally. And I think what got people so
- 50:42excited about why they frankly, why that name attached itself to
- 50:46function as a service, which was it actually wasn't, they didn't
- 50:48come out and say, hey, this is serverless.
- 50:50That was something that sort of the the community attached to
- 50:52it. And it, it's this idea that I
- 51:00should be able to write the program, save the program to
- 51:04this massive computer called the cloud.
- 51:06And then that just like the right stuff should happen,
- 51:09right? It's like, why would you burn a
- 51:11bunch of resources when my program isn't doing anything?
- 51:14Like, like, don't do that. Why does my program like break
- 51:19in the middle? Like don't do that, right?
- 51:21Just just like do the right thing.
- 51:23Like, and, and so we can get into all these definitions of
- 51:26serverless. And I, I did my PhD on
- 51:28serverless. I walked through the mall.
- 51:31Is it doesn't mean it's stateless.
- 51:33Does it mean this doesn't mean that at the end of the day,
- 51:37like, and you know, people start, it's less of a thing now
- 51:40because you know, AAI is now the new buzzword.
- 51:44It was, you roll back, you know, eight years and it's all about
- 51:47serverless, right? You can serverless wash stuff in
- 51:51your marketing and whatever. At the end of the day, though,
- 51:54it's just like the thing does what it's supposed to do.
- 51:56That's all the serverless is that I don't need to worry about
- 51:59server nonsense. The parallel there for what
- 52:03you're doing with temporal is so clear.
- 52:05It, it, it's, it's very connected and, and I think it's,
- 52:11it is effectively solving the same problem.
- 52:13It's solving the problem of the cloud is just introducing
- 52:19complexity. It's giving us a lot of
- 52:22benefits, right? It's giving us benefits in in
- 52:26scale, it's giving us benefits in the resource elasticity,
- 52:29which gives the cost. It gives us benefits of getting
- 52:32access to all the types of cool hardware and GPU's and all this
- 52:34all these benefits, right. But then you know, it, it does,
- 52:39it has in the past had these fundamental, I actually, I'll
- 52:45take that back, non fundamental limitations and costs that came
- 52:51along with it. And what I think about kind of
- 52:56the progression in the last 10 years and really what the what's
- 53:00been happening the way I interpret servos is sort of
- 53:03taking all those non fundamental awkwardness things away and that
- 53:08that's basically what it is. Yeah, you get more room to do
- 53:14cool stuff, but when you add this complexity, there's just
- 53:18more ways than it breaks. OK.
- 53:21So you have the worker that's a fundamental building block.
- 53:25You also have different pieces and breakdown these other
- 53:28pieces. Yeah.
- 53:29So you've got the worker, that's where your code is running.
- 53:33You have the server, that's where your state is being made
- 53:36durable and and what's being tracked.
- 53:38And then you have the the client.
- 53:40And then what are you writing on top of that?
- 53:43You are writing in terms of these simple primitives, the
- 53:49activities, which is where you're doing the IO and the
- 53:52workflow, which is the the the control of that, which is sort
- 53:58of your main entry point to that program.
- 54:01OK, so the workflow is what I'm writing, what we want it to do,
- 54:06whatever it is, if it's that document processing pipeline,
- 54:10it's do XYZ and that's when it's as it says, you know, workflow.
- 54:15So kind of clear. Thing do begin to end.
- 54:18It could be my agentic loop. I want you to loop until
- 54:22somebody says stop whatever it is.
- 54:25And this is on the client. Well, let's see.
- 54:27So, so the workflow and the activities, those are running on
- 54:31the worker, the client, which you can trigger also from within
- 54:37work flows and activities. But what that's going to be
- 54:40doing, it's going to be saying that sending the command say to
- 54:43start the activity or or to to start the workflow.
- 54:47That's and that's where you can have that sleep.
- 54:50Yes, yes, we, we actually do have a, a new feature that's
- 54:53coming out, which is standalone activities which run if you have
- 54:57something simple that needs to to run without even being in a
- 55:01workflow, you can do that and you can get the benefits of the
- 55:05reliability like that thing is going to run it's guaranteed to
- 55:08run it'll be retried and so on and so forth It's all in your
- 55:10your dashboards and UI as well. But now we're kind of getting
- 55:13into power user features. There are a lot of power user
- 55:15features OK there, there are things like, you know,
- 55:17schedules, you know, which is think of that like more
- 55:20sophisticated Cron functionality.
- 55:22We've talked about the signals and and updates.
- 55:27We talked about the, you know, the workers being able to update
- 55:33to a new version of the code. 1 of the things that we have
- 55:37released recently is something called a worker versioning.
- 55:43So sometimes you actually don't want to go to the new version of
- 55:46the code or maybe you want to do a blue-green deploy or or
- 55:49something like that. So for more, more sophisticated
- 55:52operators, we provide a lot of control over that.
- 55:57We have a feature called workflow pause, which means that
- 56:00you can say, you know, either on command or when it maybe it
- 56:04encounters some sort of exception condition actually in
- 56:08your logic, you can say what what just stop this.
- 56:11We're going to look at it before it makes progress, right?
- 56:15So there's just, you know, there's a lot of things that are
- 56:19continuing to be developed. We are working on some support
- 56:25for larger data sizes, large payload storage, right?
- 56:30So if you have something that is maybe again, like some of these,
- 56:34these media files, you may not want to send them to the
- 56:37Temporal server and store them there, even if they're
- 56:41encrypted. You, you say, you know what,
- 56:42that thing lives in S3, right? Or, or something like that.
- 56:46But I want Temporal to understand it.
- 56:48I want Temporal to track it. I want to see how large the
- 56:50objects are and so forth. So.
- 56:51So we have large so. In that case you just send the
- 56:55metadata. There are different variants of
- 56:58it, but but in in, yes, at the end of the day, what's going to
- 57:02happen is is that say that output that got generated, it's
- 57:07going to be the temporal client is going to be configured or the
- 57:11SDK is going to be configured to go put that in your BLOB
- 57:15storage. Remember the path to it and then
- 57:20encrypt that. Put that in temporal server
- 57:22instead of actually putting the object in temporal server.
- 57:25Yeah, just have the pointer. Exactly, exactly.
- 57:27It's yes. At the end of the day, we know
- 57:30we're talking about pass by reference rather than pass by
- 57:33value. So we're doing that, we're doing
- 57:36streaming, which is another thing that's really important in
- 57:41agentic use case. You actually have pretty good
- 57:44support for it out-of-the-box. People do it all the time with
- 57:46Temporal today, either using the, the basic primitives, you
- 57:51know, updates and, and, and signals and queries or sometimes
- 57:57using third party storage or, or third party streaming like
- 58:00Reddit streams, for example. So there's a bunch of different
- 58:03ways that you can do it. We're making it first class.
- 58:06So that's another thing that you know that we're.
- 58:08Working with use cases. For streaming like.
- 58:10Audio. I so, so certainly audio is one
- 58:14of the use cases where we have folks that that have agentic
- 58:17applications that are audio applications.
- 58:20And then it's also just any sort of updates that you're going to
- 58:26get in between your main interaction.
- 58:31So if I am say in a coding agent and that coding agent is telling
- 58:35me that it's running a bunch of tools and checking these files
- 58:38and doing other things, those are all from the perspective of
- 58:41AUIA streaming update, right? So it's, it's basically saying
- 58:46that you don't wait until the end of the workflow or, or until
- 58:53a point of pause or, or human input in order to say what
- 59:00you're doing. And then of course, you combine
- 59:02that with things like the, the signals.
- 59:06Now you can start doing interruption, right?
- 59:07Because I said, oh, wait a minute, I don't want you doing
- 59:09that. I want you doing something else.
- 59:11Those are additional things where, you know, there's layers
- 59:15upon layers of functionality that, that you can access.
- 59:18I think the good thing is that you don't have to start with all
- 59:24of that. And I think increasingly now,
- 59:28you know, we'll see, but I expect that you're going to be
- 59:32able to access pretty much all the features through your coding
- 59:35agent just by asking for it. You know, we, we, we, we've been
- 59:39doing this skill and it, you know, we, we put it all in there
- 59:41and. We really.
- 59:42Should be able to do it. The coding agents are pretty
- 59:44good. The thing that I see is you have
- 59:47to know what to ask for. So that's the new thing.
- 59:50And that's why I think it's, it's really cool that we get to
- 59:53talk about it. Hopefully somebody that's
- 59:54listening goes oh cool, now I understand Temporal has that
- 1:00:00feature so I can go ask my coding agent for that.
- 1:00:03Yes, that's I think, I think it's great that you point that
- 1:00:05out. Because not a lot of people are
- 1:00:08writing code by hand these days. No, but no.
- 1:00:13You, you still want these things to happen And so if you know
- 1:00:16that they're there, yes, it's like it's latent and you can go
- 1:00:20and you can probe the coding agent to say hey, yes, and use
- 1:00:24the temporal streaming feature for.
- 1:00:26This. Yes, absolutely.