{"slug": "durable-handoffs-for-multi-agent-pipelines", "title": "Durable handoffs for multi-agent pipelines", "summary": "ResonateHQ demonstrates durable handoffs for multi-agent pipelines with a new open-source example. The example coordinates three specialist agents—researcher, writer, reviewer—using a 15-line generator that creates durable checkpoints, allowing retries of only the failed agent without re-running the entire pipeline. The approach eliminates the need for orchestration platforms, event buses, or separate databases, with the runtime providing durability and supporting human-in-the-loop patterns via promises.", "body_md": "Multi-agent systems are sequential pipelines that look like distributed systems.\n\nA researcher gathers findings, a writer drafts, a reviewer checks.\n\nEach agent makes API calls — to Claude, to OpenAI, to whatever LLM is doing the work.\n\nEach call can fail mid-flight. And when one fails, you get a choice: re-run the whole pipeline from the top and burn tokens you already paid for, or wire up checkpointing yourself.\n\nThe [example-multi-agent-orchestration-ts](https://github.com/resonatehq-examples/example-multi-agent-orchestration-ts) repo shows the third option.\n\nThree specialist agents — researcher → writer → reviewer — coordinated by a 15-line generator.\n\nEach `yield* ctx.run(agent, args)`\n\nis a durable checkpoint. Crash the writer mid-draft, Resonate retries only the writer.\n\nThe researcher does not re-run. Its cached output is fed straight back into the retried call.\n\nThere is no retry configuration, no step metadata, no routing schema.\n\nThe orchestrator is sequential code that reads top-to-bottom.\n\nThe bigger story isn't the retry — it's everything that's missing. No orchestration platform. No event bus, no status dashboard backed by a separate database, no per-step retry knobs.\n\nResonate runs in embedded mode in this example: no external services, no servers to provision, no operational surface to learn. The durability comes from the runtime, not from the application code.\n\nThe same primitive that powers retries also powers human-in-the-loop: `yield* ctx.promise({})`\n\nblocks the workflow on an external signal.\n\nThe pipeline pauses at that line, waiting for an HTTP resolve. While it waits the process can crash, restart, redeploy — the promise survives, and when it resolves the workflow picks up at the next line.\n\nOne mechanism, two patterns. No additional surface area.\n\n*Originally published on the Resonate Journal.*", "url": "https://wpnews.pro/news/durable-handoffs-for-multi-agent-pipelines", "canonical_source": "https://dev.to/resonatehq/durable-handoffs-for-multi-agent-pipelines-pmk", "published_at": "2026-07-08 18:06:35+00:00", "updated_at": "2026-07-08 18:41:25.178986+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-infrastructure"], "entities": ["ResonateHQ", "Claude", "OpenAI", "example-multi-agent-orchestration-ts"], "alternates": {"html": "https://wpnews.pro/news/durable-handoffs-for-multi-agent-pipelines", "markdown": "https://wpnews.pro/news/durable-handoffs-for-multi-agent-pipelines.md", "text": "https://wpnews.pro/news/durable-handoffs-for-multi-agent-pipelines.txt", "jsonld": "https://wpnews.pro/news/durable-handoffs-for-multi-agent-pipelines.jsonld"}}