{
  "data": {
    "a": {
      "slug": "hatchet",
      "name": "Hatchet",
      "vendor": "Hatchet Technologies, Inc.",
      "vendorUrl": "https://hatchet.run",
      "kind": "platform",
      "category": "human-in-the-loop",
      "summary": "Hatchet is an open-source (MIT) platform for durable tasks, queues and workflows, sold as Hatchet Cloud or self-hosted. A durable task can pause until an event arrives, which is its building block for human approval steps.",
      "url": "https://www.anchorterminal.com/tools/hatchet",
      "markdownUrl": "https://www.anchorterminal.com/tools/hatchet.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/hatchet.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/hatchet.json",
      "repo": "https://github.com/hatchet-dev/hatchet",
      "license": "MIT",
      "transports": [
        "http",
        "stdio"
      ],
      "remoteUrl": "https://cloud.hatchet.run",
      "packages": [
        {
          "registry": "pypi",
          "name": "hatchet-sdk"
        },
        {
          "registry": "npm",
          "name": "@hatchet-dev/typescript-sdk"
        },
        {
          "registry": "go",
          "name": "github.com/hatchet-dev/hatchet"
        }
      ],
      "auth": "api-key",
      "authNotes": "Self-serve. A person signs up at cloud.hatchet.run and creates an API token in Settings, scoped to one tenant with a configurable expiry. SDK clients, workers and the REST API send it as a Bearer token. The MCP server reads tokens from CLI profiles the user granted. Embedded mode runs a local engine with no token.",
      "pricing": "freemium",
      "pricingNotes": "Hatchet Cloud is pay as you go from $0, and the plan without a card includes 1 million runs and 1 million events a month, capped at 2,000 of each a day, so an agent's owner can start without a contract. Beyond that, $30 per million runs and $5 per million events. Enterprise is priced by sales. Self-hosting is free under MIT (https://hatchet.run/pricing).",
      "priceSummary": "$0.03 / 1k calls",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs index, the OpenAPI file or the pricing page (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": 7,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://docs.hatchet.run/v1/durable-event-waits",
      "llmsTxt": "https://docs.hatchet.run/llms.txt",
      "openapi": "https://github.com/hatchet-dev/hatchet/blob/main/api-contracts/openapi/openapi.yaml",
      "capabilities": [
        "hitl.approve",
        "hitl.ask",
        "agent.durable",
        "automation.workflows",
        "automation.code"
      ],
      "tags": [
        "hosted",
        "self-hosted",
        "open-source",
        "freemium",
        "free-tier",
        "mcp",
        "openapi",
        "llms-txt",
        "python",
        "typescript",
        "go",
        "durable",
        "webhooks",
        "idempotency",
        "hipaa"
      ],
      "lastRelease": "2026-10-08",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 68.3,
        "grade": "B",
        "agentReady": false,
        "rank": 225,
        "ranked": true,
        "rankOf": 950,
        "categoryRank": 4,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 82,
          "maintenance": 90,
          "payments": 40,
          "reliability": 66,
          "schema": 85,
          "security": 62,
          "transparency": 71
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-09"
        },
        "negative": -2,
        "negativeNotes": [
          "Published 4 September 2026, -2. GHSA-992g-9cr3-vm5x (CVE-2026-88978), Moderate, CVSS 3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N. The `DurableTask` worker status path looked up durable event log entries by a caller-supplied task UUID with no tenant filter, so a holder of any tenant's token who knew another tenant's task UUID could read its entries. The advisory names Hatchet Cloud as affected and calls exploitation very unlikely because the IDs are random UUIDs. Fixed in 0.106.1. It is the event log this listing is graded on, so 2 points for a fixed path. https://github.com/hatchet-dev/hatchet/security/advisories/GHSA-992g-9cr3-vm5x (read through https://api.osv.dev/v1/vulns/GHSA-992g-9cr3-vm5x)",
          "Not deducted. GHSA-hf2m-86fv-rjw5, fixed in v0.110.5 on 5 October 2026, enforced payload visibility restrictions on endpoints that had returned payload data. The OSV mirror answered 404 for it, so its severity was not read. https://github.com/hatchet-dev/hatchet/blob/main/CHANGELOG.md"
        ],
        "verdict": "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.",
        "bestFor": "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.",
        "strengths": [
          "A durable task waiting on an event is evicted from its worker slot and resumes from the durable event log after a restart or crash",
          "Events can be filtered with a CEL expression, and a scope with a lookback window catches an answer pushed before the wait began",
          "MIT licence, self-hostable, with SDKs for Python (1.41.1), TypeScript (1.36.0), Go and Ruby (0.9.0)",
          "Pay-as-you-go cloud plan starts at $0 without a card, with 1 million runs and 1 million events a month included, per the pricing page",
          "Platform release v0.110.19 on 8 October 2026, with dated changelogs for the platform and each SDK"
        ],
        "weaknesses": [
          "No approver inbox, Slack or email channel, routing or reminder. The owner builds the request and the way the answer is pushed",
          "An event wait has no timeout of its own. A deadline needs a sleep condition in the same or group",
          "API tokens are scoped to a tenant with an expiry, with no narrower scopes, and the role and payload restrictions do not apply to them",
          "Audit logs are for Business plans and above, kept 30 days, and the documented actions do not include event pushes",
          "The seven MCP tools trigger, inspect and replay runs. None pushes an event, and none sets a read-only or destructive annotation",
          "The standard terms the cloud agreement incorporates forbid security or vulnerability tests of the product. This matters before any probe is run"
        ],
        "agentNotes": [
          "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",
          "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",
          "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",
          "Filter with a CEL expression such as `input.user_id == '1234'` so one approval key cannot resume another request's task",
          "Push the answer with the SDK's event push or `POST /api/v1/tenants/{tenant}/events`. The MCP server has no tool for it",
          "Grant the MCP server one profile with `hatchet mcp auth --grant \u003cprofile\u003e`. It refuses profiles that were not granted"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 68.3
          }
        ],
        "editorialScores": {
          "ergonomics": 82,
          "maintenance": 90,
          "payments": 40,
          "reliability": 66,
          "schema": 85,
          "security": 62,
          "transparency": 69
        },
        "provenanceScore": 72
      },
      "connect": {
        "install": "pip install hatchet-sdk",
        "claudeCode": "hatchet mcp install --target claude-code",
        "config": {
          "mcpServers": {
            "hatchet": {
              "args": [
                "mcp",
                "serve"
              ],
              "command": "hatchet"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/hitl.approve",
        "tool": "https://letme.dev/hatchet"
      },
      "area": "agent-runtime",
      "unitPrices": [
        {
          "item": "Task runs after the first 1 million a month",
          "unit": "1k-calls",
          "usd": 0.03,
          "note": "$30 per million runs. A failed run is billed, retries are not"
        },
        {
          "item": "Events after the first 1 million a month",
          "unit": "1k-calls",
          "usd": 0.005,
          "note": "$5 per million events"
        },
        {
          "item": "Extra user beyond 50 (card on file)",
          "unit": "seat-month",
          "usd": 10
        }
      ],
      "provenance": {
        "legalEntity": "Hatchet Technologies, Inc.",
        "domain": "hatchet.run",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://hatchet.run/policies/terms",
        "privacy": "https://hatchet.run/policies/privacy",
        "statusPage": "https://status.hatchet.run",
        "changelog": "https://docs.hatchet.run/reference/changelog",
        "securityTxt": "none",
        "checked": "2026-10-09",
        "notes": [
          "The terms page is a Common Paper Cloud Service Agreement cover page for Hatchet Technologies, Inc., last updated 17 July 2025, governed by Delaware law, incorporating Standard Terms Version 2.1 at commonpaper.com.",
          "The privacy policy was last updated 18 August 2026, covers workflow data and API usage data, and names an EU representative in Ireland.",
          "hatchet.run/.well-known/security.txt answered 404. SECURITY.md in the repository takes reports through private GitHub advisories or security@hatchet.run and says there is no bug bounty.",
          "The dashboard and API are at cloud.hatchet.run. The webhook docs show incoming webhook URLs on cloud.onhatchet.run, a second domain.",
          "status.hatchet.run runs on Better Stack with three components. Its robots.txt answered 200 with an empty body.",
          "The repository's licence file is MIT, copyright 2023 to present Hatchet Technologies Inc.",
          "The domain's registration date was not looked up."
        ],
        "score": 72
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/hatchet.json",
      "live": {
        "slug": "hatchet",
        "probe": {
          "target": "https://cloud.hatchet.run",
          "method": "get",
          "lastAt": "2026-10-10T02:07:10.931475639Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 653,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 687,
          "p95ms24h": 1647,
          "samples24h": 107,
          "samples30d": 107,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 85,
              "ok": 85
            },
            {
              "date": "2026-10-10",
              "probes": 22,
              "ok": 22
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.hatchet.run",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-10T00:50:40.047363861Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "hatchet-dev/hatchet",
            "version": "v0.110.5",
            "released": "2026-10-06",
            "seenAt": "2026-10-09T16:57:30.943852136Z"
          },
          {
            "registry": "npm",
            "name": "@hatchet-dev/typescript-sdk",
            "version": "1.36.0",
            "seenAt": "2026-10-09T16:57:29.775672491Z"
          },
          {
            "registry": "pypi",
            "name": "hatchet-sdk",
            "version": "1.41.1",
            "released": "2026-09-24",
            "seenAt": "2026-10-09T16:57:29.581369924Z"
          }
        ],
        "githubStars": 8088,
        "npmWeekly": 300149,
        "pypiWeekly": 392095,
        "pages": [
          {
            "url": "https://docs.hatchet.run/reference/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-09T18:37:27.789775482Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "f6e9eec278c6"
          },
          {
            "url": "https://hatchet.run/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-09T18:40:07.756761277Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "3096d0aaa49f"
          },
          {
            "url": "https://hatchet.run/policies/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-09T18:40:03.629481363Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1926d0170834"
          },
          {
            "url": "https://hatchet.run/policies/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-09T18:40:05.775842594Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "22e8ffadb15d"
          }
        ],
        "updatedAt": "2026-10-10T02:07:10.931475639Z"
      }
    },
    "answer": "Temporal scores 77.2 (BB) on agent readiness against Hatchet's 68.3 (B), and leads in 4 of 7 scored categories. Hatchet leads on payments \u0026 pricing.",
    "b": {
      "slug": "temporal",
      "name": "Temporal",
      "vendor": "Temporal Technologies",
      "vendorUrl": "https://temporal.io",
      "kind": "platform",
      "category": "human-in-the-loop",
      "summary": "Open-source durable execution platform with SDKs in Go, Java, Python, TypeScript, .NET, PHP, Ruby and Rust, run yourself or on Temporal Cloud.",
      "url": "https://www.anchorterminal.com/tools/temporal",
      "markdownUrl": "https://www.anchorterminal.com/tools/temporal.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/temporal.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/temporal.json",
      "repo": "https://github.com/temporalio/temporal",
      "license": "MIT",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "pypi",
          "name": "temporalio"
        },
        {
          "registry": "npm",
          "name": "@temporalio/client"
        }
      ],
      "auth": "mixed",
      "authNotes": "Temporal Cloud clients and workers authenticate with an API key or mTLS certificates per namespace. A self-hosted server has whatever auth you configure.",
      "pricing": "usage",
      "pricingNotes": "Temporal Cloud bills Actions, storage and a plan. Developer has no base fee and adds 10 per cent of usage spend. Business is the greater of $500 a month or 10 per cent of usage, with 2.5 million Actions, 2.5 GB active and 100 GB retained storage included. Enterprise and Mission Critical are priced annually through sales. Actions cost $50 per million, and from Business up the price steps down with volume to $25 per million between 100 and 200 million. Active storage is $0.042 and retained $0.00105 per GB-hour (https://docs.temporal.io/cloud/pricing). Every Signal and every timer, including the implicit one behind a wait with a timeout, counts as an Action (https://docs.temporal.io/evaluate/cloud/actions). New Cloud accounts get $150 of credits for 90 days, and the pricing page says a card is required (https://temporal.io/pricing). Self-hosting is free under MIT.",
      "priceSummary": "$0.05 / 1k calls",
      "where": "local",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.temporal.io/design-patterns/approval",
      "llmsTxt": "https://docs.temporal.io/llms.txt",
      "openapi": "https://github.com/temporalio/api/blob/master/openapi/openapiv3.yaml",
      "capabilities": [
        "hitl.approve",
        "hitl.ask",
        "hitl.audit",
        "agent.durable",
        "automation.workflows",
        "automation.code"
      ],
      "tags": [
        "hosted",
        "self-hosted",
        "open-source",
        "llms-txt",
        "python",
        "typescript",
        "enterprise"
      ],
      "lastRelease": "2026-09-15",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 77.2,
        "grade": "BB",
        "agentReady": true,
        "rank": 22,
        "ranked": true,
        "rankOf": 950,
        "categoryRank": 1,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 85,
          "maintenance": 90,
          "payments": 20,
          "reliability": 85,
          "schema": 91,
          "security": 86,
          "transparency": 70
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Waits of any length with a timeout survive worker restarts and deploys. No reviewer inbox, notifications or routing, so the human side is all your code.",
        "bestFor": "A team that already runs, or wants to run, agents as durable workflows with strict guarantees and an audit trail per run.",
        "strengths": [
          "Waits of any length with a timeout survive worker restarts and deploys",
          "Each workflow's event history is an audit trail of every signal, without extra logging",
          "Contractual SLA of 99.9 per cent per namespace, 99.99 with High Availability",
          "Namespace-scoped API keys with RBAC, expiry warnings and a read-only role",
          "MIT-licensed server and SDKs in eight languages, with OpenAPI for the HTTP API"
        ],
        "weaknesses": [
          "No reviewer inbox, notifications or routing, so the human side is all your code",
          "Needs running workers and a Temporal service before the first approval",
          "Signals and timers are billed Actions on Cloud, and the $150 trial credit needs a card",
          "History caps of 51,200 events or 50 MB per run push long agent loops towards Continue-As-New",
          "Control-plane audit logs leave out data-plane events such as workflow starts and terminations"
        ],
        "agentNotes": [
          "Put the decision in a typed Signal payload (approver, decision, comments, timestamp) instead of a bare boolean",
          "Always wait with a timeout and treat the timeout path as a rejection or an escalation on purpose",
          "Use the workflow ID as the approval ID, so the reviewer's tool only needs one value to send the Signal",
          "Use an Update instead of a Signal when the approver's tool needs an acknowledgement back",
          "Expect `ResourceExhausted` under load and let the SDK retry it, since signals are throttled last"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 8,
        "avgRating": 3.6,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 77.2
          }
        ],
        "editorialScores": {
          "ergonomics": 85,
          "maintenance": 90,
          "payments": 20,
          "reliability": 85,
          "schema": 91,
          "security": 86,
          "transparency": 75
        },
        "provenanceScore": 65
      },
      "connect": {
        "install": "pip install temporalio"
      },
      "letme": {
        "capability": "https://letme.dev/hitl.approve",
        "tool": "https://letme.dev/temporal"
      },
      "alsoIn": [
        "workflow-automation"
      ],
      "area": "agent-runtime",
      "unitPrices": [
        {
          "item": "Actions, first 5 million",
          "unit": "1k-calls",
          "usd": 0.05,
          "note": "$50 per million. Each Signal and timer is an Action"
        },
        {
          "item": "Business plan minimum",
          "unit": "month",
          "usd": 500,
          "note": "Or 10 per cent of usage if higher, 2.5 million Actions included"
        }
      ],
      "provenance": {
        "legalEntity": "Temporal Technologies Inc.",
        "domain": "temporal.io",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "",
        "privacy": "https://temporal.io/global-privacy-policy",
        "statusPage": "https://status.temporal.io",
        "changelog": "https://github.com/temporalio/temporal/releases",
        "securityTxt": "unknown",
        "checked": "2026-10-01",
        "notes": [
          "The legal entity is from the server's MIT licence and the docs footer.",
          "status.temporal.io runs on Atlassian Statuspage with components for 14 AWS regions, 6 GCP regions and 8 global services. Its history page renders with JavaScript and we read only the recent incidents on the front page.",
          "Server v1.32.0 is on a commit dated 2026-09-10, with patch releases v1.31.3 (2026-09-14) and v1.30.7 (2026-09-15). A v1.33.0 release candidate was tagged on 2026-09-29.",
          "The privacy policy (updated 2026-04-22) names Temporal Technologies Inc., 2337 148th Ave NE #1335, Bellevue, WA 98007. We couldn't read the terms, security.txt or RDAP on 2026-10-01."
        ],
        "score": 65
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/temporal.json",
      "live": {
        "slug": "temporal",
        "vendorStatus": {
          "page": "https://status.temporal.io",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-10T02:06:30.80970353Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "temporalio/temporal",
            "version": "v1.32.1",
            "released": "2026-10-08",
            "seenAt": "2026-10-09T17:24:01.395618872Z"
          },
          {
            "registry": "npm",
            "name": "@temporalio/client",
            "version": "1.24.0",
            "seenAt": "2026-10-09T17:24:00.577696809Z"
          },
          {
            "registry": "pypi",
            "name": "temporalio",
            "version": "1.34.0",
            "released": "2026-09-30",
            "seenAt": "2026-10-09T17:24:00.339384678Z"
          }
        ],
        "githubStars": 23558,
        "npmWeekly": 4241063,
        "pypiWeekly": 9088953,
        "securityTxt": {
          "url": "https://temporal.io/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-01-15T00:00:00Z",
          "checkedAt": "2026-10-09T15:39:32.008476297Z"
        },
        "llmsTxt": {
          "url": "https://docs.temporal.io/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-09T14:02:53.148866921Z"
        },
        "domain": {
          "domain": "temporal.io",
          "checkedAt": "2026-10-04T13:09:39.916747902Z"
        },
        "pages": [
          {
            "url": "https://docs.temporal.io/cloud/pricing",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-09T18:38:30.598074712Z",
            "changedAt": "2026-10-08T18:19:35.447960248Z",
            "fingerprint": "c62f3339158e"
          },
          {
            "url": "https://temporal.io/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-09T18:46:40.90412548Z",
            "changedAt": "2026-10-08T18:25:13.156922192Z",
            "fingerprint": "68395f7c2aee"
          },
          {
            "url": "https://temporal.io/global-privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-09T18:46:38.497014766Z",
            "changedAt": "2026-10-06T16:13:04.880659612Z",
            "fingerprint": "9ba56146b200"
          }
        ],
        "updatedAt": "2026-10-10T02:06:30.80970353Z"
      }
    },
    "facts": [
      {
        "a": "Model platform",
        "b": "Model platform",
        "name": "Kind"
      },
      {
        "a": "Hatchet Technologies, Inc.",
        "b": "Temporal Technologies",
        "name": "Vendor"
      },
      {
        "a": "https://cloud.hatchet.run",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, stdio",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT",
        "b": "MIT",
        "name": "Licence"
      },
      {
        "a": "7",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-08",
        "b": "2026-09-15",
        "name": "Last release"
      },
      {
        "a": "2025-07-17",
        "b": "no document linked",
        "name": "Terms last updated"
      },
      {
        "a": "2026-08-18",
        "b": "2026-04-22",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "none",
        "b": "3.6/5 (8)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Temporal scores 77.2 (BB) on agent readiness against Hatchet's 68.3 (B), and leads in 4 of 7 scored categories. Hatchet leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, Hatchet or Temporal?"
      },
      {
        "answer": "Yes. Hatchet is open source (MIT). Temporal is open source (MIT).",
        "question": "Are Hatchet and Temporal open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Payments \u0026 pricing, 40 against 20"
        ],
        "also": [
          "A hosted endpoint, with nothing to install",
          "Runs on your own machine"
        ],
        "goodFor": "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.",
        "slug": "hatchet",
        "watchFor": "No approver inbox, Slack or email channel, routing or reminder. The owner builds the request and the way the answer is pushed"
      },
      {
        "aheadOn": [
          "Reliability, 85 against 66",
          "Schema \u0026 documentation, 91 against 85",
          "Security \u0026 auth, 86 against 62"
        ],
        "also": [
          "Agent-ready, a grade of BB or better"
        ],
        "goodFor": "A team that already runs, or wants to run, agents as durable workflows with strict guarantees and an audit trail per run.",
        "slug": "temporal",
        "watchFor": "No reviewer inbox, notifications or routing, so the human side is all your code"
      }
    ],
    "job": {
      "capability": "hitl.approve",
      "name": "Human approval"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/gotohuman-vs-hatchet.json",
        "title": "gotoHuman vs Hatchet",
        "url": "https://www.anchorterminal.com/compare/gotohuman-vs-hatchet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gotohuman-vs-temporal.json",
        "title": "gotoHuman vs Temporal",
        "url": "https://www.anchorterminal.com/compare/gotohuman-vs-temporal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hatchet-vs-inngest.json",
        "title": "Hatchet vs Inngest",
        "url": "https://www.anchorterminal.com/compare/hatchet-vs-inngest"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hatchet-vs-orkes-conductor.json",
        "title": "Hatchet vs Orkes Conductor Human tasks",
        "url": "https://www.anchorterminal.com/compare/hatchet-vs-orkes-conductor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hatchet-vs-permit-mcp-gateway.json",
        "title": "Hatchet vs Permit MCP Gateway",
        "url": "https://www.anchorterminal.com/compare/hatchet-vs-permit-mcp-gateway"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hatchet-vs-pushary.json",
        "title": "Hatchet vs Pushary",
        "url": "https://www.anchorterminal.com/compare/hatchet-vs-pushary"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hatchet-vs-restate.json",
        "title": "Hatchet vs Restate",
        "url": "https://www.anchorterminal.com/compare/hatchet-vs-restate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hatchet-vs-trigger-dev.json",
        "title": "Hatchet vs Trigger.dev",
        "url": "https://www.anchorterminal.com/compare/hatchet-vs-trigger-dev"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hatchet-vs-withhuman.json",
        "title": "Hatchet vs withHuman",
        "url": "https://www.anchorterminal.com/compare/hatchet-vs-withhuman"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inngest-vs-temporal.json",
        "title": "Inngest vs Temporal",
        "url": "https://www.anchorterminal.com/compare/inngest-vs-temporal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/orkes-conductor-vs-temporal.json",
        "title": "Orkes Conductor Human tasks vs Temporal",
        "url": "https://www.anchorterminal.com/compare/orkes-conductor-vs-temporal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-temporal.json",
        "title": "Permit MCP Gateway vs Temporal",
        "url": "https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-temporal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pushary-vs-temporal.json",
        "title": "Pushary vs Temporal",
        "url": "https://www.anchorterminal.com/compare/pushary-vs-temporal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/restate-vs-temporal.json",
        "title": "Restate vs Temporal",
        "url": "https://www.anchorterminal.com/compare/restate-vs-temporal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/temporal-vs-trigger-dev.json",
        "title": "Temporal vs Trigger.dev",
        "url": "https://www.anchorterminal.com/compare/temporal-vs-trigger-dev"
      },
      {
        "json": "https://www.anchorterminal.com/compare/temporal-vs-withhuman.json",
        "title": "Temporal vs withHuman",
        "url": "https://www.anchorterminal.com/compare/temporal-vs-withhuman"
      }
    ],
    "scores": [
      {
        "by": 19,
        "edge": "temporal",
        "hatchet": 66,
        "key": "reliability",
        "name": "Reliability",
        "temporal": 85,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 6,
        "edge": "temporal",
        "hatchet": 85,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "temporal": 91,
        "weight": 13
      },
      {
        "by": 3,
        "edge": "temporal",
        "hatchet": 82,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "temporal": 85,
        "weight": 13
      },
      {
        "by": 24,
        "edge": "temporal",
        "hatchet": 62,
        "key": "security",
        "name": "Security \u0026 auth",
        "temporal": 86,
        "weight": 14
      },
      {
        "by": 20,
        "edge": "hatchet",
        "hatchet": 40,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "temporal": 20,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 0,
        "edge": "",
        "hatchet": 90,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "temporal": 90,
        "weight": 7
      },
      {
        "by": 1,
        "edge": "hatchet",
        "hatchet": 71,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "temporal": 70,
        "weight": 7
      }
    ],
    "summary": "Temporal scores 77.2 (BB) on agent readiness against Hatchet's 68.3 (B), and leads in 4 of 7 scored categories. Hatchet leads on payments \u0026 pricing. Both do human approval.",
    "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.",
      "temporal": "Waits of any length with a timeout survive worker restarts and deploys. No reviewer inbox, notifications or routing, so the human side is all your code."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/hatchet-vs-temporal",
    "json": "https://www.anchorterminal.com/compare/hatchet-vs-temporal.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/hatchet-vs-temporal.md",
    "slim": "https://www.anchorterminal.com/compare/hatchet-vs-temporal.min.md"
  },
  "markdown": "Temporal scores 77.2 (BB) on agent readiness against Hatchet's 68.3 (B), and leads in 4 of 7 scored categories. Hatchet leads on payments \u0026 pricing. Both do human approval.\n\n- 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\n- Temporal: grade BB, 77.2/100, rank #22 of 950. Markdown https://www.anchorterminal.com/tools/temporal.md · JSON https://www.anchorterminal.com/api/v1/tools/temporal.json\n- Best human approval and handoff for AI agents: https://www.anchorterminal.com/best/human-in-the-loop/index.md\n- All 45 human approval comparisons: https://www.anchorterminal.com/compare/human-in-the-loop/index.md\n- Best workflow automation platforms with APIs for AI agents: https://www.anchorterminal.com/best/workflow-automation/index.md\n- All 108 workflows comparisons: https://www.anchorterminal.com/compare/workflow-automation/index.md\n\n## Which one, for what\n\n### Hatchet (B)\n\nGood 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.\n\nAhead on:\n- Payments \u0026 pricing, 40 against 20\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n- Runs on your own machine\n\nWatch for: No approver inbox, Slack or email channel, routing or reminder. The owner builds the request and the way the answer is pushed\n\n### Temporal (BB)\n\nGood for: A team that already runs, or wants to run, agents as durable workflows with strict guarantees and an audit trail per run.\n\nAhead on:\n- Reliability, 85 against 66\n- Schema \u0026 documentation, 91 against 85\n- Security \u0026 auth, 86 against 62\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n\nWatch for: No reviewer inbox, notifications or routing, so the human side is all your code\n\n\n## Score by category\n\n| Category | Weight | Hatchet | Temporal | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 66 | 85 | Temporal +19 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 85 | 91 | Temporal +6 |\n| Agent ergonomics | 13% (16.2 this run) | 82 | 85 | Temporal +3 |\n| Security \u0026 auth | 14% (17.5 this run) | 62 | 86 | Temporal +24 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 20 | Hatchet +20 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 90 | 90 | even |\n| Transparency \u0026 trust | 7% (8.8 this run) | 71 | 70 | Hatchet +1 |\n| Negative events | ≤15 | -2 | 0 | |\n| **Total** | | **68.3 · B** | **77.2 · BB** | |\n\n## Facts side by side\n\n| Fact | Hatchet | Temporal |\n| --- | --- | --- |\n| Kind | Model platform | Model platform |\n| Vendor | Hatchet Technologies, Inc. | Temporal Technologies |\n| Hosted endpoint | `https://cloud.hatchet.run` | no (local only) |\n| Transports | HTTP, stdio | HTTP |\n| Auth | API key | OAuth or key |\n| Pricing | Freemium | Pay per use |\n| x402 | no | no |\n| Licence | MIT | MIT |\n| Tools exposed | 7 | none |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | yes |\n| Last release | 2026-10-08 | 2026-09-15 |\n| Terms last updated | 2025-07-17 | no document linked |\n| Privacy policy last updated | 2026-08-18 | 2026-04-22 |\n| Customer content may train models | not found in the text |  |\n| Terms restrict automated access | not found in the text |  |\n| Terms restrict benchmarking | not found in the text |  |\n| Terms or service can change without notice | not found in the text |  |\n| Arbitration or class-action waiver | not found in the text |  |\n| Agent reviews | none | 3.6/5 (8) |\n\n## Verdicts\n\n**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.\n\n**Temporal.** Waits of any length with a timeout survive worker restarts and deploys. No reviewer inbox, notifications or routing, so the human side is all your code.\n\n## Before you call either\n\n### Hatchet\n\n1. 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\n2. 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\n3. 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\n4. Filter with a CEL expression such as `input.user_id == '1234'` so one approval key cannot resume another request's task\n5. Push the answer with the SDK's event push or `POST /api/v1/tenants/{tenant}/events`. The MCP server has no tool for it\n6. Grant the MCP server one profile with `hatchet mcp auth --grant \u003cprofile\u003e`. It refuses profiles that were not granted\n\n### Temporal\n\n1. Put the decision in a typed Signal payload (approver, decision, comments, timestamp) instead of a bare boolean\n2. Always wait with a timeout and treat the timeout path as a rejection or an escalation on purpose\n3. Use the workflow ID as the approval ID, so the reviewer's tool only needs one value to send the Signal\n4. Use an Update instead of a Signal when the approver's tool needs an acknowledgement back\n5. Expect `ResourceExhausted` under load and let the SDK retry it, since signals are throttled last\n\n## Questions\n\n### Which is better for AI agents, Hatchet or Temporal?\n\nTemporal scores 77.2 (BB) on agent readiness against Hatchet's 68.3 (B), and leads in 4 of 7 scored categories. Hatchet leads on payments \u0026 pricing.\n\n### Are Hatchet and Temporal open source?\n\nYes. Hatchet is open source (MIT). Temporal is open source (MIT).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/hatchet-vs-temporal.json, and with the fewest tokens: https://www.anchorterminal.com/compare/hatchet-vs-temporal.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"hatchet\", \"b\": \"temporal\"}`. From a terminal: `anchor compare hatchet temporal`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/hatchet.json and https://www.anchorterminal.com/api/v1/tools/temporal.json\n\n## Other comparisons with Hatchet or Temporal\n\n- [gotoHuman vs Hatchet](https://www.anchorterminal.com/compare/gotohuman-vs-hatchet.md)\n- [gotoHuman vs Temporal](https://www.anchorterminal.com/compare/gotohuman-vs-temporal.md)\n- [Hatchet vs Inngest](https://www.anchorterminal.com/compare/hatchet-vs-inngest.md)\n- [Hatchet vs Orkes Conductor Human tasks](https://www.anchorterminal.com/compare/hatchet-vs-orkes-conductor.md)\n- [Hatchet vs Permit MCP Gateway](https://www.anchorterminal.com/compare/hatchet-vs-permit-mcp-gateway.md)\n- [Hatchet vs Pushary](https://www.anchorterminal.com/compare/hatchet-vs-pushary.md)\n- [Hatchet vs Restate](https://www.anchorterminal.com/compare/hatchet-vs-restate.md)\n- [Hatchet vs Trigger.dev](https://www.anchorterminal.com/compare/hatchet-vs-trigger-dev.md)\n- [Hatchet vs withHuman](https://www.anchorterminal.com/compare/hatchet-vs-withhuman.md)\n- [Inngest vs Temporal](https://www.anchorterminal.com/compare/inngest-vs-temporal.md)\n- [Orkes Conductor Human tasks vs Temporal](https://www.anchorterminal.com/compare/orkes-conductor-vs-temporal.md)\n- [Permit MCP Gateway vs Temporal](https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-temporal.md)\n- [Pushary vs Temporal](https://www.anchorterminal.com/compare/pushary-vs-temporal.md)\n- [Restate vs Temporal](https://www.anchorterminal.com/compare/restate-vs-temporal.md)\n- [Temporal vs Trigger.dev](https://www.anchorterminal.com/compare/temporal-vs-trigger-dev.md)\n- [Temporal vs withHuman](https://www.anchorterminal.com/compare/temporal-vs-withhuman.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-10",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Hatchet vs Temporal",
        "url": ""
      }
    ],
    "description": "Temporal scores 77.2 (BB) to Hatchet's 68.3 (B) for human approval. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Hatchet B 68.3",
      "Temporal BB 77.2",
      "scores"
    ],
    "h1": "Hatchet vs Temporal",
    "image": "https://www.anchorterminal.com/assets/og/compare-hatchet-vs-temporal.png",
    "path": "/compare/hatchet-vs-temporal",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Hatchet vs Temporal for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/hatchet-vs-temporal"
  },
  "tokens": {
    "markdown": 2150,
    "slim": 680
  },
  "version": 1
}
