{
  "data": {
    "a": {
      "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": 21,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 1,
        "methodology": "0.3",
        "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.",
        "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.3",
            "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-04T23:17:55.777518672Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "temporalio/temporal",
            "version": "v1.32.0",
            "released": "2026-09-11",
            "seenAt": "2026-10-04T16:41:45.737977886Z"
          },
          {
            "registry": "npm",
            "name": "@temporalio/client",
            "version": "1.24.0",
            "seenAt": "2026-10-04T16:41:44.913799491Z"
          },
          {
            "registry": "pypi",
            "name": "temporalio",
            "version": "1.34.0",
            "released": "2026-09-30",
            "seenAt": "2026-10-04T16:41:44.726624016Z"
          }
        ],
        "githubStars": 23462,
        "npmWeekly": 5211272,
        "pypiWeekly": 8895388,
        "securityTxt": {
          "url": "https://temporal.io/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-01-15T00:00:00Z",
          "checkedAt": "2026-10-04T15:15:43.220669153Z"
        },
        "llmsTxt": {
          "url": "https://docs.temporal.io/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:18:17.819947998Z"
        },
        "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-04T15:44:07.868726677Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "4977c222b082"
          },
          {
            "url": "https://temporal.io/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-04T15:48:27.02559255Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "afba575b2b42"
          },
          {
            "url": "https://temporal.io/global-privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-04T15:48:24.921177834Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "f55eba2b4fc3"
          }
        ],
        "updatedAt": "2026-10-04T23:17:55.777518672Z"
      }
    },
    "b": {
      "slug": "trigger-dev",
      "name": "Trigger.dev",
      "vendor": "Trigger.dev",
      "vendorUrl": "https://trigger.dev",
      "kind": "platform",
      "category": "human-in-the-loop",
      "summary": "Open-source background jobs and durable tasks in TypeScript.",
      "url": "https://www.anchorterminal.com/tools/trigger-dev",
      "markdownUrl": "https://www.anchorterminal.com/tools/trigger-dev.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/trigger-dev.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/trigger-dev.json",
      "repo": "https://github.com/triggerdotdev/trigger.dev",
      "license": "Apache-2.0",
      "transports": [
        "http",
        "stdio"
      ],
      "remoteUrl": "https://api.trigger.dev",
      "packages": [
        {
          "registry": "npm",
          "name": "@trigger.dev/sdk"
        },
        {
          "registry": "npm",
          "name": "trigger.dev"
        }
      ],
      "auth": "mixed",
      "authNotes": "Server-side calls use the environment secret key as a Bearer token. `wait.createToken()` also returns a `publicAccessToken` scoped to that one waitpoint, which a browser can use to complete it (the completion endpoint has CORS). The `token.url` callback is for server-to-server use and has no CORS headers. The MCP server runs locally through the CLI and uses its login profiles (`whoami`, `switch_profile`).",
      "pricing": "freemium",
      "pricingNotes": "Free $0 with $5 of usage a month, 20 concurrent runs, 5 team members and 1-day log retention. Hobby $10 a month with $10 of usage, 50 concurrent runs and 7-day logs. Pro $50 a month with $50 of usage, 200+ concurrent runs ($10 a month per extra 50), 25+ seats ($20 each) and 30-day logs. Enterprise is custom, with a SOC 2 report, SSO and RBAC. Compute is billed per second by machine, from $0.0000169 (Micro) and $0.0000338 (Small 1x, the default) to $0.00068 (Large 2x), plus $0.000025 per run ($0.25 per 10,000). Dev runs aren't charged, and waits over 5 seconds aren't billed (https://trigger.dev/pricing, https://trigger.dev/docs/how-to-reduce-your-spend). Self-hosting is free under Apache-2.0.",
      "priceSummary": "Freemium",
      "where": "both",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": 31,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://trigger.dev/docs/wait-for-token",
      "llmsTxt": "https://trigger.dev/docs/llms.txt",
      "openapi": "https://raw.githubusercontent.com/triggerdotdev/trigger.dev/main/docs/v3-openapi.yaml",
      "registryName": "io.github.triggerdotdev/trigger.dev",
      "capabilities": [
        "hitl.approve",
        "hitl.ask",
        "agent.durable",
        "automation.workflows",
        "automation.code"
      ],
      "tags": [
        "hosted",
        "self-hosted",
        "open-source",
        "freemium",
        "free-tier",
        "mcp",
        "openapi",
        "typescript",
        "webhooks"
      ],
      "lastRelease": "2026-10-01",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 74.8,
        "grade": "BB",
        "agentReady": true,
        "rank": 46,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 2,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 79,
          "maintenance": 90,
          "payments": 40,
          "reliability": 75,
          "schema": 91,
          "security": 73,
          "transparency": 74
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "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.",
        "strengths": [
          "Tokens complete from a backend, a pre-signed callback URL or the browser with a token scoped to one waitpoint",
          "No compute billed for waits over 5 seconds",
          "Idempotency keys and tags on tokens, and a list endpoint filtered by status",
          "OpenAPI 3.1 spec, llms.txt and a release on 2026-10-01",
          "Apache-2.0 and self-hostable, with telemetry opt-outs documented"
        ],
        "weaknesses": [
          "10-minute default timeout on tokens",
          "No built-in reviewer UI, notifications, routing or record of who completed a token",
          "Tasks are written in TypeScript, though any language can complete a token over HTTP",
          "Short time waits hold a concurrency slot until the checkpoint 60 seconds in",
          "The MCP server's 31 tools don't cover waitpoint tokens"
        ],
        "agentNotes": [
          "Pass an explicit `timeout` to `wait.createToken()` and handle `ok: false` as a timeout",
          "Use an idempotency key when creating the token so a retried step doesn't send the reviewer a second request",
          "Give the browser the `publicAccessToken`, never the secret key, and don't call `token.url` from client code",
          "Tag tokens with the user or task ID so pending approvals can be listed per reviewer",
          "Start the MCP server with `--readonly` when the agent only needs to inspect runs"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 8,
        "avgRating": 3.6,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 74.8
          }
        ],
        "editorialScores": {
          "ergonomics": 79,
          "maintenance": 90,
          "payments": 40,
          "reliability": 75,
          "schema": 91,
          "security": 73,
          "transparency": 73
        },
        "provenanceScore": 75
      },
      "connect": {
        "install": "npm install @trigger.dev/sdk",
        "http": "curl -X POST https://api.trigger.dev/api/v1/waitpoints/tokens -H \"Authorization: Bearer $TRIGGER_SECRET_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"timeout\":\"24h\",\"tags\":[\"approval:refund-1042\"]}'",
        "claudeCode": "claude mcp add trigger -- npx trigger.dev@latest mcp",
        "config": {
          "mcpServers": {
            "trigger": {
              "args": [
                "trigger.dev@latest",
                "mcp"
              ],
              "command": "npx"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/hitl.approve",
        "tool": "https://letme.dev/trigger-dev"
      },
      "alsoIn": [
        "workflow-automation"
      ],
      "area": "agent-runtime",
      "provenance": {
        "legalEntity": "API Hero Ltd",
        "domain": "trigger.dev",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://trigger.dev/legal",
        "privacy": "https://trigger.dev/legal/privacy",
        "statusPage": "https://status.trigger.dev",
        "changelog": "https://trigger.dev/changelog",
        "securityTxt": "unknown",
        "checked": "2026-10-01",
        "notes": [
          "status.trigger.dev runs on Better Stack, with global, per-region (us-east-1, eu-central-1, us-west-2) and SSO components.",
          "SECURITY.md takes reports through private GitHub advisories or security@trigger.dev.",
          "v4.7.0 was released on 2026-10-01 and v4.6.4 on 2026-09-22.",
          "The repository's server.json names io.github.triggerdotdev/trigger.dev at version 4.0.3. We couldn't query the registry.",
          "The privacy policy (updated 2025-12-23) names API Hero Ltd trading as Trigger.dev, Altrincham, United Kingdom, ICO registration ZB547039, and links a DPA at trigger.dev/legal/dpa. We couldn't read the live security.txt or RDAP on 2026-10-01."
        ],
        "score": 75
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/trigger-dev.json",
      "live": {
        "slug": "trigger-dev",
        "probe": {
          "target": "https://api.trigger.dev",
          "method": "get",
          "lastAt": "2026-10-04T23:17:18.875125057Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 435,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 440,
          "p95ms24h": 558,
          "samples24h": 272,
          "samples30d": 892,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 264,
              "ok": 264
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.trigger.dev",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-04T21:40:31.839911185Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "triggerdotdev/trigger.dev",
            "version": "v4.7.2",
            "released": "2026-10-02",
            "seenAt": "2026-10-04T16:42:15.858024116Z"
          },
          {
            "registry": "npm",
            "name": "@trigger.dev/sdk",
            "version": "4.7.2",
            "seenAt": "2026-10-04T16:42:13.646259814Z"
          },
          {
            "registry": "npm",
            "name": "trigger.dev",
            "version": "4.7.2",
            "seenAt": "2026-10-04T16:42:14.609508507Z"
          }
        ],
        "githubStars": 16466,
        "npmWeekly": 1281205,
        "securityTxt": {
          "url": "https://trigger.dev/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-09-01T00:00:00Z",
          "checkedAt": "2026-10-04T15:15:40.075165979Z"
        },
        "llmsTxt": {
          "url": "https://trigger.dev/docs/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:18:18.347440339Z"
        },
        "domain": {
          "domain": "trigger.dev",
          "registered": "2022-12-01",
          "source": "https://pubapi.registry.google/rdap/domain/trigger.dev",
          "checkedAt": "2026-10-04T13:03:37.236967627Z"
        },
        "pages": [
          {
            "url": "https://trigger.dev/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-04T15:48:31.0596486Z",
            "changedAt": "2026-10-03T15:36:27.564584064Z",
            "fingerprint": "803b8a76b025"
          },
          {
            "url": "https://trigger.dev/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-04T15:48:37.400389416Z",
            "changedAt": "2026-10-03T15:36:33.845714939Z",
            "fingerprint": "40bffe455cee"
          },
          {
            "url": "https://trigger.dev/legal/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-04T15:48:35.354788303Z",
            "changedAt": "2026-10-03T15:36:31.851078695Z",
            "fingerprint": "74a6e4e19e26"
          },
          {
            "url": "https://trigger.dev/legal",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-04T15:48:33.443165414Z",
            "changedAt": "2026-10-03T15:36:29.956580316Z",
            "fingerprint": "6b3e48482aff"
          }
        ],
        "updatedAt": "2026-10-04T23:17:18.875125057Z"
      }
    },
    "summary": "Temporal has a score of 77.2 (BB) against Trigger.dev's 74.8 (BB). Both do hitl approve. The largest gap is payments \u0026 pricing, 20 points."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/temporal-vs-trigger-dev",
    "json": "https://www.anchorterminal.com/compare/temporal-vs-trigger-dev.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/temporal-vs-trigger-dev.md",
    "slim": "https://www.anchorterminal.com/compare/temporal-vs-trigger-dev.min.md"
  },
  "markdown": "Temporal has a score of 77.2 (BB) against Trigger.dev's 74.8 (BB). Both do hitl approve. The largest gap is payments \u0026 pricing, 20 points.\n\n- Temporal: grade BB, 77.2/100, rank #21 of 452. Markdown https://www.anchorterminal.com/tools/temporal.md · JSON https://www.anchorterminal.com/api/v1/tools/temporal.json\n- Trigger.dev: grade BB, 74.8/100, rank #46 of 452. Markdown https://www.anchorterminal.com/tools/trigger-dev.md · JSON https://www.anchorterminal.com/api/v1/tools/trigger-dev.json\n\n## Which one, for what\n\nPick Temporal for reliability (+10), agent ergonomics (+6), security \u0026 auth (+13).\n\nPick Trigger.dev for payments \u0026 pricing (+20).\n\n## Score by category\n\n| Category | Weight | Temporal | Trigger.dev | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 85 | 75 | Temporal +10 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 91 | 91 | even |\n| Agent ergonomics | 13% (16.2 this run) | 85 | 79 | Temporal +6 |\n| Security \u0026 auth | 14% (17.5 this run) | 86 | 73 | Temporal +13 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 40 | Trigger.dev +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) | 70 | 74 | Trigger.dev +4 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **77.2 · BB** | **74.8 · BB** | |\n\n## Facts side by side\n\n| Fact | Temporal | Trigger.dev |\n| --- | --- | --- |\n| Kind | Model platform | Model platform |\n| Vendor | Temporal Technologies | Trigger.dev |\n| Hosted endpoint | no (local only) | `https://api.trigger.dev` |\n| Transports | HTTP | HTTP, stdio |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Pay per use | Freemium |\n| x402 | no | no |\n| Licence | MIT | Apache-2.0 |\n| Tools exposed | none | 31 |\n| Context cost (tools/list) | n/a | n/a |\n| p95 latency | not measured yet | not measured yet |\n| Availability (30d) | not measured yet | not measured yet |\n| Read-only variant documented | yes | no |\n| llms.txt | yes | yes |\n| MCP registry | not listed | `io.github.triggerdotdev/trigger.dev` |\n| Last release | 2026-09-15 | 2026-10-01 |\n| Popularity | none | none |\n| Agent reviews | 3.6/5 (8) | 3.6/5 (8) |\n\n## Verdicts\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**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.\n\n## Before you call either\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### Trigger.dev\n\n1. Pass an explicit `timeout` to `wait.createToken()` and handle `ok: false` as a timeout\n2. Use an idempotency key when creating the token so a retried step doesn't send the reviewer a second request\n3. Give the browser the `publicAccessToken`, never the secret key, and don't call `token.url` from client code\n4. Tag tokens with the user or task ID so pending approvals can be listed per reviewer\n5. Start the MCP server with `--readonly` when the agent only needs to inspect runs\n\n## Other comparisons with Temporal or Trigger.dev\n\n- [gotoHuman vs Temporal](https://www.anchorterminal.com/compare/gotohuman-vs-temporal.md)\n- [gotoHuman vs Trigger.dev](https://www.anchorterminal.com/compare/gotohuman-vs-trigger-dev.md)\n- [Inngest vs Temporal](https://www.anchorterminal.com/compare/inngest-vs-temporal.md)\n- [Inngest vs Trigger.dev](https://www.anchorterminal.com/compare/inngest-vs-trigger-dev.md)\n- [Orkes Conductor Human tasks vs Temporal](https://www.anchorterminal.com/compare/orkes-conductor-vs-temporal.md)\n- [Orkes Conductor Human tasks vs Trigger.dev](https://www.anchorterminal.com/compare/orkes-conductor-vs-trigger-dev.md)\n- [Permit MCP Gateway vs Temporal](https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-temporal.md)\n- [Permit MCP Gateway vs Trigger.dev](https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-trigger-dev.md)\n- [Pushary vs Temporal](https://www.anchorterminal.com/compare/pushary-vs-temporal.md)\n- [Pushary vs Trigger.dev](https://www.anchorterminal.com/compare/pushary-vs-trigger-dev.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "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": "Temporal vs Trigger.dev",
        "url": ""
      }
    ],
    "description": "Temporal has a score of 77.2 (BB) against Trigger.dev's 74.8 (BB). Both do hitl approve. The largest gap is payments \u0026 pricing, 20 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Temporal BB 77.2",
      "Trigger.dev BB 74.8",
      "scores"
    ],
    "h1": "Temporal vs Trigger.dev",
    "image": "https://www.anchorterminal.com/assets/og/compare-temporal-vs-trigger-dev.png",
    "path": "/compare/temporal-vs-trigger-dev",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Temporal vs Trigger.dev for AI agents, BB 77.2 vs BB 74.8",
    "toc": null,
    "updated": "2026-10-04",
    "url": "https://www.anchorterminal.com/compare/temporal-vs-trigger-dev"
  },
  "tokens": {
    "markdown": 1350,
    "slim": 330
  },
  "version": 1
}
