How Restate’s scores are calculated
The full audit trail, recomputed from the verdict data at build time through the same code that produced the leaderboard: verdict × quality × story weight per cell, cells sum to dimension scores, dimensions blend into the PA Score. Every number on the product page is reproducible from this page alone; for why the formula looks like this, see the methodology.
verdict factors: full ×1.0 · partial ×0.6 · disputed ×0.3 · none ×0.0 · n/a excluded from both sides · cell points = weight × quality × factor · cell max = weight × 10
PA Score33/100
Agent-ready 54.7 × 0.30 = 16.41
API quality 10.3 × 0.20 = 2.06
Openness 40.4 × 0.20 = 8.08
Built-in AI 20.0 × 0.15 = 3.00
Automation 25.5 × 0.15 = 3.82
(16.41 + 2.06 + 8.08 + 3.00 + 3.82) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 33.38 ÷ 1.00 = 33.4
Scores are stored to 1 decimal; the product page’s pills round to whole numbers for display. Each dimension below shows the stories, verdicts, and cited evidence behind its number.
Agent-ready54.7/100×0.30 of the PA blend
Outside-in: can YOUR agent reach and drive this product — API, MCP, CLI, headless runs, agent docs.
Point an agent at llms.txt or agent-oriented docsweight 2
2 (weight) × 9 (quality) × 1.0 (full) = 18.0 of 20 max
- [probe] https://docs.restate.dev/llms.txt“PROBE llms.txt: HTTP 200 at https://docs.restate.dev/llms.txt # Restate > Restate is the simplest way to build resilient applications. - [Welcome to Restate!](https://docs.restate.”
- [claimed-docs] https://docs.restate.dev/develop/ai-assistant“The Restate plugin teaches your coding agent how to build Restate apps: Durable Execution, service types, SDK APIs, common pitfalls, and AI agent integration patterns”
- [claimed-docs] https://docs.restate.dev/develop/ai-assistant“The Restate documentation and templates integrate with AI coding agents like Claude Code, Codex, and Cursor so you can get expert help while building Restate apps.”
Run the product headlessly / in CI for automationweight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [claimed-docs] https://docs.restate.dev/server/overview“Restate is distributed as a single binary that implements all features required to run a single- or multi-node cluster”
- [claimed-docs] https://docs.restate.dev/installation“Restate is a single self-contained binary. No external dependencies needed.”
- [claimed-docs] https://docs.restate.dev/server/overview“Restate is distributed as a single binary that implements all features required to run a single- or multi-node cluster, making it easy to run it on a variety of platforms, from your local machine, to a VM, to Kubernetes.”
- [claimed-docs] https://docs.restate.dev/concepts/durable_execution“Deploy anywhere: Services run in your infrastructure as containers, serverless functions, VMs, or Kubernetes pods”
- [claimed-docs] https://docs.restate.dev/references/cli-config.md“You can use the CLI to interact with Restate, and manage your services, deployments and invocations.”
- [claimed-docs] https://docs.restate.dev/foundations/invocations“Use typed clients from external applications to invoke Restate handlers”
- [claimed-docs] https://docs.restate.dev/foundations/invocations“To call a function over HTTP, send a request to the Restate Server, specifying the service and the function you want to invoke.”
Plug MCP servers into this product so it can use their toolsweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
- [claimed-docs] https://docs.restate.dev/develop/ai-assistant“The Restate plugin teaches your coding agent how to build Restate apps: Durable Execution, service types, SDK APIs, common pitfalls, and AI agent integration patterns”
- [claimed-docs] https://docs.restate.dev/develop/ai-assistant.md“The Restate plugin teaches your coding agent how to build Restate apps: Durable Execution, service types, SDK APIs, common pitfalls, and AI agent integration patterns across TypeScript, Python, Java, and Go.”
- [claimed-docs] https://docs.restate.dev/develop/ai-assistant“The Restate documentation and templates integrate with AI coding agents like Claude Code, Codex, and Cursor so you can get expert help while building Restate apps.”
- [probe] https://docs.restate.dev/develop/ai-assistant“official MCP server documented at https://docs.restate.dev/develop/ai-assistant”
- [claimed-docs] https://docs.restate.dev/ai/patterns/tools.md“Deploy complex tool logic as separate durable services. Scale tools independently, use any language, and get end-to-end durability.”
- [claimed-docs] https://docs.restate.dev/ai/sdk-integrations/openai-agents-sdk.md“Integrate OpenAI Agents SDK with Restate for fault-tolerant agent execution with automatic retries and durable state.”
Connect an agent via an official MCP serverweight 3
3 (weight) × 6 (quality) × 0.6 (partial) = 10.8 of 30 max
- [claimed-docs] https://docs.restate.dev/develop/ai-assistant“The Restate plugin teaches your coding agent how to build Restate apps: Durable Execution, service types, SDK APIs, common pitfalls, and AI agent integration patterns”
- [claimed-docs] https://docs.restate.dev/develop/ai-assistant.md“The Restate plugin teaches your coding agent how to build Restate apps: Durable Execution, service types, SDK APIs, common pitfalls, and AI agent integration patterns across TypeScript, Python, Java, and Go.”
- [claimed-docs] https://docs.restate.dev/develop/ai-assistant“The Restate documentation and templates integrate with AI coding agents like Claude Code, Codex, and Cursor so you can get expert help while building Restate apps.”
- [probe] https://docs.restate.dev/develop/ai-assistant“official MCP server documented at https://docs.restate.dev/develop/ai-assistant”
Use an official CLIweight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [claimed-docs] https://docs.restate.dev/services/introspection“Restate exposes information on invocations and application state via its CLI and Introspection SQL API.”
- [claimed-docs] https://docs.restate.dev/references/cli-config.md“You can use the CLI to interact with Restate, and manage your services, deployments and invocations.”
- [probe] https://docs.restate.dev/installation“official CLI documented at https://docs.restate.dev/installation”
Drive the product through a documented public APIweight 3
3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max
- [claimed-docs] https://docs.restate.dev/foundations/invocations“To call a function over HTTP, send a request to the Restate Server, specifying the service and the function you want to invoke.”
- [claimed-docs] https://docs.restate.dev/foundations/invocations“Use typed clients from external applications to invoke Restate handlers”
- [claimed-docs] https://docs.restate.dev/services/introspection“Restate exposes information on invocations and application state via its CLI and Introspection SQL API.”
- [claimed-docs] https://docs.restate.dev/foundations/invocations“There are three ways to invoke a handler: over HTTP, using typed clients, or through Kafka topics.”
- [claimed-docs] https://docs.restate.dev/services/invocation/clients/typescript-sdk.md“The Restate SDK client library lets you invoke Restate handlers from anywhere in your application.”
- [claimed-docs] https://docs.restate.dev/references/cli-config.md“You can use the CLI to interact with Restate, and manage your services, deployments and invocations.”
- [claimed-docs] https://docs.restate.dev/services/introspection“Inspect the status of invocations/services.”
- [claimed-docs] https://docs.restate.dev/admin-api“Cluster state endpoint”
- [claimed-docs] https://docs.restate.dev/admin-api/service/get-service-openapi-definition.md“Returns the OpenAPI 3.1 specification for the service, describing all handlers and their request/response schemas.”
- [probe] https://docs.restate.dev/openapi.json“PROBE openapi: all candidate paths 404 (https://docs.restate.dev/openapi.json, https://docs.restate.dev/swagger.json, https://docs.restate.dev/api/openapi.json, https://docs.restate.dev/.well-known/openapi.json)”
- [probe] https://docs.restate.dev/installation“official CLI documented at https://docs.restate.dev/installation”
Issue scoped/least-privilege API credentials for an agentweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://docs.restate.dev/services/security“Restate has a native request identity feature which can be used in the SDK to cryptographically verify that requests have come from a particular Restate instance.”
- [claimed-docs] https://docs.restate.dev/services/security“Only Restate needs to be able to make requests to your services. The Restate Server will proxy all requests for these services.”
- [claimed-docs] https://docs.restate.dev/services/security“Restrict access to Restate services”
Build against official SDKsweight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [github] https://github.com/restatedev/restate“Restate supports the following SDKs: * [Typescript] * [Java and Kotlin] * [Python] * [Go] * [Rust]”
- [claimed-docs] https://docs.restate.dev/ai/sdk-integrations/vercel-ai-sdk.md“The Vercel AI SDK is an excellent fit for Restate integration.”
- [claimed-docs] https://docs.restate.dev/ai/sdk-integrations/openai-agents-sdk.md“Integrate OpenAI Agents SDK with Restate for fault-tolerant agent execution with automatic retries and durable state.”
- [claimed-docs] https://docs.restate.dev/tour/agents“Build AI agents that survive crashes and recover automatically. Every LLM call, tool execution, and routing decision is durably persisted.”
- [claimed-docs] https://docs.restate.dev/use-cases/ai-agents“Automatically retry transient errors like rate limits and network failures. Persist steps (LLM calls, tools) and recover previous progress after failures.”
- [community] https://news.ycombinator.com/item?id=40659160“The cloud setup was super fast! I used it for an existing app + restate TS sdk, really took a few steps to get things up and running! Looking forward to more support for nextjs/node”
- [community] https://news.ycombinator.com/item?id=40659160“Being fairly familiar with Temporal, I definitely appreciate your cleaner architectural choices. Add a Go SDK and I'll definitely give this a try.”
Subscribe to events via webhooksweight 2
2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max
- [claimed-docs] https://docs.restate.dev/guides/durable-webhooks.md“Restate persists all incoming events, and ensures that they are processed exactly once, across failures and restarts... Let Restate deduplicate events on an idempotency key.”
- [claimed-docs] https://docs.restate.dev/guides/durable-webhooks.md“Any handler can be a durable webhook endpoint. No need to do anything special or extra!”
- [claimed-docs] https://docs.restate.dev/guides/durable-webhooks.md“Restate persists all incoming events, and ensures that they are processed exactly once, across failures and restarts.”
- [claimed-docs] https://docs.restate.dev/guides/durable-webhooks.md“Restate persists all incoming events, and ensures that they are **processed exactly once**, across failures and restarts.”
- [claimed-docs] https://docs.restate.dev“Coordinate long-running processes, human approvals, listen to webhooks and other signals.”
- [claimed-docs] https://docs.restate.dev/develop/ts/external-events“Restate provides three durable coordination primitives for this: ... Communication between ongoing invocations, agent steering, and human approvals”
Agent-ready = 114.8 ÷ 210 × 100 = 54.7
API quality10.3/100×0.20 of the PA blend
The programmable surface once an agent is there — machine-readable spec, interactive docs, sandbox, versioning discipline.
Explore an interactive API reference with runnable examplesweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://docs.restate.dev/admin-api/service/get-service-openapi-definition.md“Returns the OpenAPI 3.1 specification for the service, describing all handlers and their request/response schemas.”
- [probe] https://docs.restate.dev/openapi.json“PROBE openapi: all candidate paths 404 (https://docs.restate.dev/openapi.json, https://docs.restate.dev/swagger.json, https://docs.restate.dev/api/openapi.json, https://docs.restate.dev/.well-known/openapi.json)”
Download a machine-readable API spec (OpenAPI or equivalent)weight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [probe] https://docs.restate.dev/openapi.json“PROBE openapi: all candidate paths 404 (https://docs.restate.dev/openapi.json, https://docs.restate.dev/swagger.json, https://docs.restate.dev/api/openapi.json, https://docs.restate.dev/.well-known/openapi.json)”
- [claimed-docs] https://docs.restate.dev/foundations/invocations“To call a function over HTTP, send a request to the Restate Server, specifying the service and the function you want to invoke.”
- [claimed-docs] https://docs.restate.dev/services/introspection“Restate exposes information on invocations and application state via its CLI and Introspection SQL API.”
Test against a sandbox environment without touching production dataweight 1
1 (weight) × 6 (quality) × 0.6 (partial) = 3.6 of 10 max
- [claimed-docs] https://docs.restate.dev/develop/ts/testing“This uses [Testcontainers](https://testcontainers.com/) to run a Restate Server in a Docker container and let you test your Restate handlers.”
- [claimed-docs] https://docs.restate.dev/develop/ts/testing“The Typescript SDK has a companion library which makes it easy to test against a Restate container”
- [claimed-docs] https://docs.restate.dev/develop/ts/testing“Utilities to test your handler logic.”
- [claimed-docs] https://docs.restate.dev/installation“Learn how to set up your local Restate development environment.”
Rely on versioned APIs with a documented deprecation policyweight 2
2 (weight) × 3 (quality) × 0.6 (partial) = 3.6 of 20 max
- [claimed-docs] https://docs.restate.dev/services/versioning“Restate then makes sure that requests start and end on the same version, by sending any retry attempts always to the same endpoint.”
- [claimed-docs] https://docs.restate.dev/services/versioning“Restate helps via the concept of immutable deployments. When you deploy a version of your code, you giv”
- [claimed-docs] https://docs.restate.dev/changelog/typescript-sdk.md“The new restate.iface lets you declare service interfaces, including input/output serdes, and use them to both implement the service and call it as a typed client.”
- [claimed-docs] https://docs.restate.dev/changelog/typescript-sdk.md“The new `restate.iface` lets you declare service interfaces, including input/output serdes, and use them to both **implement** the service and **call** it as a typed client.”
- [claimed-docs] https://docs.restate.dev/changelog/rust-sdk.md“The SDK now generates a typed `<Type>IngressClient` for every impl-block service, virtual object, and workflow.”
API quality = 7.2 ÷ 70 × 100 = 10.3
Openness40.4/100×0.20 of the PA blend
Can you leave, inspect, or self-host — data export, open source, portability.
Do everything through the API that I can do in the UIweight 2
2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max
- [claimed-docs] https://docs.restate.dev/services/introspection“Restate exposes information on invocations and application state via its CLI and Introspection SQL API.”
- [claimed-docs] https://docs.restate.dev/foundations/invocations“To call a function over HTTP, send a request to the Restate Server, specifying the service and the function you want to invoke.”
- [claimed-docs] https://docs.restate.dev/foundations/invocations“Use typed clients from external applications to invoke Restate handlers”
- [claimed-docs] https://docs.restate.dev/server/overview“Restate is distributed as a single binary that implements all features required to run a single- or multi-node cluster”
Export all of my data in open formats and leaveweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
- [claimed-docs] https://docs.restate.dev/services/introspection“Restate exposes information on invocations and application state via its CLI and Introspection SQL API.”
- [claimed-docs] https://docs.restate.dev/references/cli-config.md“You can use the CLI to interact with Restate, and manage your services, deployments and invocations.”
- [claimed-docs] https://docs.restate.dev/hosting/overview“You can use Restate Cloud, run a managed Restate region in your cloud account with Restate BYOC, or operate Restate yourself.”
- [community] https://news.ycombinator.com/item?id=40659160“Looks very interesting, but calling it Open Source is misleading. BSL is not "minimal Amazon defense". It effectively prevents any meaningful dynamic functionality to be built on top of it without a commercial subscription.”
Read the product's source under an open licenseweight 2
2 (weight) × 4 (quality) × 0.3 (disputed) = 2.4 of 20 max
- [github] https://github.com/restatedev/restate“Restate provides a distributed durable version of your everyday building blocks, letting you build a wide range of use cases”
- [github] https://github.com/restatedev/restate“Restate supports the following SDKs: * [Typescript] * [Java and Kotlin] * [Python] * [Go] * [Rust]”
- [community] https://news.ycombinator.com/item?id=40659160“Looks very interesting, but calling it Open Source is misleading. BSL is not "minimal Amazon defense". It effectively prevents any meaningful dynamic functionality to be built on top of it without a commercial subscription.”
Self-host the core productweight 3
3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max
- [claimed-docs] https://docs.restate.dev/concepts/durable_execution“Deploy anywhere: Services run in your infrastructure as containers, serverless functions, VMs, or Kubernetes pods”
- [claimed-docs] https://docs.restate.dev/server/overview“Restate is distributed as a single binary that implements all features required to run a single- or multi-node cluster”
- [claimed-docs] https://docs.restate.dev/hosting/overview“You can use Restate Cloud, run a managed Restate region in your cloud account with Restate BYOC, or operate Restate yourself.”
- [claimed-docs] https://docs.restate.dev/installation“Restate is a single self-contained binary. No external dependencies needed.”
- [community] https://news.ycombinator.com/item?id=43294756“the restate server does handle the durable execution journal / orchestration, while the user code runs in a separate process, we don't host the code ourselves at the moment, but it is really easy to deploy it wherever you wish and even deploy it on AWS lambda!”
- [community] https://news.ycombinator.com/item?id=40659160“Looks very interesting, but calling it Open Source is misleading. BSL is not "minimal Amazon defense". It effectively prevents any meaningful dynamic functionality to be built on top of it without a commercial subscription.”
Openness = 40.4 ÷ 100 × 100 = 40.4
Built-in AI20.0/100×0.15 of the PA blend
Inside-out: how agentic the product itself is for its users — built-in assistants, autonomous features.
Get AI-generated insights and suggestions from my data inside the productweight 2
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Set up automations that run autonomously in the backgroundweight 2
2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max
- [claimed-docs] https://docs.restate.dev“Sleep, schedule, and wait for external events with durable timers.”
- [claimed-docs] https://docs.restate.dev“Coordinate long-running processes, human approvals, listen to webhooks and other signals.”
- [claimed-docs] https://docs.restate.dev/use-cases/ai-agents“Automatically retry transient errors like rate limits and network failures. Persist steps (LLM calls, tools) and recover previous progress after failures.”
- [claimed-docs] https://docs.restate.dev/use-cases/ai-agents“A few lines turn your agent into a durable agent.”
- [claimed-docs] https://docs.restate.dev/tour/agents“Build AI agents that survive crashes and recover automatically. Every LLM call, tool execution, and routing decision is durably persisted.”
- [claimed-docs] https://docs.restate.dev/develop/ts/external-events“Restate provides three durable coordination primitives for this: ... Communication between ongoing invocations, agent steering, and human approvals”
- [claimed-docs] https://docs.restate.dev/develop/ts/durable-timers“If your handler runs on function-as-a-service platforms like AWS Lambda, Restate suspends the handler while it is sleeping, to free up resources.”
Delegate tasks to a built-in AI assistant inside the productweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
- [claimed-docs] https://docs.restate.dev/develop/ai-assistant“The Restate plugin teaches your coding agent how to build Restate apps: Durable Execution, service types, SDK APIs, common pitfalls, and AI agent integration patterns”
- [claimed-docs] https://docs.restate.dev/develop/ai-assistant.md“The Restate plugin teaches your coding agent how to build Restate apps: Durable Execution, service types, SDK APIs, common pitfalls, and AI agent integration patterns across TypeScript, Python, Java, and Go.”
- [claimed-docs] https://docs.restate.dev/develop/ai-assistant“The Restate documentation and templates integrate with AI coding agents like Claude Code, Codex, and Cursor so you can get expert help while building Restate apps.”
Operate the product with natural-language commandsweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Built-in AI = 14.0 ÷ 70 × 100 = 20.0
Automation25.5/100×0.15 of the PA blend
Depth of automation primitives — rules, scheduling, bulk operations, webhooks.
Perform bulk operations across many items at onceweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Define rules that trigger actions automatically on eventsweight 3
3 (weight) × 6 (quality) × 0.6 (partial) = 10.8 of 30 max
- [claimed-docs] https://docs.restate.dev“Sleep, schedule, and wait for external events with durable timers.”
- [claimed-docs] https://docs.restate.dev“Coordinate long-running processes, human approvals, listen to webhooks and other signals.”
- [claimed-docs] https://docs.restate.dev/develop/ts/external-events“Restate provides three durable coordination primitives for this: ... Communication between ongoing invocations, agent steering, and human approvals”
- [claimed-docs] https://docs.restate.dev/guides/durable-webhooks.md“Restate persists all incoming events, and ensures that they are processed exactly once, across failures and restarts... Let Restate deduplicate events on an idempotency key.”
- [claimed-docs] https://docs.restate.dev/guides/durable-webhooks.md“Any handler can be a durable webhook endpoint. No need to do anything special or extra!”
- [claimed-docs] https://docs.restate.dev/ai/patterns/human-in-the-loop.md“Agents that pause for human approval and resume when it arrives, even across restarts and infrastructure changes.”
- [claimed-docs] https://docs.restate.dev/develop/ts/durable-timers“Restate provides durable, fault-tolerant timers that allow you to: Sleep... Send delayed messages... Set timeouts... Implement patterns like cron jobs”
- [claimed-docs] https://docs.restate.dev/ai/patterns/notify-when-ready.md“Build async notification systems for your agents with just a few lines of code.”
Schedule recurring jobs or workflowsweight 2
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [claimed-docs] https://docs.restate.dev“Sleep, schedule, and wait for external events with durable timers.”
- [claimed-docs] https://docs.restate.dev/develop/ts/durable-timers“If your handler runs on function-as-a-service platforms like AWS Lambda, Restate suspends the handler while it is sleeping, to free up resources.”
- [claimed-docs] https://docs.restate.dev“Coordinate long-running processes, human approvals, listen to webhooks and other signals.”
- [claimed-docs] https://docs.restate.dev/develop/ts/external-events“Restate provides three durable coordination primitives for this: ... Communication between ongoing invocations, agent steering, and human approvals”
Version, review, and roll back my automationsweight 1
1 (weight) × 6 (quality) × 0.6 (partial) = 3.6 of 10 max
- [claimed-docs] https://docs.restate.dev/services/versioning“Restate then makes sure that requests start and end on the same version, by sending any retry attempts always to the same endpoint.”
- [claimed-docs] https://docs.restate.dev/services/versioning“Restate helps via the concept of immutable deployments. When you deploy a version of your code, you giv”
- [claimed-docs] https://docs.restate.dev/ai/patterns/rollback.md“Guaranteed compensation: If the main workflow fails, compensation handlers are reliably executed”
- [claimed-docs] https://docs.restate.dev/ai/patterns/rollback.md“Implement compensation and rollback mechanisms for agents that need to undo partial work when failures occur.”
- [claimed-docs] https://docs.restate.dev/ai/patterns/observability-control.md“Full visibility into agent execution. Inspect journals, export traces, and cancel or kill stuck agents.”
- [claimed-docs] https://docs.restate.dev/ai/patterns/observability-control.md“Invocations list: See all running, suspended, and completed agent invocations”
Automation = 20.4 ÷ 80 × 100 = 25.5