Skip to main content
When agents need to scale independently, run on different infrastructure, or be developed by different teams, you can deploy them as separate Restate services and route requests between them. Restate makes cross-service calls look like local function calls while providing end-to-end durability, failure recovery, and automatic retries.

Local vs remote agents

There are two ways to coordinate specialist agents:
Local agentsRemote agents
Where they runSame process as the routerSeparate services, potentially on different infrastructure
Best forSimple specialization with shared contextIndependent scaling, isolation, different languages
How routing worksHandoffs, sub-agents, or tool calls within one handlerDurable RPC calls between Restate services
ExampleLLM picks a specialist prompt, calls LLM again in the same handlerLLM picks a specialist service, router calls it over HTTP
Agent SDKs like OpenAI and Google ADK have built-in mechanisms for local routing (handoffs, sub-agents). For remote routing, or when using the Restate SDK directly, you deploy each specialist as its own Restate service and call it via Restate’s service clients. You can either use typed service clients or call a remote service by string name (generic calls). Learn more about calling services in the TS/Py SDK documentation.

Example: routing to specialist agents

For more details on resilient service-to-service calls, see the SDK documentation: TypeScript / Python.