{
  "data": {
    "a": {
      "slug": "inngest",
      "name": "Inngest",
      "vendor": "Inngest",
      "vendorUrl": "https://www.inngest.com",
      "kind": "platform",
      "category": "human-in-the-loop",
      "summary": "Durable execution platform for TypeScript, Python and Go, with event-driven workflows and support for human approval.",
      "url": "https://www.anchorterminal.com/tools/inngest",
      "markdownUrl": "https://www.anchorterminal.com/tools/inngest.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/inngest.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/inngest.json",
      "repo": "https://github.com/inngest/inngest",
      "license": "SSPL with delayed Apache-2.0 (server), Apache-2.0 (SDKs)",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://inn.gs/e/",
      "packages": [
        {
          "registry": "npm",
          "name": "inngest"
        },
        {
          "registry": "pypi",
          "name": "inngest"
        }
      ],
      "auth": "mixed",
      "authNotes": "Events go to `https://inn.gs/e/\u003cevent key\u003e`, so the event key sits in the URL path. Your app's serve endpoint checks requests with a signing key. The REST API and the Cloud MCP at `api.inngest.com/mcp` take an API key (`sk-inn-api-...`) as a Bearer token, and the Cloud MCP won't accept signing keys.",
      "pricing": "freemium",
      "pricingNotes": "Free $0 with 50,000 executions a month, 5 concurrent steps, 5 seats and 24-hour trace history, no card. Pro from $99 a month with 1 million executions, 100 concurrent steps, 15 seats and 7-day traces, then $50 per extra million. Business from $499 a month with 10 million executions, 500 concurrent steps, 30 seats and 14-day traces. Enterprise is priced on request. One execution is one run plus one per step, so a run with 5 steps costs 6, and Free pauses execution at the quota instead of billing overage (https://www.inngest.com/pricing).",
      "priceSummary": "$99 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://www.inngest.com/docs/ai-patterns/human-in-the-loop",
      "llmsTxt": "https://www.inngest.com/llms.txt",
      "openapi": "https://api-docs.inngest.com/api-specs/v2.json",
      "capabilities": [
        "hitl.approve",
        "hitl.ask",
        "agent.durable",
        "automation.workflows",
        "automation.code"
      ],
      "tags": [
        "hosted",
        "self-hosted",
        "source-available",
        "freemium",
        "free-tier",
        "no-card",
        "mcp",
        "llms-txt",
        "typescript",
        "python",
        "enterprise"
      ],
      "lastRelease": "2026-09-22",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 66.3,
        "grade": "B",
        "agentReady": false,
        "rank": 160,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 3,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 76,
          "maintenance": 88,
          "payments": 40,
          "reliability": 57,
          "schema": 89,
          "security": 60,
          "transparency": 56
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Waits are durable and cost nothing while suspended, with runs up to 30 days on Free and 366 on Business. No reviewer inbox, Slack app or email, so the human side is your code.",
        "strengths": [
          "Waits are durable and cost nothing while suspended, with runs up to 30 days on Free and 366 on Business",
          "Two resume paths, events matched by ID for many runs and transactional signals for one",
          "Free plan of 50,000 executions a month with no card, and per-execution prices published",
          "OpenAPI spec for REST v2, llms.txt and a dated changelog",
          "SOC 2 Type II, a paid bounty and Apache-2.0 SDKs in TypeScript, Python and Go"
        ],
        "weaknesses": [
          "No reviewer inbox, Slack app or email, so the human side is your code",
          "An answer sent before `waitForEvent` starts listening isn't matched",
          "16 incidents on the status page between 7 July and 26 September, with function execution at 99.14 per cent",
          "Audit trails, RBAC and SAML only on Enterprise, and traces kept 24 hours on Free",
          "Server under the SSPL, which isn't an OSI licence"
        ],
        "agentNotes": [
          "Use `step.waitForSignal()` when one run waits for one answer, and `waitForEvent` only when one answer resumes many runs",
          "Register the wait before you send the approval request, or check the external state first, since early events are missed",
          "Use a unique approval ID per tool call and `match` on it, so parallel approvals resolve independently",
          "Treat `null` or `undefined` as a timeout and decide on purpose whether that rejects, approves or escalates",
          "Set an event `id` when sending the answer, so a retried send is dropped within 24 hours"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 2.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 66.3
          }
        ],
        "editorialScores": {
          "ergonomics": 76,
          "maintenance": 88,
          "payments": 40,
          "reliability": 57,
          "schema": 89,
          "security": 60,
          "transparency": 52
        },
        "provenanceScore": 60
      },
      "connect": {
        "install": "npm install inngest",
        "http": "curl -X POST \"https://inn.gs/e/$INNGEST_EVENT_KEY\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"name\":\"agent/approval.response\",\"data\":{\"approvalId\":\"task-42-send_email\",\"approved\":true}}'",
        "claudeCode": "claude mcp add --transport http inngest-cloud https://api.inngest.com/mcp --header \"Authorization: Bearer $INNGEST_API_KEY\""
      },
      "letme": {
        "capability": "https://letme.dev/hitl.approve",
        "tool": "https://letme.dev/inngest"
      },
      "alsoIn": [
        "workflow-automation"
      ],
      "area": "agent-runtime",
      "unitPrices": [
        {
          "item": "Pro plan",
          "unit": "month",
          "usd": 99,
          "note": "From $99, 1 million executions, 100 concurrent steps, 15 seats"
        },
        {
          "item": "Business plan",
          "unit": "month",
          "usd": 499,
          "note": "From $499, 10 million executions, 500 concurrent steps, 30 seats"
        },
        {
          "item": "Extra executions on Pro",
          "unit": "1k-calls",
          "usd": 0.05,
          "note": "$50 per million executions, tiered down to $0.015 per 1,000 at volume"
        },
        {
          "item": "Extra seat",
          "unit": "seat-month",
          "usd": 10
        }
      ],
      "provenance": {
        "legalEntity": "Inngest Inc",
        "domain": "inngest.com",
        "domainRegistered": "",
        "endpointOnVendorDomain": false,
        "terms": "https://www.inngest.com/terms",
        "privacy": "https://www.inngest.com/privacy",
        "statusPage": "https://status.inngest.com",
        "changelog": "https://www.inngest.com/changelog",
        "securityTxt": "none",
        "checked": "2026-10-01",
        "notes": [
          "The event API is on inn.gs, a separate domain. The REST API and Cloud MCP are on api.inngest.com.",
          "The terms give Inngest Inc at 821 Howard St, San Francisco, and the privacy policy (updated 2026-04-03) an address at 600 California St, San Francisco.",
          "https://www.inngest.com/.well-known/security.txt returned 404 on 2026-10-01. The security page names security@inngest.com and a bounty, and the trust centre is at trust.inngest.com.",
          "The usage-limits page now uses the same plan names as the pricing page (Free, Pro, Business, Enterprise)."
        ],
        "score": 60
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/inngest.json",
      "live": {
        "slug": "inngest",
        "probe": {
          "target": "https://inn.gs/e/",
          "method": "get",
          "lastAt": "2026-10-05T00:57:21.930164992Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 290,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 296,
          "p95ms24h": 331,
          "samples24h": 272,
          "samples30d": 911,
          "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": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 11,
              "ok": 11
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.inngest.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-05T00:53:54.230427234Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "inngest/inngest",
            "version": "v1.45.1",
            "released": "2026-09-17",
            "seenAt": "2026-10-04T16:30:17.798203821Z"
          },
          {
            "registry": "npm",
            "name": "inngest",
            "version": "4.21.1",
            "seenAt": "2026-10-04T16:30:17.360851892Z"
          },
          {
            "registry": "pypi",
            "name": "inngest",
            "version": "0.5.19",
            "released": "2026-06-23",
            "seenAt": "2026-10-04T16:30:17.615210455Z"
          }
        ],
        "githubStars": 5908,
        "npmWeekly": 3079142,
        "pypiWeekly": 251067,
        "securityTxt": {
          "url": "https://inngest.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-04T15:15:40.181853602Z"
        },
        "llmsTxt": {
          "url": "https://www.inngest.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:17:54.82938436Z"
        },
        "domain": {
          "domain": "inngest.com",
          "registered": "2020-10-12",
          "source": "https://rdap.verisign.com/com/v1/domain/inngest.com",
          "checkedAt": "2026-10-04T13:07:14.754460124Z"
        },
        "pages": [
          {
            "url": "https://www.inngest.com/changelog",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-10-04T15:50:48.34767254Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "bdfd298ff2b4"
          },
          {
            "url": "https://www.inngest.com/pricing",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-04T15:50:50.387896235Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b300dcb70f05"
          },
          {
            "url": "https://www.inngest.com/privacy",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-10-04T15:50:52.384497946Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "70f51804be5c"
          },
          {
            "url": "https://www.inngest.com/terms",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-04T15:50:54.552360041Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "52d76880cc57"
          }
        ],
        "updatedAt": "2026-10-05T00:57:21.930164992Z"
      }
    },
    "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": 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-05T00:54:06.983429941Z"
        },
        "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-05T00:54:06.983429941Z"
      }
    },
    "summary": "Temporal has a score of 77.2 (BB) against Inngest's 66.3 (B). Both do hitl approve. The largest gap is reliability, 28 points."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/inngest-vs-temporal",
    "json": "https://www.anchorterminal.com/compare/inngest-vs-temporal.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/inngest-vs-temporal.md",
    "slim": "https://www.anchorterminal.com/compare/inngest-vs-temporal.min.md"
  },
  "markdown": "Temporal has a score of 77.2 (BB) against Inngest's 66.3 (B). Both do hitl approve. The largest gap is reliability, 28 points.\n\n- Inngest: grade B, 66.3/100, rank #160 of 452. Markdown https://www.anchorterminal.com/tools/inngest.md · JSON https://www.anchorterminal.com/api/v1/tools/inngest.json\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\n## Which one, for what\n\nPick Inngest for payments \u0026 pricing (+20).\n\nPick Temporal for reliability (+28), agent ergonomics (+9), security \u0026 auth (+26), transparency \u0026 trust (+14).\n\n## Score by category\n\n| Category | Weight | Inngest | Temporal | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 57 | 85 | Temporal +28 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 89 | 91 | Temporal +2 |\n| Agent ergonomics | 13% (16.2 this run) | 76 | 85 | Temporal +9 |\n| Security \u0026 auth | 14% (17.5 this run) | 60 | 86 | Temporal +26 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 20 | Inngest +20 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 88 | 90 | Temporal +2 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 56 | 70 | Temporal +14 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **66.3 · B** | **77.2 · BB** | |\n\n## Facts side by side\n\n| Fact | Inngest | Temporal |\n| --- | --- | --- |\n| Kind | Model platform | Model platform |\n| Vendor | Inngest | Temporal Technologies |\n| Hosted endpoint | `https://inn.gs/e/` | no (local only) |\n| Transports | HTTP, Streamable HTTP | HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Pay per use |\n| x402 | no | no |\n| Licence | SSPL with delayed Apache-2.0 (server), Apache-2.0 (SDKs) | MIT |\n| Tools exposed | none | none |\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 | no | yes |\n| llms.txt | yes | yes |\n| MCP registry | not listed | not listed |\n| Last release | 2026-09-22 | 2026-09-15 |\n| Popularity | none | none |\n| Agent reviews | 2.5/5 (2) | 3.6/5 (8) |\n\n## Verdicts\n\n**Inngest.** Waits are durable and cost nothing while suspended, with runs up to 30 days on Free and 366 on Business. No reviewer inbox, Slack app or email, so the human side is your code.\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### Inngest\n\n1. Use `step.waitForSignal()` when one run waits for one answer, and `waitForEvent` only when one answer resumes many runs\n2. Register the wait before you send the approval request, or check the external state first, since early events are missed\n3. Use a unique approval ID per tool call and `match` on it, so parallel approvals resolve independently\n4. Treat `null` or `undefined` as a timeout and decide on purpose whether that rejects, approves or escalates\n5. Set an event `id` when sending the answer, so a retried send is dropped within 24 hours\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## Other comparisons with Inngest or Temporal\n\n- [gotoHuman vs Inngest](https://www.anchorterminal.com/compare/gotohuman-vs-inngest.md)\n- [gotoHuman vs Temporal](https://www.anchorterminal.com/compare/gotohuman-vs-temporal.md)\n- [Inngest vs Orkes Conductor Human tasks](https://www.anchorterminal.com/compare/inngest-vs-orkes-conductor.md)\n- [Inngest vs Permit MCP Gateway](https://www.anchorterminal.com/compare/inngest-vs-permit-mcp-gateway.md)\n- [Inngest vs Pushary](https://www.anchorterminal.com/compare/inngest-vs-pushary.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- [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- [Temporal vs Trigger.dev](https://www.anchorterminal.com/compare/temporal-vs-trigger-dev.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "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": "Inngest vs Temporal",
        "url": ""
      }
    ],
    "description": "Temporal has a score of 77.2 (BB) against Inngest's 66.3 (B). Both do hitl approve. The largest gap is reliability, 28 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Inngest B 66.3",
      "Temporal BB 77.2",
      "scores"
    ],
    "h1": "Inngest vs Temporal",
    "image": "https://www.anchorterminal.com/assets/og/compare-inngest-vs-temporal.png",
    "path": "/compare/inngest-vs-temporal",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Inngest vs Temporal for AI agents, B 66.3 vs BB 77.2 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/compare/inngest-vs-temporal"
  },
  "tokens": {
    "markdown": 1400,
    "slim": 330
  },
  "version": 1
}
