{
  "data": {
    "a": {
      "slug": "openduet",
      "name": "OpenDuet",
      "vendor": "CopilotKit (Tawkit, Inc.)",
      "vendorUrl": "https://www.copilotkit.ai/openduet",
      "kind": "harness",
      "category": "personal-assistants",
      "summary": "OpenDuet is CopilotKit's open-source, self-hosted proactive assistant built on OpenBot. It sends a morning brief from Gmail and Google Calendar, runs tasks in its own browser container and pauses consequential actions for approval.",
      "url": "https://www.anchorterminal.com/tools/openduet",
      "markdownUrl": "https://www.anchorterminal.com/tools/openduet.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/openduet.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/openduet.json",
      "repo": "https://github.com/CopilotKit/OpenDuet",
      "license": "MIT. Threads and memory need a CopilotKit Intelligence project, a separate service under CopilotKit's Self-Service Agreement",
      "transports": [],
      "packages": [],
      "auth": "mixed",
      "authNotes": "The owner runs it from a clone. With no identity provider configured it runs as one fixed administrator with no sign-in and listens only on this machine (`OPENBOT_SINGLE_USER`, refused on a public address); configuring a provider turns sign-in on. The server will not start without `INTELLIGENCE_API_KEY`, a project key for CopilotKit Intelligence obtained through `npx copilotkit@latest login`, which opens a browser sign-in. A model key (OpenAI by default, Anthropic optional) goes in `.env`. Gmail and Calendar need a Google OAuth client an administrator registers, then each person connects their own account. An outside agent can be registered as a Bot over AG-UI (`type: remote-ag-ui`) with an optional write-only authorisation header.",
      "pricing": "freemium",
      "pricingNotes": "The repository is free under MIT. It needs CopilotKit Intelligence, which is free on the Developer plan (no card, 1,000 interactions a month hosted, or a Developer Edition for local non-production use on a renewable 30-day licence); pay as you go is $49 a month per organisation with 10,000 interactions, then graduated rates not shown on the pricing page. Model usage is billed by the model provider (https://www.copilotkit.ai/pricing, https://docs.copilotkit.ai/intelligence/plans, checked 2026-10-30).",
      "priceSummary": "Freemium",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the README, the OpenBot docs or the CopilotKit pricing page (checked 2026-10-30). Intelligence's paid plans are billed monthly to a card.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 1618,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-30"
      },
      "docsUrl": "https://github.com/CopilotKit/OpenDuet#readme",
      "capabilities": [
        "assistant.proactive",
        "assistant.self-hosted",
        "assistant.accounts",
        "assistant.memory",
        "assistant.messaging",
        "agent.mcp-client",
        "mailbox.read",
        "mailbox.send",
        "calendar.read"
      ],
      "tags": [
        "open-source",
        "self-hosted",
        "local",
        "typescript",
        "docker",
        "gmail",
        "slack",
        "teams",
        "mcp-client",
        "approvals",
        "telemetry-default-on",
        "pre-1.0",
        "free",
        "no-card",
        "new"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 49.5,
        "grade": "D",
        "agentReady": false,
        "rank": 962,
        "ranked": true,
        "rankOf": 1239,
        "categoryRank": 15,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 52,
          "maintenance": 37,
          "payments": 30,
          "reliability": 42,
          "schema": 58,
          "security": 59,
          "transparency": 68
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-30"
        },
        "negative": 0,
        "verdict": "Self-hosted under MIT, with a server gateway that audits every Bot action, per-Bot browser containers with egress filtering, and write-only credentials. Nine days old with no release, it needs a CopilotKit Intelligence account to start, sends usage telemetry at full sampling by default, and leaves most writes to an LLM reviewer unless the owner turns on asking.",
        "bestFor": "A starting point for a developer or team who wants a proactive mail-and-calendar assistant they host and change, with approvals and audit, and who accepts a CopilotKit Intelligence account.",
        "strengths": [
          "MIT source, with everything OpenDuet-specific in one tenant folder over OpenBot's code",
          "One gateway evaluates policy and writes an audit row naming who started each run, exportable as CSV or OTLP",
          "Each Bot runs in its own container with an egress proxy that permits nothing until a policy arrives",
          "Payments, credential and security-setting changes are always handed to the person, and the reviewer fails closed",
          "Passwords go through a masked box, and stored credentials are encrypted, write-only and redacted from audit rows"
        ],
        "weaknesses": [
          "No release, tag, published image or deploy guide; the README marks it early development",
          "The server refuses to start without a CopilotKit Intelligence key, which needs a browser sign-in",
          "Writes other than payments, credentials and security settings run if the LLM reviewer passes them, unless the owner turns on asking",
          "Runtime telemetry is on by default at 100 per cent sampling, with a documented opt-out",
          "The latest CI run on main failed on 28 October 2026, and outside issues from 27 to 29 October mostly have no reply"
        ],
        "agentNotes": [
          "Follow the README's Quick start (`bun install`, `bash scripts/start.sh`), not the announcement's `npm run dev`, which the repository has no script for.",
          "Run `bun openbot/scripts/setup-learning.ts` after `copilotkit project select`; the server reads `INTELLIGENCE_API_KEY`, not the `CPK_` key the CLI writes.",
          "Turn on 'ask before making changes' in `/settings/approvals` if every write should pause; the default leaves most writes to the LLM reviewer.",
          "To bring your own agent, register it as a `remote-ag-ui` Bot in `agents.yaml`; its tool calls still pass through the gateway's policy and audit.",
          "Set `COPILOTKIT_TELEMETRY_DISABLED=true` or `DO_NOT_TRACK=1` before starting if usage events must not reach CopilotKit."
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 49.5
          }
        ],
        "editorialScores": {
          "ergonomics": 52,
          "maintenance": 37,
          "payments": 30,
          "reliability": 42,
          "schema": 58,
          "security": 59,
          "transparency": 68
        },
        "provenanceScore": 67,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-30",
            "maintenance": "2026-10-30",
            "payments": "2026-10-30",
            "reliability": "2026-10-30",
            "schema": "2026-10-30",
            "security": "2026-10-30",
            "transparency": "2026-10-30"
          },
          "last": "2026-10-30",
          "oldest": "2026-10-30",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "git clone https://github.com/CopilotKit/OpenDuet.git \u0026\u0026 cd OpenDuet \u0026\u0026 cp .env.example .env \u0026\u0026 bun install \u0026\u0026 npx --yes copilotkit@latest login \u0026\u0026 npx --yes copilotkit@latest project select \u0026\u0026 bun openbot/scripts/setup-learning.ts \u0026\u0026 bash scripts/start.sh"
      },
      "letme": {
        "capability": "https://letme.dev/assistant.proactive",
        "tool": "https://letme.dev/openduet"
      },
      "area": "frameworks",
      "provenance": {
        "legalEntity": "Tawkit, Inc. (d/b/a CopilotKit)",
        "domain": "copilotkit.ai",
        "domainRegistered": "2023-09-28",
        "endpointOnVendorDomain": null,
        "terms": "https://raw.githubusercontent.com/CopilotKit/OpenDuet/main/LICENSE",
        "privacy": "https://www.copilotkit.ai/privacy-policy",
        "statusPage": "",
        "changelog": "https://github.com/CopilotKit/OpenDuet/blob/main/openbot/CHANGELOG.md",
        "securityTxt": "none",
        "checked": "2026-10-30",
        "notes": [
          "The MIT licence reads Copyright (c) 2026 CopilotKit. CopilotKit's terms of service and privacy policy (effective 27 August 2026) name Tawkit, Inc., doing business as CopilotKit, governed by Delaware law. The Self-Service Agreement covers CopilotKit Intelligence, which OpenDuet requires.",
          "firstReleased is 2026-10-27, the date of CopilotKit's announcement post. The repository was created on 21 October 2026, but pull request #71 of 26 October ('remove internal material before OpenDuet goes public') shows it was not public before then, and there is no release or tag.",
          "The changelog is OpenBot's, vendored in `openbot/CHANGELOG.md`, with undated version sections from 0.0.1 to 0.2.0 and an Unreleased section. OpenDuet has no changelog of its own.",
          "https://www.copilotkit.ai/.well-known/security.txt answers 200 with the site's HTML, so no security.txt exists. Neither OpenDuet nor OpenBot has a SECURITY.md; CopilotKit's main repository has one naming security@copilotkit.ai.",
          "status.copilotkit.ai shows 'Copilot Cloud - API' and 'Web App' with 90-day uptime bars; it was not established that it covers Intelligence, and OpenDuet itself runs on the owner's machine.",
          "RDAP (Identity Digital) gives copilotkit.ai a registration date of 2023-09-28."
        ],
        "score": 67
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/openduet.json"
    },
    "answer": "OpenDuet scores 49.5 (D) on agent readiness against Poke's 37.7 (F), and leads in 5 of 7 scored categories. Poke leads on reliability.",
    "b": {
      "slug": "poke",
      "name": "Poke",
      "vendor": "The Interaction Company of California Inc.",
      "vendorUrl": "https://poke.com",
      "kind": "platform",
      "category": "personal-assistants",
      "summary": "Hosted personal assistant from The Interaction Company of California, reached by text on Apple Messages, WhatsApp, Telegram and RCS. It works across the owner's Gmail or Outlook mail, calendar, contacts and connected apps.",
      "url": "https://www.anchorterminal.com/tools/poke",
      "markdownUrl": "https://www.anchorterminal.com/tools/poke.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/poke.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/poke.json",
      "license": "Proprietary service under Poke's Terms of Service. The `poke` npm package (CLI and Node.js SDK) declares MIT",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "npm",
          "name": "poke"
        }
      ],
      "auth": "api-key",
      "authNotes": "A person signs up at poke.com and connects a Google or Microsoft account. The Poke API takes `Authorization: Bearer \u003ckey\u003e` with a V2 key created in Kitchen under API Keys. Keys are named, shown once, revocable one at a time and have no scopes. Older `pk_` keys work only on the deprecated endpoint. The CLI signs in with a browser device code and stores credentials in `~/.config/poke/credentials.json`. Third-party MCP servers are connected with an API key or OAuth (https://poke.com/docs/api; https://poke.com/docs/mcp-servers; https://poke.com/docs/creating-recipes).",
      "pricing": "freemium",
      "pricingNotes": "Free at $0 with no card. Pro is $19 a month and Ultra $199 a month on monthly billing. Free and Pro have a refilling usage allowance, with no figures published, and Poke continues in a lighter mode past it. Ultra includes a monthly credit pool (1 credit is $1 of usage), with top-ups and optional auto-reload. Poke Human is included with Ultra, with real-world expenses charged at cost. Model usage is not billed separately (https://poke.com/pricing; https://poke.com/docs/usage-and-resets; https://poke.com/faq, checked 2026-10-12).",
      "priceSummary": "$19 / mo",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, llms.txt or the pricing page (checked 2026-10-12).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-12"
      },
      "docsUrl": "https://poke.com/docs",
      "llmsTxt": "https://poke.com/llms.txt",
      "capabilities": [
        "assistant.proactive",
        "assistant.messaging",
        "assistant.accounts",
        "assistant.memory",
        "agent.mcp-client"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "messaging",
        "imessage",
        "whatsapp",
        "telegram",
        "gmail",
        "outlook",
        "mcp-client",
        "api-key",
        "free-tier",
        "status-page",
        "llms-txt",
        "trains-on-data-by-default"
      ],
      "lastRelease": "2026-06-25",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 37.7,
        "grade": "F",
        "agentReady": false,
        "rank": 1139,
        "ranked": true,
        "rankOf": 1239,
        "categoryRank": 24,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 30,
          "maintenance": 31,
          "payments": 30,
          "reliability": 51,
          "schema": 42,
          "security": 24,
          "transparency": 59
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-12"
        },
        "negative": 0,
        "verdict": "Hosted assistant that answers in Apple Messages, WhatsApp, Telegram and RCS and acts in Gmail, Outlook, calendars and MCP servers. Plan prices and a status page are public. No approval settings, credential storage, model providers or retention periods are documented, and customer content trains models unless Maximum Privacy is selected.",
        "bestFor": "One person who wants an assistant in their text messages that reads and drafts mail, manages a calendar and reaches other apps through MCP.",
        "strengths": [
          "Answers on Apple Messages, WhatsApp, Telegram and RCS, with the channel chosen in settings, per the docs welcome page and FAQ",
          "Free plan with no card, Pro at $19 a month and Ultra at $199 a month, all published without a sign-in",
          "Connects any remote MCP server by URL, with API key or OAuth, and OAuth servers with Dynamic Client Registration need no setup",
          "status.poke.com lists App, Email, Integrations, three messaging channels and API, with two incidents from July to 12 October 2026",
          "Named API keys are created in Kitchen, shown once and revoked one at a time"
        ],
        "weaknesses": [
          "No documented setting for which actions need approval before Poke sends, deletes or spends. Release notes mention email draft approval only in passing",
          "Customer content, including email contents, may train AI models unless the user selects Maximum Privacy, per the privacy notice of 11 September 2026",
          "Model providers, sub-processors, hosting locations and where account tokens are stored are not named in the pages read",
          "An API key message is processed with full access to email, calendar and integrations. Keys have no scopes",
          "No security.txt, disclosure policy, bug bounty or certification was found on poke.com",
          "The terms forbid automated access for scraping and use for benchmarking or competitive analysis. This matters before any probe is run"
        ],
        "agentNotes": [
          "POST JSON to `https://poke.com/api/v1/inbound/api-message` with a Bearer key from Kitchen. Legacy `pk_` keys work only on the deprecated `/api/v1/inbound-sms/webhook`",
          "Expect only `{\"success\": true}` back. Poke's answer goes to the owner's message thread, not to the caller",
          "Do not retry a POST blindly. No idempotency key is documented, and a repeated message may make Poke act twice",
          "Treat an API key as full access to the owner's mail, calendar and integrations. Create one key per automation and revoke it when done",
          "Avoid the prefilled integration link with `apiKey` in the query string for real secrets. Enter the key in the form or use `npx poke@latest mcp add -k`"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 1.8,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "F",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 37.7
          }
        ],
        "editorialScores": {
          "ergonomics": 30,
          "maintenance": 31,
          "payments": 30,
          "reliability": 51,
          "schema": 42,
          "security": 24,
          "transparency": 34
        },
        "provenanceScore": 84,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-12",
            "maintenance": "2026-10-12",
            "payments": "2026-10-12",
            "reliability": "2026-10-12",
            "schema": "2026-10-12",
            "security": "2026-10-12",
            "transparency": "2026-10-12"
          },
          "last": "2026-10-12",
          "lastMoved": "2026-10-27",
          "oldest": "2026-10-12",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npx poke@latest login",
        "http": "curl 'https://poke.com/api/v1/inbound/api-message' \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"message\": \"test\"}'"
      },
      "letme": {
        "capability": "https://letme.dev/assistant.proactive",
        "tool": "https://letme.dev/poke"
      },
      "area": "frameworks",
      "unitPrices": [
        {
          "item": "Pro",
          "unit": "month",
          "usd": 19,
          "note": "billed monthly, refilling usage allowance with no published figure"
        },
        {
          "item": "Ultra",
          "unit": "month",
          "usd": 199,
          "note": "billed monthly, includes a monthly credit pool and Poke Human"
        },
        {
          "item": "Ultra top-up credit",
          "unit": "credit",
          "usd": 1,
          "note": "1 credit is $1 of usage"
        }
      ],
      "provenance": {
        "legalEntity": "The Interaction Company of California Inc.",
        "domain": "poke.com",
        "domainRegistered": "1997-03-26",
        "endpointOnVendorDomain": true,
        "terms": "https://poke.com/terms",
        "privacy": "https://poke.com/privacy",
        "statusPage": "https://status.poke.com",
        "changelog": "https://poke.com/docs/release-notes",
        "securityTxt": "none",
        "checked": "2026-10-12",
        "notes": [
          "The privacy notice (last updated 11 September 2026) names The Interaction Company of California Inc. and gives 169 Waverley St Apt B, Palo Alto, CA 94301 as the controller's address. The terms (last modified 17 March 2026) name The Interaction Company of California d/b/a Poke.",
          "Cognition announced on 23 July 2026 that The Interaction Company of California was joining it. The terms and privacy notice read on 12 October 2026 do not name Cognition.",
          "poke.com/.well-known/security.txt answered 404. poke.com/robots.txt also answered 404, so the host publishes no crawl rules.",
          "RDAP for poke.com gives a registration date of 1997-03-26 and NameCheap, Inc. as registrar.",
          "The API answers at poke.com/api/v1, on the vendor's domain."
        ],
        "score": 84
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/poke.json",
      "live": {
        "slug": "poke",
        "vendorStatus": {
          "page": "https://status.poke.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-31T00:21:11.806464257Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "poke",
            "version": "4.0.461",
            "seenAt": "2026-10-30T14:38:13.562084397Z"
          }
        ],
        "npmWeekly": 1656,
        "securityTxt": {
          "url": "https://poke.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-30T15:39:20.932549105Z"
        },
        "llmsTxt": {
          "url": "https://poke.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-30T15:08:28.896099054Z"
        },
        "domain": {
          "domain": "poke.com",
          "registered": "1997-03-26",
          "source": "https://rdap.verisign.com/com/v1/domain/poke.com",
          "checkedAt": "2026-10-25T13:56:41.060713491Z"
        },
        "pages": [
          {
            "url": "https://poke.com/docs/release-notes",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-10-30T05:46:02.9421732Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "3945311a78aa"
          },
          {
            "url": "https://poke.com/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-30T05:46:05.134221454Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b3b15529b8e6"
          },
          {
            "url": "https://poke.com/privacy",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-10-30T05:46:07.408380327Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e6eb6e92a7f5"
          },
          {
            "url": "https://poke.com/terms",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-30T05:46:09.152326146Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ceaed31d64e8"
          }
        ],
        "updatedAt": "2026-10-31T00:21:11.806464257Z"
      }
    },
    "facts": [
      {
        "a": "Agent harness",
        "b": "Platform",
        "name": "Kind"
      },
      {
        "a": "CopilotKit (Tawkit, Inc.)",
        "b": "The Interaction Company of California Inc.",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT. Threads and memory need a CopilotKit Intelligence project, a separate service under CopilotKit's Self-Service Agreement",
        "b": "Proprietary service under Poke's Terms of Service. The `poke` npm package (CLI and Node.js SDK) declares MIT",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "none",
        "b": "2026-06-25",
        "name": "Last release"
      },
      {
        "a": "couldn't be read",
        "b": "2026-03-17",
        "name": "Terms last updated"
      },
      {
        "a": "2026-08-27",
        "b": "2026-09-11",
        "name": "Privacy policy last updated"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "1.6k stars",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "1.8/5 (4)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "OpenDuet scores 49.5 (D) on agent readiness against Poke's 37.7 (F), and leads in 5 of 7 scored categories. Poke leads on reliability.",
        "question": "Which is better for AI agents, OpenDuet or Poke?"
      },
      {
        "answer": "OpenDuet is open source (MIT. Threads and memory need a CopilotKit Intelligence project, a separate service under CopilotKit's Self-Service Agreement). No open-source release is listed for Poke.",
        "question": "Are OpenDuet and Poke open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 58 against 42",
          "Agent ergonomics, 52 against 30",
          "Security \u0026 auth, 59 against 24",
          "Maintenance \u0026 community, 37 against 31",
          "Transparency \u0026 trust, 68 against 59"
        ],
        "also": [
          "Free to start without a card",
          "Open source"
        ],
        "goodFor": "A starting point for a developer or team who wants a proactive mail-and-calendar assistant they host and change, with approvals and audit, and who accepts a CopilotKit Intelligence account.",
        "slug": "openduet",
        "watchFor": "No release, tag, published image or deploy guide; the README marks it early development"
      },
      {
        "aheadOn": [
          "Reliability, 51 against 42"
        ],
        "also": null,
        "goodFor": "One person who wants an assistant in their text messages that reads and drafts mail, manages a calendar and reaches other apps through MCP.",
        "slug": "poke",
        "watchFor": "No documented setting for which actions need approval before Poke sends, deletes or spends. Release notes mention email draft approval only in passing"
      }
    ],
    "job": {
      "capability": "assistant.proactive",
      "name": "Proactive personal assistants"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/asaply-vs-openduet.json",
        "title": "asaply vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/asaply-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/asaply-vs-poke.json",
        "title": "asaply vs Poke",
        "url": "https://www.anchorterminal.com/compare/asaply-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/asmi-vs-openduet.json",
        "title": "Asmi vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/asmi-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/asmi-vs-poke.json",
        "title": "Asmi vs Poke",
        "url": "https://www.anchorterminal.com/compare/asmi-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/boba-vs-openduet.json",
        "title": "Boba vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/boba-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/boba-vs-poke.json",
        "title": "Boba vs Poke",
        "url": "https://www.anchorterminal.com/compare/boba-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/brea-vs-openduet.json",
        "title": "Brea vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/brea-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/brea-vs-poke.json",
        "title": "Brea vs Poke",
        "url": "https://www.anchorterminal.com/compare/brea-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/del-vs-openduet.json",
        "title": "Del vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/del-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/del-vs-poke.json",
        "title": "Del vs Poke",
        "url": "https://www.anchorterminal.com/compare/del-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hirealpha-vs-openduet.json",
        "title": "HireAlpha vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/hirealpha-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hirealpha-vs-poke.json",
        "title": "HireAlpha vs Poke",
        "url": "https://www.anchorterminal.com/compare/hirealpha-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openduet-vs-openinstinct.json",
        "title": "OpenDuet vs OpenInstinct",
        "url": "https://www.anchorterminal.com/compare/openduet-vs-openinstinct"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openduet-vs-orbits.json",
        "title": "OpenDuet vs Orbits",
        "url": "https://www.anchorterminal.com/compare/openduet-vs-orbits"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openduet-vs-orchid-ai.json",
        "title": "OpenDuet vs Orchid",
        "url": "https://www.anchorterminal.com/compare/openduet-vs-orchid-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openduet-vs-szn.json",
        "title": "OpenDuet vs szn",
        "url": "https://www.anchorterminal.com/compare/openduet-vs-szn"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openduet-vs-tab-bot.json",
        "title": "OpenDuet vs Tab",
        "url": "https://www.anchorterminal.com/compare/openduet-vs-tab-bot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openduet-vs-zapia.json",
        "title": "OpenDuet vs Zapia",
        "url": "https://www.anchorterminal.com/compare/openduet-vs-zapia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openinstinct-vs-poke.json",
        "title": "OpenInstinct vs Poke",
        "url": "https://www.anchorterminal.com/compare/openinstinct-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/orbits-vs-poke.json",
        "title": "Orbits vs Poke",
        "url": "https://www.anchorterminal.com/compare/orbits-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/orchid-ai-vs-poke.json",
        "title": "Orchid vs Poke",
        "url": "https://www.anchorterminal.com/compare/orchid-ai-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/poke-vs-szn.json",
        "title": "Poke vs szn",
        "url": "https://www.anchorterminal.com/compare/poke-vs-szn"
      },
      {
        "json": "https://www.anchorterminal.com/compare/poke-vs-tab-bot.json",
        "title": "Poke vs Tab",
        "url": "https://www.anchorterminal.com/compare/poke-vs-tab-bot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/poke-vs-zapia.json",
        "title": "Poke vs Zapia",
        "url": "https://www.anchorterminal.com/compare/poke-vs-zapia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-openduet.json",
        "title": "AstrBot vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-poke.json",
        "title": "AstrBot vs Poke",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/boski-vs-openduet.json",
        "title": "Boski vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/boski-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/boski-vs-poke.json",
        "title": "Boski vs Poke",
        "url": "https://www.anchorterminal.com/compare/boski-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/caddy-app-vs-openduet.json",
        "title": "Caddy vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/caddy-app-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/caddy-app-vs-poke.json",
        "title": "Caddy vs Poke",
        "url": "https://www.anchorterminal.com/compare/caddy-app-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/claude-duet-vs-openduet.json",
        "title": "Claude Duet vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/claude-duet-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/claude-duet-vs-poke.json",
        "title": "Claude Duet vs Poke",
        "url": "https://www.anchorterminal.com/compare/claude-duet-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cowagent-vs-openduet.json",
        "title": "CowAgent vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/cowagent-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cowagent-vs-poke.json",
        "title": "CowAgent vs Poke",
        "url": "https://www.anchorterminal.com/compare/cowagent-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/folk-nozomio-vs-openduet.json",
        "title": "folk vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/folk-nozomio-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/folk-nozomio-vs-poke.json",
        "title": "folk vs Poke",
        "url": "https://www.anchorterminal.com/compare/folk-nozomio-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gaia-vs-openduet.json",
        "title": "GAIA vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/gaia-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gaia-vs-poke.json",
        "title": "GAIA vs Poke",
        "url": "https://www.anchorterminal.com/compare/gaia-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gemini-spark-vs-openduet.json",
        "title": "Gemini Spark vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/gemini-spark-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gemini-spark-vs-poke.json",
        "title": "Gemini Spark vs Poke",
        "url": "https://www.anchorterminal.com/compare/gemini-spark-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/grok-bot-vs-openduet.json",
        "title": "Grok Bot vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/grok-bot-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/grok-bot-vs-poke.json",
        "title": "Grok Bot vs Poke",
        "url": "https://www.anchorterminal.com/compare/grok-bot-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/haven-vs-openduet.json",
        "title": "Haven vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/haven-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/haven-vs-poke.json",
        "title": "Haven vs Poke",
        "url": "https://www.anchorterminal.com/compare/haven-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hermes-agent-vs-openduet.json",
        "title": "Hermes Agent vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/hermes-agent-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hermes-agent-vs-poke.json",
        "title": "Hermes Agent vs Poke",
        "url": "https://www.anchorterminal.com/compare/hermes-agent-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/instinct-vs-openduet.json",
        "title": "Instinct vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/instinct-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/instinct-vs-poke.json",
        "title": "Instinct vs Poke",
        "url": "https://www.anchorterminal.com/compare/instinct-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ironclaw-vs-openduet.json",
        "title": "IronClaw vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/ironclaw-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/ironclaw-vs-poke.json",
        "title": "IronClaw vs Poke",
        "url": "https://www.anchorterminal.com/compare/ironclaw-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/leon-vs-openduet.json",
        "title": "Leon vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/leon-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/leon-vs-poke.json",
        "title": "Leon vs Poke",
        "url": "https://www.anchorterminal.com/compare/leon-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lindy-vs-openduet.json",
        "title": "Lindy vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/lindy-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lindy-vs-poke.json",
        "title": "Lindy vs Poke",
        "url": "https://www.anchorterminal.com/compare/lindy-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nanobot-vs-openduet.json",
        "title": "nanobot vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nanobot-vs-poke.json",
        "title": "nanobot vs Poke",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nanoclaw-vs-openduet.json",
        "title": "NanoClaw vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/nanoclaw-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nanoclaw-vs-poke.json",
        "title": "NanoClaw vs Poke",
        "url": "https://www.anchorterminal.com/compare/nanoclaw-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openai-dots-vs-openduet.json",
        "title": "Dots vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/openai-dots-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openai-dots-vs-poke.json",
        "title": "Dots vs Poke",
        "url": "https://www.anchorterminal.com/compare/openai-dots-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openclaw-vs-openduet.json",
        "title": "OpenClaw vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/openclaw-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openclaw-vs-poke.json",
        "title": "OpenClaw vs Poke",
        "url": "https://www.anchorterminal.com/compare/openclaw-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openduet-vs-picoclaw.json",
        "title": "OpenDuet vs PicoClaw",
        "url": "https://www.anchorterminal.com/compare/openduet-vs-picoclaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openduet-vs-qwenpaw.json",
        "title": "OpenDuet vs QwenPaw",
        "url": "https://www.anchorterminal.com/compare/openduet-vs-qwenpaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openduet-vs-tasker-ai.json",
        "title": "OpenDuet vs Tasker AI",
        "url": "https://www.anchorterminal.com/compare/openduet-vs-tasker-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openduet-vs-town.json",
        "title": "OpenDuet vs Town",
        "url": "https://www.anchorterminal.com/compare/openduet-vs-town"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openduet-vs-zeroclaw.json",
        "title": "OpenDuet vs ZeroClaw",
        "url": "https://www.anchorterminal.com/compare/openduet-vs-zeroclaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openduet-vs-zo-computer.json",
        "title": "OpenDuet vs Zo Computer",
        "url": "https://www.anchorterminal.com/compare/openduet-vs-zo-computer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/picoclaw-vs-poke.json",
        "title": "PicoClaw vs Poke",
        "url": "https://www.anchorterminal.com/compare/picoclaw-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/poke-vs-qwenpaw.json",
        "title": "Poke vs QwenPaw",
        "url": "https://www.anchorterminal.com/compare/poke-vs-qwenpaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/poke-vs-tasker-ai.json",
        "title": "Poke vs Tasker AI",
        "url": "https://www.anchorterminal.com/compare/poke-vs-tasker-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/poke-vs-town.json",
        "title": "Poke vs Town",
        "url": "https://www.anchorterminal.com/compare/poke-vs-town"
      },
      {
        "json": "https://www.anchorterminal.com/compare/poke-vs-zeroclaw.json",
        "title": "Poke vs ZeroClaw",
        "url": "https://www.anchorterminal.com/compare/poke-vs-zeroclaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/poke-vs-zo-computer.json",
        "title": "Poke vs Zo Computer",
        "url": "https://www.anchorterminal.com/compare/poke-vs-zo-computer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/atticus-vs-openduet.json",
        "title": "Atticus vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/atticus-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/atticus-vs-poke.json",
        "title": "Atticus vs Poke",
        "url": "https://www.anchorterminal.com/compare/atticus-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deeptutor-vs-openduet.json",
        "title": "DeepTutor vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/deeptutor-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deeptutor-vs-poke.json",
        "title": "DeepTutor vs Poke",
        "url": "https://www.anchorterminal.com/compare/deeptutor-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hark-pro-vs-openduet.json",
        "title": "Hark Pro vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/hark-pro-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hark-pro-vs-poke.json",
        "title": "Hark Pro vs Poke",
        "url": "https://www.anchorterminal.com/compare/hark-pro-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/learnharness-vs-openduet.json",
        "title": "LearnHarness vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/learnharness-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/learnharness-vs-poke.json",
        "title": "LearnHarness vs Poke",
        "url": "https://www.anchorterminal.com/compare/learnharness-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openduet-vs-talorys.json",
        "title": "OpenDuet vs Talorys",
        "url": "https://www.anchorterminal.com/compare/openduet-vs-talorys"
      },
      {
        "json": "https://www.anchorterminal.com/compare/poke-vs-talorys.json",
        "title": "Poke vs Talorys",
        "url": "https://www.anchorterminal.com/compare/poke-vs-talorys"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lobby-os-vs-openduet.json",
        "title": "Lobby vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/lobby-os-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/lobby-os-vs-poke.json",
        "title": "Lobby vs Poke",
        "url": "https://www.anchorterminal.com/compare/lobby-os-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/natura-vs-openduet.json",
        "title": "Natura tinyNature vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/natura-vs-openduet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/natura-vs-poke.json",
        "title": "Natura tinyNature vs Poke",
        "url": "https://www.anchorterminal.com/compare/natura-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openduet-vs-pally.json",
        "title": "OpenDuet vs Pally",
        "url": "https://www.anchorterminal.com/compare/openduet-vs-pally"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openduet-vs-tomo.json",
        "title": "OpenDuet vs Tomo",
        "url": "https://www.anchorterminal.com/compare/openduet-vs-tomo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openduet-vs-wajo.json",
        "title": "OpenDuet vs Wajo (Fo)",
        "url": "https://www.anchorterminal.com/compare/openduet-vs-wajo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pally-vs-poke.json",
        "title": "Pally vs Poke",
        "url": "https://www.anchorterminal.com/compare/pally-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/poke-vs-tomo.json",
        "title": "Poke vs Tomo",
        "url": "https://www.anchorterminal.com/compare/poke-vs-tomo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/poke-vs-wajo.json",
        "title": "Poke vs Wajo (Fo)",
        "url": "https://www.anchorterminal.com/compare/poke-vs-wajo"
      }
    ],
    "scores": [
      {
        "by": 9,
        "edge": "poke",
        "key": "reliability",
        "name": "Reliability",
        "openduet": 42,
        "poke": 51,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 16,
        "edge": "openduet",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "openduet": 58,
        "poke": 42,
        "weight": 13
      },
      {
        "by": 22,
        "edge": "openduet",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "openduet": 52,
        "poke": 30,
        "weight": 13
      },
      {
        "by": 35,
        "edge": "openduet",
        "key": "security",
        "name": "Security \u0026 auth",
        "openduet": 59,
        "poke": 24,
        "weight": 14
      },
      {
        "by": 0,
        "edge": "",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "openduet": 30,
        "poke": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 6,
        "edge": "openduet",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "openduet": 37,
        "poke": 31,
        "weight": 7
      },
      {
        "by": 9,
        "edge": "openduet",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "openduet": 68,
        "poke": 59,
        "weight": 7
      }
    ],
    "summary": "OpenDuet scores 49.5 (D) on agent readiness against Poke's 37.7 (F), and leads in 5 of 7 scored categories. Poke leads on reliability. Both do proactive personal assistants.",
    "tutorials": [],
    "verdicts": {
      "openduet": "Self-hosted under MIT, with a server gateway that audits every Bot action, per-Bot browser containers with egress filtering, and write-only credentials. Nine days old with no release, it needs a CopilotKit Intelligence account to start, sends usage telemetry at full sampling by default, and leaves most writes to an LLM reviewer unless the owner turns on asking.",
      "poke": "Hosted assistant that answers in Apple Messages, WhatsApp, Telegram and RCS and acts in Gmail, Outlook, calendars and MCP servers. Plan prices and a status page are public. No approval settings, credential storage, model providers or retention periods are documented, and customer content trains models unless Maximum Privacy is selected."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/openduet-vs-poke",
    "json": "https://www.anchorterminal.com/compare/openduet-vs-poke.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/openduet-vs-poke.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/openduet-vs-poke.min.md"
  },
  "markdown": "OpenDuet scores 49.5 (D) on agent readiness against Poke's 37.7 (F), and leads in 5 of 7 scored categories. Poke leads on reliability. Both do proactive personal assistants.\n\n- OpenDuet: grade D, 49.5/100, rank #962 of 1239. Markdown https://www.anchorterminal.com/tools/openduet.md · JSON https://www.anchorterminal.com/api/v1/tools/openduet.json\n- Poke: grade F, 37.7/100, rank #1139 of 1239. Markdown https://www.anchorterminal.com/tools/poke.md · JSON https://www.anchorterminal.com/api/v1/tools/poke.json\n- Best AI personal assistants that act for one person: https://www.anchorterminal.com/best/personal-assistants/index.md\n- All 1196 assistants comparisons: https://www.anchorterminal.com/compare/personal-assistants/index.md\n\n## Which one, for what\n\n### OpenDuet (D)\n\nGood for: A starting point for a developer or team who wants a proactive mail-and-calendar assistant they host and change, with approvals and audit, and who accepts a CopilotKit Intelligence account.\n\nAhead on:\n- Schema \u0026 documentation, 58 against 42\n- Agent ergonomics, 52 against 30\n- Security \u0026 auth, 59 against 24\n- Maintenance \u0026 community, 37 against 31\n- Transparency \u0026 trust, 68 against 59\n\nAlso in its favour:\n- Free to start without a card\n- Open source\n\nWatch for: No release, tag, published image or deploy guide; the README marks it early development\n\n### Poke (F)\n\nGood for: One person who wants an assistant in their text messages that reads and drafts mail, manages a calendar and reaches other apps through MCP.\n\nAhead on:\n- Reliability, 51 against 42\n\nWatch for: No documented setting for which actions need approval before Poke sends, deletes or spends. Release notes mention email draft approval only in passing\n\n\n## Score by category\n\n| Category | Weight | OpenDuet | Poke | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 42 | 51 | Poke +9 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 58 | 42 | OpenDuet +16 |\n| Agent ergonomics | 13% (16.2 this run) | 52 | 30 | OpenDuet +22 |\n| Security \u0026 auth | 14% (17.5 this run) | 59 | 24 | OpenDuet +35 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 30 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 37 | 31 | OpenDuet +6 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 68 | 59 | OpenDuet +9 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **49.5 · D** | **37.7 · F** | |\n\n## Facts side by side\n\n| Fact | OpenDuet | Poke |\n| --- | --- | --- |\n| Kind | Agent harness | Platform |\n| Vendor | CopilotKit (Tawkit, Inc.) | The Interaction Company of California Inc. |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports |  | HTTP |\n| Auth | OAuth or key | API key |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| Licence | MIT. Threads and memory need a CopilotKit Intelligence project, a separate service under CopilotKit's Self-Service Agreement | Proprietary service under Poke's Terms of Service. The `poke` npm package (CLI and Node.js SDK) declares MIT |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| Last release | none | 2026-06-25 |\n| Terms last updated | couldn't be read | 2026-03-17 |\n| Privacy policy last updated | 2026-08-27 | 2026-09-11 |\n| Customer content may train models | couldn't be read | yes |\n| Terms restrict automated access | couldn't be read | yes |\n| Terms restrict benchmarking | couldn't be read | yes |\n| Terms or service can change without notice | couldn't be read | yes |\n| Arbitration or class-action waiver | couldn't be read | yes |\n| Popularity | 1.6k stars | none |\n| Agent reviews | none | 1.8/5 (4) |\n\n## Verdicts\n\n**OpenDuet.** Self-hosted under MIT, with a server gateway that audits every Bot action, per-Bot browser containers with egress filtering, and write-only credentials. Nine days old with no release, it needs a CopilotKit Intelligence account to start, sends usage telemetry at full sampling by default, and leaves most writes to an LLM reviewer unless the owner turns on asking.\n\n**Poke.** Hosted assistant that answers in Apple Messages, WhatsApp, Telegram and RCS and acts in Gmail, Outlook, calendars and MCP servers. Plan prices and a status page are public. No approval settings, credential storage, model providers or retention periods are documented, and customer content trains models unless Maximum Privacy is selected.\n\n## Before you call either\n\n### OpenDuet\n\n1. Follow the README's Quick start (`bun install`, `bash scripts/start.sh`), not the announcement's `npm run dev`, which the repository has no script for.\n2. Run `bun openbot/scripts/setup-learning.ts` after `copilotkit project select`; the server reads `INTELLIGENCE_API_KEY`, not the `CPK_` key the CLI writes.\n3. Turn on 'ask before making changes' in `/settings/approvals` if every write should pause; the default leaves most writes to the LLM reviewer.\n4. To bring your own agent, register it as a `remote-ag-ui` Bot in `agents.yaml`; its tool calls still pass through the gateway's policy and audit.\n5. Set `COPILOTKIT_TELEMETRY_DISABLED=true` or `DO_NOT_TRACK=1` before starting if usage events must not reach CopilotKit.\n\n### Poke\n\n1. POST JSON to `https://poke.com/api/v1/inbound/api-message` with a Bearer key from Kitchen. Legacy `pk_` keys work only on the deprecated `/api/v1/inbound-sms/webhook`\n2. Expect only `{\"success\": true}` back. Poke's answer goes to the owner's message thread, not to the caller\n3. Do not retry a POST blindly. No idempotency key is documented, and a repeated message may make Poke act twice\n4. Treat an API key as full access to the owner's mail, calendar and integrations. Create one key per automation and revoke it when done\n5. Avoid the prefilled integration link with `apiKey` in the query string for real secrets. Enter the key in the form or use `npx poke@latest mcp add -k`\n\n## Questions\n\n### Which is better for AI agents, OpenDuet or Poke?\n\nOpenDuet scores 49.5 (D) on agent readiness against Poke's 37.7 (F), and leads in 5 of 7 scored categories. Poke leads on reliability.\n\n### Are OpenDuet and Poke open source?\n\nOpenDuet is open source (MIT. Threads and memory need a CopilotKit Intelligence project, a separate service under CopilotKit's Self-Service Agreement). No open-source release is listed for Poke.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/openduet-vs-poke.json, and with the fewest tokens: https://www.anchorterminal.com/compare/openduet-vs-poke.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"openduet\", \"b\": \"poke\"}`. From a terminal: `anchor compare openduet poke`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/openduet.json and https://www.anchorterminal.com/api/v1/tools/poke.json\n\n## Other comparisons with OpenDuet or Poke\n\n- [asaply vs OpenDuet](https://www.anchorterminal.com/compare/asaply-vs-openduet.md)\n- [asaply vs Poke](https://www.anchorterminal.com/compare/asaply-vs-poke.md)\n- [Asmi vs OpenDuet](https://www.anchorterminal.com/compare/asmi-vs-openduet.md)\n- [Asmi vs Poke](https://www.anchorterminal.com/compare/asmi-vs-poke.md)\n- [Boba vs OpenDuet](https://www.anchorterminal.com/compare/boba-vs-openduet.md)\n- [Boba vs Poke](https://www.anchorterminal.com/compare/boba-vs-poke.md)\n- [Brea vs OpenDuet](https://www.anchorterminal.com/compare/brea-vs-openduet.md)\n- [Brea vs Poke](https://www.anchorterminal.com/compare/brea-vs-poke.md)\n- [Del vs OpenDuet](https://www.anchorterminal.com/compare/del-vs-openduet.md)\n- [Del vs Poke](https://www.anchorterminal.com/compare/del-vs-poke.md)\n- [HireAlpha vs OpenDuet](https://www.anchorterminal.com/compare/hirealpha-vs-openduet.md)\n- [HireAlpha vs Poke](https://www.anchorterminal.com/compare/hirealpha-vs-poke.md)\n- [OpenDuet vs OpenInstinct](https://www.anchorterminal.com/compare/openduet-vs-openinstinct.md)\n- [OpenDuet vs Orbits](https://www.anchorterminal.com/compare/openduet-vs-orbits.md)\n- [OpenDuet vs Orchid](https://www.anchorterminal.com/compare/openduet-vs-orchid-ai.md)\n- [OpenDuet vs szn](https://www.anchorterminal.com/compare/openduet-vs-szn.md)\n- [OpenDuet vs Tab](https://www.anchorterminal.com/compare/openduet-vs-tab-bot.md)\n- [OpenDuet vs Zapia](https://www.anchorterminal.com/compare/openduet-vs-zapia.md)\n- [OpenInstinct vs Poke](https://www.anchorterminal.com/compare/openinstinct-vs-poke.md)\n- [Orbits vs Poke](https://www.anchorterminal.com/compare/orbits-vs-poke.md)\n- [Orchid vs Poke](https://www.anchorterminal.com/compare/orchid-ai-vs-poke.md)\n- [Poke vs szn](https://www.anchorterminal.com/compare/poke-vs-szn.md)\n- [Poke vs Tab](https://www.anchorterminal.com/compare/poke-vs-tab-bot.md)\n- [Poke vs Zapia](https://www.anchorterminal.com/compare/poke-vs-zapia.md)\n- [AstrBot vs OpenDuet](https://www.anchorterminal.com/compare/astrbot-vs-openduet.md)\n- [AstrBot vs Poke](https://www.anchorterminal.com/compare/astrbot-vs-poke.md)\n- [Boski vs OpenDuet](https://www.anchorterminal.com/compare/boski-vs-openduet.md)\n- [Boski vs Poke](https://www.anchorterminal.com/compare/boski-vs-poke.md)\n- [Caddy vs OpenDuet](https://www.anchorterminal.com/compare/caddy-app-vs-openduet.md)\n- [Caddy vs Poke](https://www.anchorterminal.com/compare/caddy-app-vs-poke.md)\n- [Claude Duet vs OpenDuet](https://www.anchorterminal.com/compare/claude-duet-vs-openduet.md)\n- [Claude Duet vs Poke](https://www.anchorterminal.com/compare/claude-duet-vs-poke.md)\n- [CowAgent vs OpenDuet](https://www.anchorterminal.com/compare/cowagent-vs-openduet.md)\n- [CowAgent vs Poke](https://www.anchorterminal.com/compare/cowagent-vs-poke.md)\n- [folk vs OpenDuet](https://www.anchorterminal.com/compare/folk-nozomio-vs-openduet.md)\n- [folk vs Poke](https://www.anchorterminal.com/compare/folk-nozomio-vs-poke.md)\n- [GAIA vs OpenDuet](https://www.anchorterminal.com/compare/gaia-vs-openduet.md)\n- [GAIA vs Poke](https://www.anchorterminal.com/compare/gaia-vs-poke.md)\n- [Gemini Spark vs OpenDuet](https://www.anchorterminal.com/compare/gemini-spark-vs-openduet.md)\n- [Gemini Spark vs Poke](https://www.anchorterminal.com/compare/gemini-spark-vs-poke.md)\n- [Grok Bot vs OpenDuet](https://www.anchorterminal.com/compare/grok-bot-vs-openduet.md)\n- [Grok Bot vs Poke](https://www.anchorterminal.com/compare/grok-bot-vs-poke.md)\n- [Haven vs OpenDuet](https://www.anchorterminal.com/compare/haven-vs-openduet.md)\n- [Haven vs Poke](https://www.anchorterminal.com/compare/haven-vs-poke.md)\n- [Hermes Agent vs OpenDuet](https://www.anchorterminal.com/compare/hermes-agent-vs-openduet.md)\n- [Hermes Agent vs Poke](https://www.anchorterminal.com/compare/hermes-agent-vs-poke.md)\n- [Instinct vs OpenDuet](https://www.anchorterminal.com/compare/instinct-vs-openduet.md)\n- [Instinct vs Poke](https://www.anchorterminal.com/compare/instinct-vs-poke.md)\n- [IronClaw vs OpenDuet](https://www.anchorterminal.com/compare/ironclaw-vs-openduet.md)\n- [IronClaw vs Poke](https://www.anchorterminal.com/compare/ironclaw-vs-poke.md)\n- [Leon vs OpenDuet](https://www.anchorterminal.com/compare/leon-vs-openduet.md)\n- [Leon vs Poke](https://www.anchorterminal.com/compare/leon-vs-poke.md)\n- [Lindy vs OpenDuet](https://www.anchorterminal.com/compare/lindy-vs-openduet.md)\n- [Lindy vs Poke](https://www.anchorterminal.com/compare/lindy-vs-poke.md)\n- [nanobot vs OpenDuet](https://www.anchorterminal.com/compare/nanobot-vs-openduet.md)\n- [nanobot vs Poke](https://www.anchorterminal.com/compare/nanobot-vs-poke.md)\n- [NanoClaw vs OpenDuet](https://www.anchorterminal.com/compare/nanoclaw-vs-openduet.md)\n- [NanoClaw vs Poke](https://www.anchorterminal.com/compare/nanoclaw-vs-poke.md)\n- [Dots vs OpenDuet](https://www.anchorterminal.com/compare/openai-dots-vs-openduet.md)\n- [Dots vs Poke](https://www.anchorterminal.com/compare/openai-dots-vs-poke.md)\n- [OpenClaw vs OpenDuet](https://www.anchorterminal.com/compare/openclaw-vs-openduet.md)\n- [OpenClaw vs Poke](https://www.anchorterminal.com/compare/openclaw-vs-poke.md)\n- [OpenDuet vs PicoClaw](https://www.anchorterminal.com/compare/openduet-vs-picoclaw.md)\n- [OpenDuet vs QwenPaw](https://www.anchorterminal.com/compare/openduet-vs-qwenpaw.md)\n- [OpenDuet vs Tasker AI](https://www.anchorterminal.com/compare/openduet-vs-tasker-ai.md)\n- [OpenDuet vs Town](https://www.anchorterminal.com/compare/openduet-vs-town.md)\n- [OpenDuet vs ZeroClaw](https://www.anchorterminal.com/compare/openduet-vs-zeroclaw.md)\n- [OpenDuet vs Zo Computer](https://www.anchorterminal.com/compare/openduet-vs-zo-computer.md)\n- [PicoClaw vs Poke](https://www.anchorterminal.com/compare/picoclaw-vs-poke.md)\n- [Poke vs QwenPaw](https://www.anchorterminal.com/compare/poke-vs-qwenpaw.md)\n- [Poke vs Tasker AI](https://www.anchorterminal.com/compare/poke-vs-tasker-ai.md)\n- [Poke vs Town](https://www.anchorterminal.com/compare/poke-vs-town.md)\n- [Poke vs ZeroClaw](https://www.anchorterminal.com/compare/poke-vs-zeroclaw.md)\n- [Poke vs Zo Computer](https://www.anchorterminal.com/compare/poke-vs-zo-computer.md)\n- [Atticus vs OpenDuet](https://www.anchorterminal.com/compare/atticus-vs-openduet.md)\n- [Atticus vs Poke](https://www.anchorterminal.com/compare/atticus-vs-poke.md)\n- [DeepTutor vs OpenDuet](https://www.anchorterminal.com/compare/deeptutor-vs-openduet.md)\n- [DeepTutor vs Poke](https://www.anchorterminal.com/compare/deeptutor-vs-poke.md)\n- [Hark Pro vs OpenDuet](https://www.anchorterminal.com/compare/hark-pro-vs-openduet.md)\n- [Hark Pro vs Poke](https://www.anchorterminal.com/compare/hark-pro-vs-poke.md)\n- [LearnHarness vs OpenDuet](https://www.anchorterminal.com/compare/learnharness-vs-openduet.md)\n- [LearnHarness vs Poke](https://www.anchorterminal.com/compare/learnharness-vs-poke.md)\n- [OpenDuet vs Talorys](https://www.anchorterminal.com/compare/openduet-vs-talorys.md)\n- [Poke vs Talorys](https://www.anchorterminal.com/compare/poke-vs-talorys.md)\n- [Lobby vs OpenDuet](https://www.anchorterminal.com/compare/lobby-os-vs-openduet.md)\n- [Lobby vs Poke](https://www.anchorterminal.com/compare/lobby-os-vs-poke.md)\n- [Natura tinyNature vs OpenDuet](https://www.anchorterminal.com/compare/natura-vs-openduet.md)\n- [Natura tinyNature vs Poke](https://www.anchorterminal.com/compare/natura-vs-poke.md)\n- [OpenDuet vs Pally](https://www.anchorterminal.com/compare/openduet-vs-pally.md)\n- [OpenDuet vs Tomo](https://www.anchorterminal.com/compare/openduet-vs-tomo.md)\n- [OpenDuet vs Wajo (Fo)](https://www.anchorterminal.com/compare/openduet-vs-wajo.md)\n- [Pally vs Poke](https://www.anchorterminal.com/compare/pally-vs-poke.md)\n- [Poke vs Tomo](https://www.anchorterminal.com/compare/poke-vs-tomo.md)\n- [Poke vs Wajo (Fo)](https://www.anchorterminal.com/compare/poke-vs-wajo.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-31",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "OpenDuet vs Poke",
        "url": ""
      }
    ],
    "description": "OpenDuet scores 49.5 (D) to Poke's 37.7 (F) for proactive personal assistants. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "OpenDuet D 49.5",
      "Poke F 37.7",
      "scores"
    ],
    "h1": "OpenDuet vs Poke",
    "image": "https://www.anchorterminal.com/assets/og/compare-openduet-vs-poke.png",
    "path": "/compare/openduet-vs-poke",
    "published": "2026-10-01",
    "section": "tools",
    "title": "OpenDuet vs Poke for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-30",
    "url": "https://www.anchorterminal.com/compare/openduet-vs-poke"
  },
  "tokens": {
    "markdown": 3850,
    "slim": 730
  },
  "version": 1
}
