00:00:00- Hey, good morning, everyone.
00:00:02Thanks so much for joining us today.
00:00:03I'm so excited for what we're about to share.
00:00:06So for a decade now, code running on Vercel
00:00:10was primarily built for immediate web requests.
00:00:14But the most interesting software our customers create today
00:00:17no longer fits that model.
00:00:20And the number of these new projects is exploding.
00:00:23Just in the last few months,
00:00:25weekly deployments in Vercel have doubled.
00:00:28And a third of those new deployments come from coding agents,
00:00:31a number that's gone up a thousand percent
00:00:34in just six months.
00:00:35But the most interesting part to me
00:00:38isn't how much we're deploying, it's what we're deploying.
00:00:41Those agents are shipping agents.
00:00:44And the agents that our customers build,
00:00:48they don't just respond once and wait.
00:00:50They need to reason, call tools, wait on humans,
00:00:53and then do it all again.
00:00:55And each of those workflows needs a backend that can keep up.
00:00:58So what I've seen in Vercel
00:01:02is that the team shipping the fastest right now,
00:01:05they aren't rebuilding infrastructure
00:01:07and coding queues themselves,
00:01:08or writing retry logic from scratch,
00:01:11or even wiring of observability.
00:01:13The stuff's been done.
00:01:15So they're using our infrastructure primitives,
00:01:17the stuff we've spent the last decade building,
00:01:20so they can focus all of their focus on their product.
00:01:24And that's exactly the problem we built Workflows to solve.
00:01:27We launched it in beta six months ago,
00:01:30and the response was incredible.
00:01:33And now, a hundred million runs later,
00:01:36we're so excited to announce that Workflows is GA, today.
00:01:41Let me show you how it works.
00:01:43The app I'm gonna show you
00:01:44is a birthday card generator that I built.
00:01:47Now, it could be anything really,
00:01:49but this hits all the things we just talked about.
00:01:51It doesn't fit into a single request,
00:01:54it waits on humans, it retries when things fail,
00:01:57and it streams progress in real time to the user.
00:02:00So, here's how it works.
00:02:02Let me send myself a card,
00:02:04and I'll start by entering my email.
00:02:05Next, I'll pick a date,
00:02:09and I'm gonna pick the 23rd of April.
00:02:11Now, I like doing bonfires for my birthday,
00:02:14so I'll do a Ocean Beach bonfire,
00:02:17and I'm just sending it to myself, so for Pernet.
00:02:21And I'll enter my own email here just to make the demo easy.
00:02:24So, it's gonna have myself RSVP to my own birthday.
00:02:27Cool, now I'm gonna hit Generate and Send,
00:02:30and I'll see the birthday card start generating.
00:02:34I'll head over to the Vercel dashboard
00:02:35where I can see this run just came in.
00:02:37Let me click in.
00:02:39And I can see this in real time as it generates prompts,
00:02:42and then generates the message,
00:02:43and generates an image as well.
00:02:45This is the observability we were talking about.
00:02:48Every step is visible right here.
00:02:50You can see exactly what's running,
00:02:52what's completed, and what's waiting.
00:02:54Over on the user side,
00:02:57I can see that the card's been generated,
00:02:58and the RSVP emails have been sent.
00:03:01At this point, the workflow is suspended.
00:03:04There's no compute actually happening.
00:03:07It's waiting for a human to respond,
00:03:09and I could go into my email, respond right now,
00:03:12or even wait for a few hours or days and respond then.
00:03:15This will continue to track the progress.
00:03:18Now, before I show you the email,
00:03:20I actually wanna show you the CLI.
00:03:22Workflow ships with the CLI on day one
00:03:25that lets you inspect everything that's available
00:03:27on the observability dashboard.
00:03:29This means that you and your agents
00:03:32have access to the complete picture
00:03:35when you're trying to debug something that went wrong.
00:03:37Okay, over to my email.
00:03:40I should see the email come right in.
00:03:43There it is.
00:03:44And I can, it's just asking me to RSVP.
00:03:46I'll hit yes, that'll be there.
00:03:49Back to the dashboard, I can see the hooks resumed,
00:03:53and I should kick off into a sleep.
00:03:55Back to the user dashboard, and I'll see the same thing.
00:03:58We're no longer waiting for RSVPs,
00:04:00and now it's just waiting for the 23rd,
00:04:01so it can send out the birthday.
00:04:03Now, I don't want to make you wait for two weeks,
00:04:05so I'll head back to the dashboard
00:04:06and wake up the sleep right here.
00:04:09That should immediately resume the workflow,
00:04:12and we'll see the workflow complete.
00:04:14Let me head back to the user dashboard.
00:04:17Postcard's been sent.
00:04:18And over in my email, I should get a birthday card
00:04:22with the RSVP as well.
00:04:23Cool.
00:04:24Now, I want to show you the code,
00:04:26and remember the thing we said earlier.
00:04:29Teams shipping the fastest today aren't dealing with queues
00:04:32and managing state and infrastructure.
00:04:34That's the old way.
00:04:35In workflow, everything we've seen today
00:04:38is a single function,
00:04:40and it starts with this directive, useWorkflow.
00:04:43This one directive is what lets this function run for days,
00:04:48suspend between steps, and resume exactly where it left off.
00:04:52So when the workflow calls a step,
00:04:53like generate prompts or generate image,
00:04:56the workflow suspends the function,
00:04:58queues the work in the background.
00:05:00It'll even retry it if it fails,
00:05:02and then resume the workflow when it's done.
00:05:05The entire time, I get full observability
00:05:07on the Vercel dashboard of every step along the way.
00:05:11I can even click into one of these,
00:05:13and by default, on Vercel, everything's encrypted,
00:05:16but I'll decrypt the data so you can see the input.
00:05:19Yeah, this is available both on the dashboard and the CLI.
00:05:22Workflows also come with built-in streaming.
00:05:24This is how I pushed real-time updates to the client
00:05:29to track progress live.
00:05:31I didn't have to pull in some sort of database
00:05:33just to pull this off.
00:05:34The client can even disconnect and reconnect just fine.
00:05:37This is a persistent stream.
00:05:39All right, and here's the hook.
00:05:42For every RSVP, I'm creating an ephemeral webhook URL
00:05:46on the fly, I'm then sending it in an email,
00:05:50and then I can simply just wait for it down here.
00:05:52The workflow pauses right here
00:05:56until every person clicks on their link.
00:05:59There is no database involved,
00:06:01and the results even just live in local JavaScript variables.
00:06:05The workflow holds all of its own state.
00:06:08This is the distributed systems machinery
00:06:11that we said was just gone.
00:06:12You don't have to think about this stuff anymore.
00:06:14All right, lastly, let's sleep at the end
00:06:17to sleep for my birthday.
00:06:18It's right here.
00:06:19This sleep could be a couple of seconds,
00:06:21days or even weeks like we just did.
00:06:24And while it's sleeping, the workflow is just suspended
00:06:27with zero compute running.
00:06:29When it wakes up, it continues exactly where it left off,
00:06:33maintaining state along the way.
00:06:34And this is the entire thing.
00:06:37It's one function that you can just read top to bottom
00:06:40and reason about from end to end.
00:06:43Every step is backed by a queue,
00:06:45it's retried automatically,
00:06:47and runs on its own serverless function.
00:06:49There are no timeout limits,
00:06:51so workflows can run as long as they need to.
00:06:54This is what we mean
00:06:56when we say Vercel handles everything underneath.
00:06:59You can just write the logic so we take care of the rest.
00:07:02Now, in this demo, I showed you a simple use case,
00:07:07but our customers use workflows
00:07:09to run agents and production at tremendous scale.
00:07:12Mux uses workflows to ensure video generation pipelines
00:07:17run reliably every time.
00:07:19And Flora is orchestrating parallel creative agents
00:07:23across 50 image generation models, all with workflow.
00:07:27Durable is a small team
00:07:30that hosts 3 million customer websites,
00:07:33and they use workflows to ship new agents
00:07:35to their users every single day.
00:07:38Now, I started this demo
00:07:40by saying that the most interesting software
00:07:42our customers build no longer fits in a single request.
00:07:46And we're seeing more and more apps like these
00:07:50deployed every single day.
00:07:51Agents are shipping agents,
00:07:54and the teams building them aren't thinking about queues,
00:07:58they're focusing on their customer problems.
00:08:01And the shift isn't just happening inside Vercel.
00:08:05Our customer deployments are doubling,
00:08:07and fewer engineers than ever are handrolling infrastructure.
00:08:11So whatever app or agent you want to build,
00:08:16workflows will make it reliable,
00:08:18long-running, durable, and observable.
00:08:22From your laptop to a million users
00:08:25all with the same application code.
00:08:27Workflows is generally available today,
00:08:31so go shift something that works.
00:08:37[BLANK_AUDIO]