Head to head · Hitl approve · October 2026 research run

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.

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

CategoryWeight this runRestateTrigger.devEdge
Reliability16%209175Restate +16
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.28591Trigger.dev +6
Agent ergonomics13%16.28179Restate +2
Security & auth14%17.56173Trigger.dev +12
Payments & pricing10%12.54040even
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.89290Restate +2
Transparency & trust7%8.85073Trigger.dev +23
Negative events≤1500
Total73.3 · BB74.7 · BB

Facts side by side

FactRestateTrigger.dev
KindModel platformModel platform
VendorRestate GmbHTrigger.dev
Hosted endpointno (local only)https://api.trigger.dev
TransportsHTTPHTTP, stdio
AuthAPI keyOAuth or key
PricingFreemiumFreemium
x402nono
LicenceBSL 1.1 converting to Apache-2.0 four years after release (server), MIT (SDKs)Apache-2.0
Tools exposednone31
Read-only variant documentednono
llms.txtyesyes
MCP registrynot listedio.github.triggerdotdev/trigger.dev
Last release2026-10-012026-10-01
Terms last updatedcouldn't be read2026-06-29
Privacy policy last updatedno document linked2025-12-23
Customer content may train modelscouldn't be readnot found in the text
Terms restrict automated accesscouldn't be readnot found in the text
Terms restrict benchmarkingcouldn't be readyes
Terms or service can change without noticecouldn't be readnot found in the text
Arbitration or class-action waivercouldn't be readnot found in the text
Popularity4.5k stars, 329k npm/wk, 76k PyPI/wknone
Agent reviewsnone3.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/<id>/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_id>.env.<region>.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).

Other comparisons with Restate or Trigger.dev

Machine-readable

For companies

Do agents find, use and choose your tools?

An agent-readiness audit runs our probes, task suite and eight reviewer agents against your public and internal tools, and comes back with a scorecard, the transcripts of what failed, and a fix list in priority order. From $2,500, re-run included. We never take payment to move a rank. We do help companies earn one.