{
  "data": {
    "a": {
      "slug": "restate",
      "name": "Restate",
      "vendor": "Restate GmbH",
      "vendorUrl": "https://restate.dev",
      "kind": "platform",
      "category": "human-in-the-loop",
      "summary": "Durable execution runtime from Restate GmbH in Berlin, run as Restate Cloud, in the customer's own cloud account or self-hosted. Handlers pause on durable promises (awakeables and signals) and resume when a person answers over HTTP.",
      "url": "https://www.anchorterminal.com/tools/restate",
      "markdownUrl": "https://www.anchorterminal.com/tools/restate.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/restate.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/restate.json",
      "repo": "https://github.com/restatedev/restate",
      "license": "BSL 1.1 converting to Apache-2.0 four years after release (server), MIT (SDKs)",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "npm",
          "name": "@restatedev/restate-sdk"
        },
        {
          "registry": "pypi",
          "name": "restate-sdk"
        },
        {
          "registry": "npm",
          "name": "@restatedev/restate-sdk-clients"
        }
      ],
      "auth": "api-key",
      "authNotes": "Restate Cloud takes an API key (`key_...`) as a Bearer token on each environment's ingress at `https://\u003cenv_id\u003e.env.\u003cregion\u003e.restate.cloud:8080` and its Admin API on port 9070. Keys are created self-serve in the Developers tab of the Cloud UI with a role (the docs show Full and Admin). Access is self-serve after a browser signup, with no review. A self-hosted server has no authentication on its ingress or admin ports, and the docs expect a reverse proxy in front (https://docs.restate.dev/cloud/getting-started, https://docs.restate.dev/server/security).",
      "pricing": "freemium",
      "pricingNotes": "Free $0 with 100,000 durable actions a month, 1 GB of storage and 1-day history, no card, so an agent's owner can start without a contract. Starter $75 a month with 5 million actions, Business $300 with 20 million, Premium $1,000 with 50 million, Enterprise on request. Extra actions cost $25 per million on Starter and Business and $15 on Premium. One action is an invocation, a completion, a step, a sleep, a call or an awakeable, counted per started 64 KiB. Self-hosting is free under BSL 1.1 (https://restate.dev/pricing).",
      "priceSummary": "$75 / mo",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs or on the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 4530,
        "npmWeekly": 329023,
        "pypiWeekly": 76080,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://docs.restate.dev/ai/patterns/human-in-the-loop",
      "llmsTxt": "https://docs.restate.dev/llms.txt",
      "openapi": "https://docs.restate.dev/schemas/openapi-admin.json",
      "capabilities": [
        "hitl.approve",
        "hitl.ask",
        "agent.durable",
        "automation.workflows",
        "automation.code"
      ],
      "tags": [
        "hosted",
        "self-hosted",
        "source-available",
        "freemium",
        "free-tier",
        "no-card",
        "llms-txt",
        "openapi",
        "typescript",
        "python",
        "java",
        "go",
        "rust",
        "status-page"
      ],
      "lastRelease": "2026-10-01",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 73.3,
        "grade": "BB",
        "agentReady": true,
        "rank": 78,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 3,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 81,
          "maintenance": 92,
          "payments": 40,
          "reliability": 91,
          "schema": 85,
          "security": 61,
          "transparency": 50
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "An awakeable pauses a handler at no compute cost and resumes it from one HTTP request, with a durable timeout, on a free plan of 100,000 actions a month. Restate sends nothing to the approver, so the Slack message, email or inbox is the builder's code, and the published terms and privacy statement predate the paid plans.",
        "bestFor": "A team that already writes agent steps as durable handlers and wants a long, cheap wait for a human answer in TypeScript, Python, Java, Go or Rust, with the option to self-host.",
        "strengths": [
          "One HTTP request resolves or rejects an awakeable, and the waiting handler resumes after restarts or redeployment",
          "`orTimeout` puts a durable timer on the wait, so the remaining time survives a crash",
          "Free plan of 100,000 actions a month with no card, and $25 per extra million actions on Starter and Business",
          "Cloud Environments shows 100 per cent on the status page for the 90 days to 8 October 2026",
          "MIT SDKs for TypeScript, Python, Java and Kotlin, Go and Rust, with llms.txt and Markdown copies of every docs page"
        ],
        "weaknesses": [
          "No reviewer inbox, Slack app or email. The approval request and the reply endpoint are the builder's code",
          "Signals can't be resolved over HTTP yet, only from another handler (open issue of 5 October 2026)",
          "Self-hosted ingress and admin ports have no authentication, so the awakeable ID alone resolves a wait there",
          "The terms say Restate Cloud is free of charge and the privacy statement of 23 February 2022 covers only the website",
          "Server under BSL 1.1, which isn't an OSI licence, with no security.txt or SECURITY.md found"
        ],
        "agentNotes": [
          "Create the awakeable, send its ID inside `ctx.run`, then await the promise, so a retry doesn't send a second approval request",
          "Resolve with `POST /restate/awakeables/\u003cid\u003e/resolve` and a JSON body, or `/reject` with a text reason, which throws a terminal error in the handler",
          "On Restate Cloud send `Authorization: Bearer key_...` to `https://\u003cenv_id\u003e.env.\u003cregion\u003e.restate.cloud:8080`. On a self-hosted server put an authenticating proxy in front of port 8080",
          "Wrap the wait in `orTimeout` and decide what a timeout means. Without it the handler waits with no limit",
          "Retry ingress errors only on 408, 425, 429 or 5xx, and only when `x-restate-error-source` isn't `invocation`"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 73.3
          }
        ],
        "editorialScores": {
          "ergonomics": 81,
          "maintenance": 92,
          "payments": 40,
          "reliability": 91,
          "schema": 85,
          "security": 61,
          "transparency": 46
        },
        "provenanceScore": 54
      },
      "connect": {
        "install": "npm install --global @restatedev/restate-server@latest @restatedev/restate@latest",
        "http": "curl localhost:8080/restate/awakeables/sign_1M28aqY6ZfuwBmRnmyP/resolve --json 'true'",
        "claudeCode": "claude mcp add --transport http restate-docs https://docs.restate.dev/mcp"
      },
      "letme": {
        "capability": "https://letme.dev/hitl.approve",
        "tool": "https://letme.dev/restate"
      },
      "area": "agent-runtime",
      "unitPrices": [
        {
          "item": "Starter plan",
          "unit": "month",
          "usd": 75,
          "note": "5 million actions, 50 actions a second, 5 GB, 3-day history"
        },
        {
          "item": "Business plan",
          "unit": "month",
          "usd": 300,
          "note": "20 million actions, 200 actions a second, 20 GB, 7-day history"
        },
        {
          "item": "Premium plan",
          "unit": "month",
          "usd": 1000,
          "note": "50 million actions, 500 actions a second, 50 GB, 30-day history"
        },
        {
          "item": "Extra durable actions on Starter and Business",
          "unit": "1k-calls",
          "usd": 0.025,
          "note": "$25 per million actions, $15 per million on Premium"
        },
        {
          "item": "Extra virtual object storage",
          "unit": "gb-month",
          "usd": 0.5
        }
      ],
      "provenance": {
        "legalEntity": "Restate GmbH",
        "domain": "restate.dev",
        "domainRegistered": "2022-02-11",
        "endpointOnVendorDomain": false,
        "terms": "https://restate.dev/terms-and-conditions",
        "privacy": "",
        "statusPage": "https://status.restate.dev",
        "changelog": "https://docs.restate.dev/changelog/server",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The imprint names Restate GmbH, Knaackstr. 92, 10435 Berlin, Amtsgericht Charlottenburg HRB 240580 B. The server licence names Restate Software, Inc. and Restate GmbH as licensors.",
          "The general terms and conditions cover Restate Cloud by name, under German law with Berlin as the place of jurisdiction, and say its use is free of charge, which the pricing page no longer matches.",
          "No privacy field. The privacy statement at https://restate.dev/privacy is dated 23 February 2022 and covers the website, the newsletter and early code access, not customer data in Restate Cloud, and no other privacy policy was found.",
          "Restate Cloud environments answer at \u003cenv_id\u003e.env.\u003cregion\u003e.restate.cloud, a different domain from restate.dev.",
          "https://restate.dev/.well-known/security.txt returned 404 on 2026-10-08. The trust centre at trust.restate.dev is hosted by Vanta and didn't load in our reader.",
          "RDAP gives 2022-02-11 as the registration date of restate.dev."
        ],
        "score": 54
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/restate.json",
      "live": {
        "slug": "restate",
        "vendorStatus": {
          "page": "https://status.restate.dev",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T22:39:39.424946293Z"
        },
        "pages": [
          {
            "url": "https://docs.restate.dev/changelog/server",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:19:19.75301134Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1213cece2209"
          },
          {
            "url": "https://restate.dev/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-08T18:23:44.722910015Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6eb8d04dcfe6"
          },
          {
            "url": "https://restate.dev/terms-and-conditions",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:23:46.891274553Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "32e2a89f3bf3"
          }
        ],
        "updatedAt": "2026-10-08T22:39:39.424946293Z"
      }
    },
    "answer": "Restate scores 73.3 (BB) on agent readiness against withHuman's 51.8 (D), and leads in 5 of 7 scored categories. withHuman leads on security \u0026 auth.",
    "b": {
      "slug": "withhuman",
      "name": "withHuman",
      "vendor": "Metoro Inc",
      "vendorUrl": "https://withhuman.ai",
      "kind": "http-api",
      "category": "human-in-the-loop",
      "summary": "withHuman is a hosted approval service for AI agents from Metoro Inc. It holds an agent's tool calls for a person to approve or deny through the Agent Approval Protocol API, coding-agent hooks, an MCP gateway and an MCP server.",
      "url": "https://www.anchorterminal.com/tools/withhuman",
      "markdownUrl": "https://www.anchorterminal.com/tools/withhuman.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/withhuman.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/withhuman.json",
      "license": "Proprietary hosted service under Metoro Inc's terms. The site describes an open-source edition, but the repository it links to returned 404 on 8 October 2026",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://app.withhuman.ai",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Five credentials, all sent as `Authorization: Bearer`. An agent credential (`whc_`) is bound to one agent instance and can only create approval requests and wait for decisions. A provisioner token (`whp_`) can only create and manage instances of its agent. A personal API key (`whk_`) follows its owner's permissions, can be narrowed to chosen actions and expires after 90 days by default. An organisation API key (`who_`, Scale plan and above) carries its own permission policies and cannot decide requests. The MCP server at `/api/mcp/v1` signs in with OAuth (authorisation code with PKCE and dynamic client registration) or takes an API key as a bearer token. A person signs up in the browser and connects the first agent.",
      "pricing": "freemium",
      "pricingNotes": "Free hosted plan at $0 for up to 5 members, with unlimited agents and approval requests, email, Slack and Discord, the audit log and the MCP gateway. Scale is $20 per user a month and adds the phone apps, organisation and scoped API keys, single sign-on and directory sync. Enterprise is a custom annual contract. New organisations start on a trial and move to Free without a subscription. Monthly allowances for gateway tool calls and phone messages exist but their numbers aren't on the pricing page (https://withhuman.ai/pricing, checked 2026-10-08).",
      "priceSummary": "$20 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, the OpenAPI document or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://withhuman.ai/docs",
      "llmsTxt": "https://withhuman.ai/llms.txt",
      "openapi": "https://withhuman.ai/openapi.yaml",
      "capabilities": [
        "hitl.approve",
        "hitl.channels",
        "hitl.audit"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "mcp",
        "oauth",
        "openapi",
        "llms-txt",
        "webhooks",
        "enterprise",
        "early-access"
      ],
      "lastRelease": "2026-10-08",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 51.8,
        "grade": "D",
        "agentReady": false,
        "rank": 573,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 7,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 74,
          "maintenance": 49,
          "payments": 30,
          "reliability": 16,
          "schema": 81,
          "security": 73,
          "transparency": 53
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": -2,
        "negativeNotes": [
          "8 October 2026. The home page and pricing page describe an open-source, self-hostable edition and link https://github.com/withHumanAI/withHuman, which returned 404. The withHumanAI organisation listed no public repositories and the protocol repository https://github.com/agentapprovalprotocol/agentapprovalprotocol also returned 404. Counted as a claim the public cannot verify today (-2). Sources https://withhuman.ai/pricing and https://github.com/withHumanAI"
        ],
        "verdict": "The approval API is small and carefully specified, with a public OpenAPI 3.1 document, mandatory idempotency keys and agent credentials that can never approve. The service is in early access under its own terms, with no status page, published rate limits or changelog, and the open-source repository the site links to returned 404 on 8 October 2026.",
        "bestFor": "Teams that want tool calls from coding agents or their own agents held for approval by rules, with escalation and an audit log, and no review UI to build.",
        "strengths": [
          "Public OpenAPI 3.1 document with 116 operations and 148 schemas, plus llms.txt and a Markdown copy of every docs page",
          "`Idempotency-Key` is required on request creation, instance creation and decisions, and a reused key with changed input answers 409",
          "An agent credential can only create requests and wait for decisions. Approving or denying needs a signed-in person or a personal key",
          "The MCP server signs in with OAuth, PKCE and dynamic client registration, across 35 scopes, with access lasting 90 days or until revoked",
          "Free hosted plan at $0 for up to 5 members with unlimited agents and approval requests, per the pricing page"
        ],
        "weaknesses": [
          "The terms say the service is in early access, and the API document is version 0.1.0",
          "No status page, published request rate limits, SLA outside an enterprise contract, or changelog found",
          "The GitHub repository the site links as its open-source edition returned 404 on 8 October 2026, and the organisation lists no public repositories",
          "No SDK found on npm or PyPI. Integration is the HTTP API, the CLI hooks or the MCP gateway",
          "The site footer says SOC 2 Type II with no report, auditor or trust page, and neither host serves a security.txt"
        ],
        "agentNotes": [
          "Send an `Idempotency-Key` header on `POST /api/aap/v1/requests`. The call answers 400 without one",
          "Read the decision with `GET /api/aap/v1/requests/{id}?wait=30s` and repeat while `status` is `pending`. `wait` is capped at 30 seconds",
          "Set `timeout` between one second and seven days, and treat `expired` and `cancelled` as a refusal",
          "Start an approved call within five minutes of `decided_at`, because the decision carries an `expires_at`",
          "Cancel a request when you stop waiting, so reviewers stop seeing it"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 51.8
          }
        ],
        "editorialScores": {
          "ergonomics": 74,
          "maintenance": 49,
          "payments": 30,
          "reliability": 16,
          "schema": 81,
          "security": 73,
          "transparency": 52
        },
        "provenanceScore": 53
      },
      "connect": {
        "install": "curl -fsSL https://downloads.withhuman.ai/install.sh | sh -s -- onboard",
        "http": "curl -X POST \"https://app.withhuman.ai/api/aap/v1/requests\" \\\n  -H \"Authorization: Bearer $WITHHUMAN_TOKEN\" \\\n  -H \"Idempotency-Key: 4f1c9a2e-7b3d-4e8f-a1c5-2d6b8e0f9a31\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{ \"tool\": \"Bash\", \"arguments\": { \"command\": \"rm -rf build\" }, \"timeout\": \"30m\" }'",
        "claudeCode": "claude mcp add --transport http --scope user withhuman https://app.withhuman.ai/api/mcp/v1",
        "config": {
          "mcpServers": {
            "withhuman": {
              "url": "https://app.withhuman.ai/api/mcp/v1"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/hitl.approve",
        "tool": "https://letme.dev/withhuman"
      },
      "area": "agent-runtime",
      "unitPrices": [
        {
          "item": "Scale plan",
          "unit": "seat-month",
          "usd": 20,
          "note": "Free plan covers up to 5 members"
        }
      ],
      "provenance": {
        "legalEntity": "Metoro Inc",
        "domain": "withhuman.ai",
        "domainRegistered": "2026-07-13",
        "endpointOnVendorDomain": true,
        "terms": "https://withhuman.ai/terms",
        "privacy": "https://withhuman.ai/privacy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The terms (effective 4 September 2026) are between the user and Metoro Inc, which operates withHuman, and cover the hosted service, the iPhone app and the website. Delaware law governs.",
          "The privacy policy (effective 4 September 2026) calls Metoro Inc a Delaware corporation and covers approval requests, decisions and audit records as well as the website.",
          "RDAP for withhuman.ai gives a registration date of 2026-07-13.",
          "https://withhuman.ai/.well-known/security.txt and https://app.withhuman.ai/.well-known/security.txt both returned 404 on 2026-10-08.",
          "No status page is linked from the site, the docs or the support page, and status.withhuman.ai did not connect. No changelog was found, and the blog says coming soon.",
          "The API and the MCP server answer at app.withhuman.ai, and the CLI downloads from downloads.withhuman.ai."
        ],
        "score": 53
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/withhuman.json",
      "live": {
        "slug": "withhuman",
        "probe": {
          "target": "https://app.withhuman.ai",
          "method": "get",
          "lastAt": "2026-10-08T22:40:03.430193927Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 141,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 163,
          "p95ms24h": 258,
          "samples24h": 36,
          "samples30d": 36,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 36,
              "ok": 36
            }
          ]
        },
        "updatedAt": "2026-10-08T22:40:03.430193927Z"
      }
    },
    "facts": [
      {
        "a": "Model platform",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Restate GmbH",
        "b": "Metoro Inc",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "https://app.withhuman.ai",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "BSL 1.1 converting to Apache-2.0 four years after release (server), MIT (SDKs)",
        "b": "Proprietary hosted service under Metoro Inc's terms. The site describes an open-source edition, but the repository it links to returned 404 on 8 October 2026",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-01",
        "b": "2026-10-08",
        "name": "Last release"
      },
      {
        "a": "couldn't be read",
        "b": "2026-09-04",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "2026-09-04",
        "name": "Privacy policy last updated"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "4.5k stars, 329k npm/wk, 76k PyPI/wk",
        "b": "none",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Restate scores 73.3 (BB) on agent readiness against withHuman's 51.8 (D), and leads in 5 of 7 scored categories. withHuman leads on security \u0026 auth.",
        "question": "Which is better for AI agents, Restate or withHuman?"
      },
      {
        "answer": "No hosted endpoint is listed for Restate. withHuman has a hosted endpoint at https://app.withhuman.ai.",
        "question": "Can an agent call Restate and withHuman without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 91 against 16",
          "Agent ergonomics, 81 against 74",
          "Payments \u0026 pricing, 40 against 30",
          "Maintenance \u0026 community, 92 against 49"
        ],
        "also": [
          "Agent-ready, a grade of BB or better",
          "Free to start without a card"
        ],
        "goodFor": "A team that already writes agent steps as durable handlers and wants a long, cheap wait for a human answer in TypeScript, Python, Java, Go or Rust, with the option to self-host.",
        "slug": "restate",
        "watchFor": "No reviewer inbox, Slack app or email. The approval request and the reply endpoint are the builder's code"
      },
      {
        "aheadOn": [
          "Security \u0026 auth, 73 against 61"
        ],
        "also": [
          "A hosted endpoint, with nothing to install"
        ],
        "goodFor": "Teams that want tool calls from coding agents or their own agents held for approval by rules, with escalation and an audit log, and no review UI to build.",
        "slug": "withhuman",
        "watchFor": "The terms say the service is in early access, and the API document is version 0.1.0"
      }
    ],
    "job": {
      "capability": "hitl.approve",
      "name": "Hitl approve"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/gotohuman-vs-restate.json",
        "title": "gotoHuman vs Restate",
        "url": "https://www.anchorterminal.com/compare/gotohuman-vs-restate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gotohuman-vs-withhuman.json",
        "title": "gotoHuman vs withHuman",
        "url": "https://www.anchorterminal.com/compare/gotohuman-vs-withhuman"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inngest-vs-restate.json",
        "title": "Inngest vs Restate",
        "url": "https://www.anchorterminal.com/compare/inngest-vs-restate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/inngest-vs-withhuman.json",
        "title": "Inngest vs withHuman",
        "url": "https://www.anchorterminal.com/compare/inngest-vs-withhuman"
      },
      {
        "json": "https://www.anchorterminal.com/compare/orkes-conductor-vs-restate.json",
        "title": "Orkes Conductor Human tasks vs Restate",
        "url": "https://www.anchorterminal.com/compare/orkes-conductor-vs-restate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/orkes-conductor-vs-withhuman.json",
        "title": "Orkes Conductor Human tasks vs withHuman",
        "url": "https://www.anchorterminal.com/compare/orkes-conductor-vs-withhuman"
      },
      {
        "json": "https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-restate.json",
        "title": "Permit MCP Gateway vs Restate",
        "url": "https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-restate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-withhuman.json",
        "title": "Permit MCP Gateway vs withHuman",
        "url": "https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-withhuman"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pushary-vs-restate.json",
        "title": "Pushary vs Restate",
        "url": "https://www.anchorterminal.com/compare/pushary-vs-restate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pushary-vs-withhuman.json",
        "title": "Pushary vs withHuman",
        "url": "https://www.anchorterminal.com/compare/pushary-vs-withhuman"
      },
      {
        "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/restate-vs-trigger-dev.json",
        "title": "Restate vs Trigger.dev",
        "url": "https://www.anchorterminal.com/compare/restate-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"
      },
      {
        "json": "https://www.anchorterminal.com/compare/trigger-dev-vs-withhuman.json",
        "title": "Trigger.dev vs withHuman",
        "url": "https://www.anchorterminal.com/compare/trigger-dev-vs-withhuman"
      }
    ],
    "scores": [
      {
        "by": 75,
        "edge": "restate",
        "key": "reliability",
        "name": "Reliability",
        "restate": 91,
        "weight": 16,
        "withhuman": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 4,
        "edge": "restate",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "restate": 85,
        "weight": 13,
        "withhuman": 81
      },
      {
        "by": 7,
        "edge": "restate",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "restate": 81,
        "weight": 13,
        "withhuman": 74
      },
      {
        "by": 12,
        "edge": "withhuman",
        "key": "security",
        "name": "Security \u0026 auth",
        "restate": 61,
        "weight": 14,
        "withhuman": 73
      },
      {
        "by": 10,
        "edge": "restate",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "restate": 40,
        "weight": 10,
        "withhuman": 30
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 43,
        "edge": "restate",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "restate": 92,
        "weight": 7,
        "withhuman": 49
      },
      {
        "by": 3,
        "edge": "withhuman",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "restate": 50,
        "weight": 7,
        "withhuman": 53
      }
    ],
    "summary": "Restate scores 73.3 (BB) on agent readiness against withHuman's 51.8 (D), and leads in 5 of 7 scored categories. withHuman leads on security \u0026 auth. Both do hitl approve.",
    "verdicts": {
      "restate": "An awakeable pauses a handler at no compute cost and resumes it from one HTTP request, with a durable timeout, on a free plan of 100,000 actions a month. Restate sends nothing to the approver, so the Slack message, email or inbox is the builder's code, and the published terms and privacy statement predate the paid plans.",
      "withhuman": "The approval API is small and carefully specified, with a public OpenAPI 3.1 document, mandatory idempotency keys and agent credentials that can never approve. The service is in early access under its own terms, with no status page, published rate limits or changelog, and the open-source repository the site links to returned 404 on 8 October 2026."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/restate-vs-withhuman",
    "json": "https://www.anchorterminal.com/compare/restate-vs-withhuman.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/restate-vs-withhuman.md",
    "slim": "https://www.anchorterminal.com/compare/restate-vs-withhuman.min.md"
  },
  "markdown": "Restate scores 73.3 (BB) on agent readiness against withHuman's 51.8 (D), and leads in 5 of 7 scored categories. withHuman leads on security \u0026 auth. Both do hitl approve.\n\n- Restate: grade BB, 73.3/100, rank #78 of 722. Markdown https://www.anchorterminal.com/tools/restate.md · JSON https://www.anchorterminal.com/api/v1/tools/restate.json\n- withHuman: grade D, 51.8/100, rank #573 of 722. Markdown https://www.anchorterminal.com/tools/withhuman.md · JSON https://www.anchorterminal.com/api/v1/tools/withhuman.json\n\n## Which one, for what\n\n### Restate (BB)\n\nGood for: A team that already writes agent steps as durable handlers and wants a long, cheap wait for a human answer in TypeScript, Python, Java, Go or Rust, with the option to self-host.\n\nAhead on:\n- Reliability, 91 against 16\n- Agent ergonomics, 81 against 74\n- Payments \u0026 pricing, 40 against 30\n- Maintenance \u0026 community, 92 against 49\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n- Free to start without a card\n\nWatch for: No reviewer inbox, Slack app or email. The approval request and the reply endpoint are the builder's code\n\n### withHuman (D)\n\nGood for: Teams that want tool calls from coding agents or their own agents held for approval by rules, with escalation and an audit log, and no review UI to build.\n\nAhead on:\n- Security \u0026 auth, 73 against 61\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n\nWatch for: The terms say the service is in early access, and the API document is version 0.1.0\n\n\n## Score by category\n\n| Category | Weight | Restate | withHuman | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 91 | 16 | Restate +75 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 85 | 81 | Restate +4 |\n| Agent ergonomics | 13% (16.2 this run) | 81 | 74 | Restate +7 |\n| Security \u0026 auth | 14% (17.5 this run) | 61 | 73 | withHuman +12 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 30 | Restate +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 92 | 49 | Restate +43 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 50 | 53 | withHuman +3 |\n| Negative events | ≤15 | 0 | -2 | |\n| **Total** | | **73.3 · BB** | **51.8 · D** | |\n\n## Facts side by side\n\n| Fact | Restate | withHuman |\n| --- | --- | --- |\n| Kind | Model platform | HTTP API |\n| Vendor | Restate GmbH | Metoro Inc |\n| Hosted endpoint | no (local only) | `https://app.withhuman.ai` |\n| Transports | HTTP | HTTP |\n| Auth | API key | OAuth or key |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| Licence | BSL 1.1 converting to Apache-2.0 four years after release (server), MIT (SDKs) | Proprietary hosted service under Metoro Inc's terms. The site describes an open-source edition, but the repository it links to returned 404 on 8 October 2026 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-01 | 2026-10-08 |\n| Terms last updated | couldn't be read | 2026-09-04 |\n| Privacy policy last updated | no document linked | 2026-09-04 |\n| Customer content may train models | couldn't be read | not found in the text |\n| Terms restrict automated access | couldn't be read | not found in the text |\n| Terms restrict benchmarking | couldn't be read | not found in the text |\n| Terms or service can change without notice | couldn't be read | not found in the text |\n| Arbitration or class-action waiver | couldn't be read | not found in the text |\n| Popularity | 4.5k stars, 329k npm/wk, 76k PyPI/wk | none |\n\n## Verdicts\n\n**Restate.** An awakeable pauses a handler at no compute cost and resumes it from one HTTP request, with a durable timeout, on a free plan of 100,000 actions a month. Restate sends nothing to the approver, so the Slack message, email or inbox is the builder's code, and the published terms and privacy statement predate the paid plans.\n\n**withHuman.** The approval API is small and carefully specified, with a public OpenAPI 3.1 document, mandatory idempotency keys and agent credentials that can never approve. The service is in early access under its own terms, with no status page, published rate limits or changelog, and the open-source repository the site links to returned 404 on 8 October 2026.\n\n## Before you call either\n\n### Restate\n\n1. Create the awakeable, send its ID inside `ctx.run`, then await the promise, so a retry doesn't send a second approval request\n2. Resolve with `POST /restate/awakeables/\u003cid\u003e/resolve` and a JSON body, or `/reject` with a text reason, which throws a terminal error in the handler\n3. On Restate Cloud send `Authorization: Bearer key_...` to `https://\u003cenv_id\u003e.env.\u003cregion\u003e.restate.cloud:8080`. On a self-hosted server put an authenticating proxy in front of port 8080\n4. Wrap the wait in `orTimeout` and decide what a timeout means. Without it the handler waits with no limit\n5. Retry ingress errors only on 408, 425, 429 or 5xx, and only when `x-restate-error-source` isn't `invocation`\n\n### withHuman\n\n1. Send an `Idempotency-Key` header on `POST /api/aap/v1/requests`. The call answers 400 without one\n2. Read the decision with `GET /api/aap/v1/requests/{id}?wait=30s` and repeat while `status` is `pending`. `wait` is capped at 30 seconds\n3. Set `timeout` between one second and seven days, and treat `expired` and `cancelled` as a refusal\n4. Start an approved call within five minutes of `decided_at`, because the decision carries an `expires_at`\n5. Cancel a request when you stop waiting, so reviewers stop seeing it\n\n## Questions\n\n### Which is better for AI agents, Restate or withHuman?\n\nRestate scores 73.3 (BB) on agent readiness against withHuman's 51.8 (D), and leads in 5 of 7 scored categories. withHuman leads on security \u0026 auth.\n\n### Can an agent call Restate and withHuman without installing anything?\n\nNo hosted endpoint is listed for Restate. withHuman has a hosted endpoint at https://app.withhuman.ai.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/restate-vs-withhuman.json, and with the fewest tokens: https://www.anchorterminal.com/compare/restate-vs-withhuman.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"restate\", \"b\": \"withhuman\"}`. From a terminal: `anchor compare restate withhuman`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/restate.json and https://www.anchorterminal.com/api/v1/tools/withhuman.json\n\n## Other comparisons with Restate or withHuman\n\n- [gotoHuman vs Restate](https://www.anchorterminal.com/compare/gotohuman-vs-restate.md)\n- [gotoHuman vs withHuman](https://www.anchorterminal.com/compare/gotohuman-vs-withhuman.md)\n- [Inngest vs Restate](https://www.anchorterminal.com/compare/inngest-vs-restate.md)\n- [Inngest vs withHuman](https://www.anchorterminal.com/compare/inngest-vs-withhuman.md)\n- [Orkes Conductor Human tasks vs Restate](https://www.anchorterminal.com/compare/orkes-conductor-vs-restate.md)\n- [Orkes Conductor Human tasks vs withHuman](https://www.anchorterminal.com/compare/orkes-conductor-vs-withhuman.md)\n- [Permit MCP Gateway vs Restate](https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-restate.md)\n- [Permit MCP Gateway vs withHuman](https://www.anchorterminal.com/compare/permit-mcp-gateway-vs-withhuman.md)\n- [Pushary vs Restate](https://www.anchorterminal.com/compare/pushary-vs-restate.md)\n- [Pushary vs withHuman](https://www.anchorterminal.com/compare/pushary-vs-withhuman.md)\n- [Restate vs Temporal](https://www.anchorterminal.com/compare/restate-vs-temporal.md)\n- [Restate vs Trigger.dev](https://www.anchorterminal.com/compare/restate-vs-trigger-dev.md)\n- [Temporal vs withHuman](https://www.anchorterminal.com/compare/temporal-vs-withhuman.md)\n- [Trigger.dev vs withHuman](https://www.anchorterminal.com/compare/trigger-dev-vs-withhuman.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "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": "Restate vs withHuman",
        "url": ""
      }
    ],
    "description": "Restate scores 73.3 (BB) on agent readiness against withHuman's 51.8 (D), and leads in 5 of 7 scored categories. withHuman leads on security \u0026 auth. Both do hitl approve. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Restate BB 73.3",
      "withHuman D 51.8",
      "scores"
    ],
    "h1": "Restate vs withHuman",
    "image": "https://www.anchorterminal.com/assets/og/compare-restate-vs-withhuman.png",
    "path": "/compare/restate-vs-withhuman",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Restate vs withHuman for AI agents, BB 73.3 vs D 51.8",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/restate-vs-withhuman"
  },
  "tokens": {
    "markdown": 2150,
    "slim": 730
  },
  "version": 1
}
