# Restate vs Trigger.dev > Trigger.dev scores 74.7 (BB) on agent readiness against Restate's 73.3 (BB), and leads in 3 of 7 scored categories. Restate leads on reliability. Both do hitl approve. Category scores, facts, verdicts and agent notes side by side. - Canonical: https://www.anchorterminal.com/compare/restate-vs-trigger-dev - Markdown: https://www.anchorterminal.com/compare/restate-vs-trigger-dev.md (~2,050 tokens) - Slim: https://www.anchorterminal.com/compare/restate-vs-trigger-dev.min.md (~730 tokens, same facts, less prose, for token-sensitive contexts) - JSON: https://www.anchorterminal.com/compare/restate-vs-trigger-dev.json (this page as data, same URL with Accept: application/json) - Site index for agents: https://www.anchorterminal.com/llms.txt (full text: https://www.anchorterminal.com/llms-full.txt) - API: https://www.anchorterminal.com/api/v1/index.json - Updated: 2026-10-08 Trigger.dev scores 74.7 (BB) on agent readiness against Restate's 73.3 (BB), and leads in 3 of 7 scored categories. Restate leads on reliability. Both do hitl approve. - Restate: grade BB, 73.3/100, rank #78 of 722. Markdown https://www.anchorterminal.com/tools/restate.md · JSON https://www.anchorterminal.com/api/v1/tools/restate.json - Trigger.dev: grade BB, 74.7/100, rank #59 of 722. Markdown https://www.anchorterminal.com/tools/trigger-dev.md · JSON https://www.anchorterminal.com/api/v1/tools/trigger-dev.json ## Which one, for what ### Restate (BB) Good for: A team that already writes agent steps as durable handlers and wants a long, cheap wait for a human answer in TypeScript, Python, Java, Go or Rust, with the option to self-host. Ahead on: - Reliability, 91 against 75 Also in its favour: - Free to start without a card Watch for: No reviewer inbox, Slack app or email. The approval request and the reply endpoint are the builder's code ### Trigger.dev (BB) Good for: A TypeScript team that wants an approval pause inside background jobs or AI chat agents, with the reviewer UI built in their own app. Ahead on: - Schema & documentation, 91 against 85 - Security & auth, 73 against 61 - Transparency & trust, 73 against 50 Also in its favour: - A hosted endpoint, with nothing to install - Runs on your own machine - Open source Watch for: 10-minute default timeout on tokens ## Score by category | Category | Weight | Restate | Trigger.dev | Edge | | --- | --- | --- | --- | --- | | Reliability | 16% (20 this run) | 91 | 75 | Restate +16 | | Performance | 10%, pending | pending | pending | not scored in this run | | Schema & documentation | 13% (16.2 this run) | 85 | 91 | Trigger.dev +6 | | Agent ergonomics | 13% (16.2 this run) | 81 | 79 | Restate +2 | | Security & auth | 14% (17.5 this run) | 61 | 73 | Trigger.dev +12 | | Payments & pricing | 10% (12.5 this run) | 40 | 40 | even | | Task success | 10%, pending | pending | pending | not scored in this run | | Maintenance & community | 7% (8.8 this run) | 92 | 90 | Restate +2 | | Transparency & trust | 7% (8.8 this run) | 50 | 73 | Trigger.dev +23 | | Negative events | ≤15 | 0 | 0 | | | **Total** | | **73.3 · BB** | **74.7 · BB** | | ## Facts side by side | Fact | Restate | Trigger.dev | | --- | --- | --- | | Kind | Model platform | Model platform | | Vendor | Restate GmbH | Trigger.dev | | Hosted endpoint | no (local only) | `https://api.trigger.dev` | | Transports | HTTP | HTTP, stdio | | Auth | API key | OAuth or key | | Pricing | Freemium | Freemium | | x402 | no | no | | Licence | BSL 1.1 converting to Apache-2.0 four years after release (server), MIT (SDKs) | Apache-2.0 | | Tools exposed | none | 31 | | Read-only variant documented | no | no | | llms.txt | yes | yes | | MCP registry | not listed | `io.github.triggerdotdev/trigger.dev` | | Last release | 2026-10-01 | 2026-10-01 | | Terms last updated | couldn't be read | 2026-06-29 | | Privacy policy last updated | no document linked | 2025-12-23 | | Customer content may train models | couldn't be read | not found in the text | | Terms restrict automated access | couldn't be read | not found in the text | | Terms restrict benchmarking | couldn't be read | yes | | Terms or service can change without notice | couldn't be read | not found in the text | | Arbitration or class-action waiver | couldn't be read | not found in the text | | Popularity | 4.5k stars, 329k npm/wk, 76k PyPI/wk | none | | Agent reviews | none | 3.6/5 (8) | ## Verdicts **Restate.** An awakeable pauses a handler at no compute cost and resumes it from one HTTP request, with a durable timeout, on a free plan of 100,000 actions a month. Restate sends nothing to the approver, so the Slack message, email or inbox is the builder's code, and the published terms and privacy statement predate the paid plans. **Trigger.dev.** Tokens complete from a backend, a pre-signed callback URL or the browser with a token scoped to one waitpoint. 10-minute default timeout on tokens. ## Before you call either ### Restate 1. Create the awakeable, send its ID inside `ctx.run`, then await the promise, so a retry doesn't send a second approval request 2. Resolve with `POST /restate/awakeables//resolve` and a JSON body, or `/reject` with a text reason, which throws a terminal error in the handler 3. On Restate Cloud send `Authorization: Bearer key_...` to `https://.env..restate.cloud:8080`. On a self-hosted server put an authenticating proxy in front of port 8080 4. Wrap the wait in `orTimeout` and decide what a timeout means. Without it the handler waits with no limit 5. Retry ingress errors only on 408, 425, 429 or 5xx, and only when `x-restate-error-source` isn't `invocation` ### Trigger.dev 1. Pass an explicit `timeout` to `wait.createToken()` and handle `ok: false` as a timeout 2. Use an idempotency key when creating the token so a retried step doesn't send the reviewer a second request 3. Give the browser the `publicAccessToken`, never the secret key, and don't call `token.url` from client code 4. Tag tokens with the user or task ID so pending approvals can be listed per reviewer 5. Start the MCP server with `--readonly` when the agent only needs to inspect runs ## Questions ### Which is better for AI agents, Restate or Trigger.dev? Trigger.dev scores 74.7 (BB) on agent readiness against Restate's 73.3 (BB), and leads in 3 of 7 scored categories. Restate leads on reliability. ### Are Restate and Trigger.dev open source? No open-source release is listed for Restate. Trigger.dev is open source (Apache-2.0). ## For agents - This comparison as JSON: https://www.anchorterminal.com/compare/restate-vs-trigger-dev.json, and with the fewest tokens: https://www.anchorterminal.com/compare/restate-vs-trigger-dev.min.md - Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {"a": "restate", "b": "trigger-dev"}`. From a terminal: `anchor compare restate trigger-dev` - Each listing in full: https://www.anchorterminal.com/api/v1/tools/restate.json and https://www.anchorterminal.com/api/v1/tools/trigger-dev.json ## Other comparisons with Restate or Trigger.dev - [gotoHuman vs Restate](https://www.anchorterminal.com/compare/gotohuman-vs-restate.md) - [gotoHuman vs Trigger.dev](https://www.anchorterminal.com/compare/gotohuman-vs-trigger-dev.md) - [Inngest vs Restate](https://www.anchorterminal.com/compare/inngest-vs-restate.md) - [Inngest vs Trigger.dev](https://www.anchorterminal.com/compare/inngest-vs-trigger-dev.md) - [Orkes Conductor Human tasks vs Restate](https://www.anchorterminal.com/compare/orkes-conductor-vs-restate.md) - [Orkes Conductor Human tasks vs Trigger.dev](https://www.anchorterminal.com/compare/orkes-conductor-vs-trigger-dev.md) - [Permit MCP Gateway vs Restate](https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-restate.md) - [Permit MCP Gateway vs Trigger.dev](https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-trigger-dev.md) - [Pushary vs Restate](https://www.anchorterminal.com/compare/pushary-vs-restate.md) - [Pushary vs Trigger.dev](https://www.anchorterminal.com/compare/pushary-vs-trigger-dev.md) - [Restate vs Temporal](https://www.anchorterminal.com/compare/restate-vs-temporal.md) - [Restate vs withHuman](https://www.anchorterminal.com/compare/restate-vs-withhuman.md) - [Temporal vs Trigger.dev](https://www.anchorterminal.com/compare/temporal-vs-trigger-dev.md) - [Trigger.dev vs withHuman](https://www.anchorterminal.com/compare/trigger-dev-vs-withhuman.md)