durable workflows

Most software can pretend a request is small. A user clicks a button, an API runs, a database row changes, and the page returns. Agents do not live in that world. They call tools, wait on slow APIs, branch on partial information, ask for approvals, retry failed steps, and often come back to a task minutes or hours later.

That makes durability less like backend plumbing and more like product infrastructure. If an agent is researching a company, enriching a CRM, drafting a message, waiting for a human, and then sending it, every step has to be resumable. The system should know what already happened, what is safe to retry, and which side effects must not run twice.

A simple Restate-style workflow makes this concrete. Give it a lead id. First it fetches the company profile. Then it scores whether the account is worth pursuing. Then it writes the reasoning to storage. Then it asks for approval before sending a note. If the process crashes after the score is written, it should resume from that point instead of starting over and producing a different answer.

We used Restate in bombsell for exactly this kind of shape. The interesting part was not the framework itself. It was the shift in how you think about the system. You stop treating the agent as one fragile request and start treating it as a durable process with memory, checkpoints, and clear recovery behavior.

This matters because AI systems are probabilistic at the layer where decisions are made, but they still need deterministic behavior around state. The model can choose a plan, rewrite a draft, or classify an account. The workflow around it should be boring in the best way: idempotent steps, recorded outcomes, explicit waits, and retries that do not corrupt the world.

Without durable workflows, agents become demos that work when everything is warm, fast, and lucky. With them, they start to look like real systems. They can survive bad networks, slow tools, deploys in the middle of execution, and users who approve something a day later.

AI-native products will need better models, better context, and better interfaces. But the quiet requirement underneath all of that is durability. The agent has to remember where it is, continue when the world interrupts it, and leave the system in a state you can trust.