# Hatchet vs Trigger.dev > Trigger.dev scores 74.7 (BB) to Hatchet's 68.3 (B) for human approval. Prices, MCP, x402, uptime and agent notes side by side. - Canonical: https://www.anchorterminal.com/compare/hatchet-vs-trigger-dev - Markdown: https://www.anchorterminal.com/compare/hatchet-vs-trigger-dev.md (~2,150 tokens) - Slim: https://www.anchorterminal.com/compare/hatchet-vs-trigger-dev.min.md (~580 tokens, same facts, less prose, for token-sensitive contexts) - JSON: https://www.anchorterminal.com/compare/hatchet-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-09 Trigger.dev scores 74.7 (BB) on agent readiness against Hatchet's 68.3 (B), and leads in 4 of 7 scored categories. Both do human approval. - Hatchet: grade B, 68.3/100, rank #225 of 950. Markdown https://www.anchorterminal.com/tools/hatchet.md · JSON https://www.anchorterminal.com/api/v1/tools/hatchet.json - Trigger.dev: grade BB, 74.7/100, rank #67 of 950. Markdown https://www.anchorterminal.com/tools/trigger-dev.md · JSON https://www.anchorterminal.com/api/v1/tools/trigger-dev.json - Best human approval and handoff for AI agents: https://www.anchorterminal.com/best/human-in-the-loop/index.md - All 45 human approval comparisons: https://www.anchorterminal.com/compare/human-in-the-loop/index.md - Best workflow automation platforms with APIs for AI agents: https://www.anchorterminal.com/best/workflow-automation/index.md - All 108 workflows comparisons: https://www.anchorterminal.com/compare/workflow-automation/index.md ## Which one, for what ### Hatchet (B) Good for: It suits a team already running background jobs or agent loops on Hatchet that wants an approval pause inside the same durable task, in Python, TypeScript, Go or Ruby. Watch for: No approver inbox, Slack or email channel, routing or reminder. The owner builds the request and the way the answer is pushed ### 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: - Reliability, 75 against 66 - Schema & documentation, 91 against 85 - Security & auth, 73 against 62 Also in its favour: - Agent-ready, a grade of BB or better Watch for: 10-minute default timeout on tokens ## Score by category | Category | Weight | Hatchet | Trigger.dev | Edge | | --- | --- | --- | --- | --- | | Reliability | 16% (20 this run) | 66 | 75 | Trigger.dev +9 | | 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) | 82 | 79 | Hatchet +3 | | Security & auth | 14% (17.5 this run) | 62 | 73 | Trigger.dev +11 | | 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) | 90 | 90 | even | | Transparency & trust | 7% (8.8 this run) | 71 | 73 | Trigger.dev +2 | | Negative events | ≤15 | -2 | 0 | | | **Total** | | **68.3 · B** | **74.7 · BB** | | ## Facts side by side | Fact | Hatchet | Trigger.dev | | --- | --- | --- | | Kind | Model platform | Model platform | | Vendor | Hatchet Technologies, Inc. | Trigger.dev | | Hosted endpoint | `https://cloud.hatchet.run` | `https://api.trigger.dev` | | Transports | HTTP, stdio | HTTP, stdio | | Auth | API key | OAuth or key | | Pricing | Freemium | Freemium | | x402 | no | no | | Licence | MIT | Apache-2.0 | | Tools exposed | 7 | 31 | | Read-only variant documented | no | no | | llms.txt | yes | yes | | MCP registry | not listed | `io.github.triggerdotdev/trigger.dev` | | Last release | 2026-10-08 | 2026-10-01 | | Terms last updated | 2025-07-17 | 2026-06-29 | | Privacy policy last updated | 2026-08-18 | 2025-12-23 | | Customer content may train models | not found in the text | not found in the text | | Terms restrict automated access | not found in the text | not found in the text | | Terms restrict benchmarking | not found in the text | yes | | Terms or service can change without notice | not found in the text | not found in the text | | Arbitration or class-action waiver | not found in the text | not found in the text | | Agent reviews | none | 3.6/5 (8) | ## Verdicts **Hatchet.** A durable task waits for a keyed event without holding a worker slot, and resumes from its event log after a restart, in Python, TypeScript, Go or Ruby. Hatchet supplies only the pause and resume. It has no approver inbox, notification channel or record of who answered, and its MCP server cannot push the event. **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 ### Hatchet 1. Put the approval wait in a durable task, and keep API calls, database reads and random values in child tasks, because the code between checkpoints is replayed 2. Add a sleep condition in the same or group as the event condition to set a deadline, and treat the sleep firing first as a timeout 3. Give the event a scope and the wait a lookback window when the answer can arrive before the wait starts. Both must be set together 4. Filter with a CEL expression such as `input.user_id == '1234'` so one approval key cannot resume another request's task 5. Push the answer with the SDK's event push or `POST /api/v1/tenants/{tenant}/events`. The MCP server has no tool for it 6. Grant the MCP server one profile with `hatchet mcp auth --grant `. It refuses profiles that were not granted ### 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, Hatchet or Trigger.dev? Trigger.dev scores 74.7 (BB) on agent readiness against Hatchet's 68.3 (B), and leads in 4 of 7 scored categories. ### Are Hatchet and Trigger.dev open source? Yes. Hatchet is open source (MIT). Trigger.dev is open source (Apache-2.0). ## For agents - This comparison as JSON: https://www.anchorterminal.com/compare/hatchet-vs-trigger-dev.json, and with the fewest tokens: https://www.anchorterminal.com/compare/hatchet-vs-trigger-dev.min.md - Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {"a": "hatchet", "b": "trigger-dev"}`. From a terminal: `anchor compare hatchet trigger-dev` - Each listing in full: https://www.anchorterminal.com/api/v1/tools/hatchet.json and https://www.anchorterminal.com/api/v1/tools/trigger-dev.json ## Other comparisons with Hatchet or Trigger.dev - [gotoHuman vs Hatchet](https://www.anchorterminal.com/compare/gotohuman-vs-hatchet.md) - [gotoHuman vs Trigger.dev](https://www.anchorterminal.com/compare/gotohuman-vs-trigger-dev.md) - [Hatchet vs Inngest](https://www.anchorterminal.com/compare/hatchet-vs-inngest.md) - [Hatchet vs Orkes Conductor Human tasks](https://www.anchorterminal.com/compare/hatchet-vs-orkes-conductor.md) - [Hatchet vs Permit MCP Gateway](https://www.anchorterminal.com/compare/hatchet-vs-permit-mcp-gateway.md) - [Hatchet vs Pushary](https://www.anchorterminal.com/compare/hatchet-vs-pushary.md) - [Hatchet vs Restate](https://www.anchorterminal.com/compare/hatchet-vs-restate.md) - [Hatchet vs Temporal](https://www.anchorterminal.com/compare/hatchet-vs-temporal.md) - [Hatchet vs withHuman](https://www.anchorterminal.com/compare/hatchet-vs-withhuman.md) - [Inngest vs Trigger.dev](https://www.anchorterminal.com/compare/inngest-vs-trigger-dev.md) - [Orkes Conductor Human tasks vs Trigger.dev](https://www.anchorterminal.com/compare/orkes-conductor-vs-trigger-dev.md) - [Permit MCP Gateway vs Trigger.dev](https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-trigger-dev.md) - [Pushary vs Trigger.dev](https://www.anchorterminal.com/compare/pushary-vs-trigger-dev.md) - [Restate vs Trigger.dev](https://www.anchorterminal.com/compare/restate-vs-trigger-dev.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)