{
  "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 and Town score within a point of each other on agent readiness, 49.5 (D) and 48.7 (D). Town leads on security \u0026 auth and maintenance \u0026 community.",
    "b": {
      "slug": "town",
      "name": "Town",
      "vendor": "Town.com, Inc.",
      "vendorUrl": "https://www.town.com",
      "kind": "platform",
      "category": "personal-assistants",
      "summary": "Town is a hosted AI assistant, called a Townie, with its own email address. It works across the owner's email, calendar and connected work apps, runs scheduled routines, and answers by email, text, WhatsApp, Telegram, the web or iOS.",
      "url": "https://www.anchorterminal.com/tools/town",
      "markdownUrl": "https://www.anchorterminal.com/tools/town.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/town.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/town.json",
      "license": "Closed service under Town's Terms of Service (Town.com, Inc., updated 21 July 2026).",
      "transports": [
        "http"
      ],
      "packages": [],
      "auth": "mixed",
      "authNotes": "People sign up at town.com with account credentials or a linked Google or single sign-on account (https://www.town.com/terms-of-service). A routine can expose its own webhook URL, called with a bearer secret that is shown once and can be rotated. Town answers a wrong secret, a disabled endpoint and a missing one with the same 404 (https://www.town.com/docs/routines/stock-routines/webhooks).",
      "pricing": "freemium",
      "pricingNotes": "Free at $0 with no credit card, 30 chat messages a month, the weekly briefing and a 7-day Pro trial on signup. Starter is $15 a month billed monthly with 1,250 credits. Pro ($49), Power ($99) and Power Plus ($199) are monthly prices at the billed-annually rate, and monthly billing is \"available at a slightly higher rate\". Team is $59 and Team Plus $149 a seat a month. Credits past the allotment bill at $0.044 (Pro), $0.038 (Power, Team), $0.032 (Power Plus) and $0.030 (Team Plus), with an optional monthly spend cap (https://www.town.com/pricing and https://www.town.com/docs/billing/plans, checked 14 October 2026).",
      "priceSummary": "$15 / mo",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 found on town.com's pricing, docs and terms, checked 14 October 2026.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-14"
      },
      "docsUrl": "https://www.town.com/docs",
      "capabilities": [
        "assistant.proactive",
        "assistant.messaging",
        "assistant.accounts",
        "assistant.memory",
        "mailbox.read",
        "mailbox.send",
        "calendar.write",
        "messaging.whatsapp",
        "messaging.rcs",
        "messaging.inbound",
        "email.inbound",
        "voice.calls",
        "memory.user",
        "tasks.create",
        "notify.push",
        "agent.multi-agent",
        "agent.mcp-client"
      ],
      "tags": [
        "hosted",
        "official",
        "closed-source",
        "freemium",
        "free-tier",
        "no-card",
        "ios",
        "soc2",
        "webhooks"
      ],
      "lastRelease": "2026-10-10",
      "graded": true,
      "disclosure": "Town competes with LocalGhost, which Anchor Terminal's founder builds. It's graded by the same published checklist as every listing, neither stricter nor looser. Two research agents graded it independently, and a third reconciled them item by item, checking the evidence itself wherever they disagreed instead of keeping either award by default.",
      "competesWith": "localghost",
      "anchor": {
        "graded": true,
        "score": 48.7,
        "grade": "D",
        "agentReady": false,
        "rank": 982,
        "ranked": true,
        "rankOf": 1239,
        "categoryRank": 16,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 49,
          "maintenance": 60,
          "payments": 30,
          "reliability": 35,
          "schema": 33,
          "security": 79,
          "transparency": 63
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-14"
        },
        "negative": 0,
        "verdict": "Town is a hosted assistant that works across the owner's mail, calendar and work apps, and other systems can start its routines through per-routine webhooks with rotatable secrets, idempotency keys and documented errors. A caller can't read a run's result. The privacy policy and trust page disagree on whether training is on by default.",
        "bestFor": "An owner who wants a mail and calendar assistant whose routines other systems can trigger.",
        "disclosure": "Town competes with LocalGhost, which Anchor Terminal's founder builds. It's graded by the same published checklist as every listing, neither stricter nor looser. Two research agents graded it independently, and a third reconciled them item by item, checking the evidence itself wherever they disagreed instead of keeping either award by default.",
        "strengths": [
          "Per-routine webhook secrets, shown once and rotatable, with an X-Town-Idempotency-Key header and six documented responses.",
          "Routines run in autonomous, approval-required or read-only mode, with per-tool overrides and account scope defaulting to the trigger account.",
          "Webhook payloads are framed as untrusted data, and Town can block a webhook routine that combines untrusted input with autonomous sending.",
          "SOC 2 Type 2 audited per the trust page, with a security@corp.town.com reporting address.",
          "Free plan at $0 with no credit card, and a dated subprocessor list naming model providers."
        ],
        "weaknesses": [
          "The privacy policy describes training with an opt-out and the trust page says training is opt-in.",
          "The trust page says Town never sends without the owner's OK, while the docs describe autonomous routines and an Allow all actions session mode.",
          "A webhook call returns only 202, so the caller can't read what the routine did.",
          "No status page, published webhook rate limit or SLA found."
        ],
        "agentNotes": [
          "Start a Town routine with POST to its webhook URL, Authorization Bearer whsec_ secret, and application/json or text/plain. Expect 202 only.",
          "Send X-Town-Idempotency-Key with a stable event id on every retry so Town doesn't start a second run.",
          "Treat 404 as wrong secret, disabled endpoint or missing endpoint alike, and ask the owner to check Routine Settings rather than retrying.",
          "Send account_email only if the owner allowed the override. It must match a connected account in full and can't widen the routine's scope.",
          "Ask the owner to keep routines that act on webhook input in approval-required mode, as Town's own docs advise."
        ],
        "metrics": {
          "kind": "remote",
          "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": 48.7
          }
        ],
        "editorialScores": {
          "ergonomics": 49,
          "maintenance": 60,
          "payments": 30,
          "reliability": 35,
          "schema": 33,
          "security": 79,
          "transparency": 50
        },
        "provenanceScore": 76,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-14",
            "maintenance": "2026-10-14",
            "payments": "2026-10-14",
            "reliability": "2026-10-14",
            "schema": "2026-10-14",
            "security": "2026-10-14",
            "transparency": "2026-10-14"
          },
          "last": "2026-10-14",
          "lastMoved": "2026-10-30",
          "oldest": "2026-10-14",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "letme": {
        "capability": "https://letme.dev/assistant.proactive",
        "tool": "https://letme.dev/town"
      },
      "area": "frameworks",
      "unitPrices": [
        {
          "item": "Town Starter",
          "unit": "month",
          "usd": 15,
          "note": "Billed monthly, 1,250 credits. Checked 14 October 2026."
        },
        {
          "item": "Town Pro",
          "unit": "month",
          "usd": 49,
          "note": "Billed annually, 5,000 credits. Monthly billing costs more."
        },
        {
          "item": "Town Power",
          "unit": "month",
          "usd": 99,
          "note": "Billed annually, 12,000 credits."
        },
        {
          "item": "Town Power Plus",
          "unit": "month",
          "usd": 199,
          "note": "40,000 credits."
        },
        {
          "item": "Town Team",
          "unit": "seat-month",
          "usd": 59,
          "note": "6,000 credits a seat, pooled."
        },
        {
          "item": "Town Pro overage",
          "unit": "credit",
          "usd": 0.044,
          "note": "Per credit past the plan allotment."
        }
      ],
      "provenance": {
        "legalEntity": "Town.com, Inc.",
        "domain": "town.com",
        "domainRegistered": "1996-11-13",
        "endpointOnVendorDomain": null,
        "terms": "https://www.town.com/terms-of-service",
        "privacy": "https://www.town.com/privacy-policy",
        "statusPage": "",
        "changelog": "https://www.town.com/updates",
        "securityTxt": "unknown",
        "checked": "2026-10-14",
        "notes": [
          "town.com's robots.txt gives ClaudeBot an allow list of named pages and disallows everything else, so only listed pages were read. security.txt and llms.txt are not on the list and were not requested.",
          "The terms name Town.com, Inc. and were updated on 21 July 2026. Legal contact legal@corp.town.com, support support@corp.town.com.",
          "No status page was found on the pages read.",
          "Webhook URLs are created per routine on Town's own service; their host is not shown in the docs.",
          "RDAP gives a registration date of 1996-11-13 for town.com, which predates the company."
        ],
        "score": 76
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/town.json",
      "live": {
        "slug": "town",
        "securityTxt": {
          "url": "https://town.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-30T15:38:06.450308749Z"
        },
        "domain": {
          "domain": "town.com",
          "registered": "1996-11-13",
          "source": "https://rdap.verisign.com/com/v1/domain/town.com",
          "checkedAt": "2026-10-25T14:05:10.658815214Z"
        },
        "pages": [
          {
            "url": "https://www.town.com/updates",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-30T06:01:48.229753137Z",
            "changedAt": "2026-10-30T06:01:48.229753137Z",
            "fingerprint": "62fda947ba0b"
          },
          {
            "url": "https://www.town.com/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-30T06:01:41.542770458Z",
            "changedAt": "2026-10-27T04:06:31.780854595Z",
            "fingerprint": "c92a0c630e40"
          },
          {
            "url": "https://www.town.com/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-30T06:01:44.182834976Z",
            "changedAt": "2026-10-27T04:06:34.520179089Z",
            "fingerprint": "8ff4974df4b9"
          },
          {
            "url": "https://www.town.com/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-30T06:01:46.175347668Z",
            "changedAt": "2026-10-27T04:06:36.317193177Z",
            "fingerprint": "9d52e5b60ac8"
          }
        ],
        "updatedAt": "2026-10-30T15:38:06.450308749Z"
      }
    },
    "facts": [
      {
        "a": "Agent harness",
        "b": "Platform",
        "name": "Kind"
      },
      {
        "a": "CopilotKit (Tawkit, Inc.)",
        "b": "Town.com, Inc.",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or 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": "Closed service under Town's Terms of Service (Town.com, Inc., updated 21 July 2026).",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "none",
        "b": "2026-10-10",
        "name": "Last release"
      },
      {
        "a": "couldn't be read",
        "b": "2026-07-21",
        "name": "Terms last updated"
      },
      {
        "a": "2026-08-27",
        "b": "2026-07-21",
        "name": "Privacy policy last updated"
      },
      {
        "a": "couldn't be read",
        "b": "yes, with an opt-out",
        "name": "Customer content may train models"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "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": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "1.6k stars",
        "b": "none",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "OpenDuet and Town score within a point of each other on agent readiness, 49.5 (D) and 48.7 (D). Town leads on security \u0026 auth and maintenance \u0026 community.",
        "question": "Which is better for AI agents, OpenDuet or Town?"
      },
      {
        "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 Town.",
        "question": "Are OpenDuet and Town open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 42 against 35",
          "Schema \u0026 documentation, 58 against 33",
          "Transparency \u0026 trust, 68 against 63"
        ],
        "also": [
          "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": [
          "Security \u0026 auth, 79 against 59",
          "Maintenance \u0026 community, 60 against 37"
        ],
        "also": null,
        "goodFor": "An owner who wants a mail and calendar assistant whose routines other systems can trigger.",
        "slug": "town",
        "watchFor": "The privacy policy describes training with an opt-out and the trust page says training is opt-in."
      }
    ],
    "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-town.json",
        "title": "asaply vs Town",
        "url": "https://www.anchorterminal.com/compare/asaply-vs-town"
      },
      {
        "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-town.json",
        "title": "Asmi vs Town",
        "url": "https://www.anchorterminal.com/compare/asmi-vs-town"
      },
      {
        "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-town.json",
        "title": "Boba vs Town",
        "url": "https://www.anchorterminal.com/compare/boba-vs-town"
      },
      {
        "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-town.json",
        "title": "Brea vs Town",
        "url": "https://www.anchorterminal.com/compare/brea-vs-town"
      },
      {
        "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-town.json",
        "title": "Del vs Town",
        "url": "https://www.anchorterminal.com/compare/del-vs-town"
      },
      {
        "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-town.json",
        "title": "HireAlpha vs Town",
        "url": "https://www.anchorterminal.com/compare/hirealpha-vs-town"
      },
      {
        "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-town.json",
        "title": "OpenInstinct vs Town",
        "url": "https://www.anchorterminal.com/compare/openinstinct-vs-town"
      },
      {
        "json": "https://www.anchorterminal.com/compare/orbits-vs-town.json",
        "title": "Orbits vs Town",
        "url": "https://www.anchorterminal.com/compare/orbits-vs-town"
      },
      {
        "json": "https://www.anchorterminal.com/compare/orchid-ai-vs-town.json",
        "title": "Orchid vs Town",
        "url": "https://www.anchorterminal.com/compare/orchid-ai-vs-town"
      },
      {
        "json": "https://www.anchorterminal.com/compare/szn-vs-town.json",
        "title": "szn vs Town",
        "url": "https://www.anchorterminal.com/compare/szn-vs-town"
      },
      {
        "json": "https://www.anchorterminal.com/compare/tab-bot-vs-town.json",
        "title": "Tab vs Town",
        "url": "https://www.anchorterminal.com/compare/tab-bot-vs-town"
      },
      {
        "json": "https://www.anchorterminal.com/compare/tasker-ai-vs-town.json",
        "title": "Tasker AI vs Town",
        "url": "https://www.anchorterminal.com/compare/tasker-ai-vs-town"
      },
      {
        "json": "https://www.anchorterminal.com/compare/town-vs-zapia.json",
        "title": "Town vs Zapia",
        "url": "https://www.anchorterminal.com/compare/town-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-town.json",
        "title": "AstrBot vs Town",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-town"
      },
      {
        "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-town.json",
        "title": "Boski vs Town",
        "url": "https://www.anchorterminal.com/compare/boski-vs-town"
      },
      {
        "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-town.json",
        "title": "Caddy vs Town",
        "url": "https://www.anchorterminal.com/compare/caddy-app-vs-town"
      },
      {
        "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-town.json",
        "title": "Claude Duet vs Town",
        "url": "https://www.anchorterminal.com/compare/claude-duet-vs-town"
      },
      {
        "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-town.json",
        "title": "CowAgent vs Town",
        "url": "https://www.anchorterminal.com/compare/cowagent-vs-town"
      },
      {
        "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-town.json",
        "title": "folk vs Town",
        "url": "https://www.anchorterminal.com/compare/folk-nozomio-vs-town"
      },
      {
        "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-town.json",
        "title": "GAIA vs Town",
        "url": "https://www.anchorterminal.com/compare/gaia-vs-town"
      },
      {
        "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-town.json",
        "title": "Gemini Spark vs Town",
        "url": "https://www.anchorterminal.com/compare/gemini-spark-vs-town"
      },
      {
        "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-town.json",
        "title": "Grok Bot vs Town",
        "url": "https://www.anchorterminal.com/compare/grok-bot-vs-town"
      },
      {
        "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-town.json",
        "title": "Haven vs Town",
        "url": "https://www.anchorterminal.com/compare/haven-vs-town"
      },
      {
        "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-town.json",
        "title": "Hermes Agent vs Town",
        "url": "https://www.anchorterminal.com/compare/hermes-agent-vs-town"
      },
      {
        "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-town.json",
        "title": "Instinct vs Town",
        "url": "https://www.anchorterminal.com/compare/instinct-vs-town"
      },
      {
        "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-town.json",
        "title": "IronClaw vs Town",
        "url": "https://www.anchorterminal.com/compare/ironclaw-vs-town"
      },
      {
        "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-town.json",
        "title": "Leon vs Town",
        "url": "https://www.anchorterminal.com/compare/leon-vs-town"
      },
      {
        "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-town.json",
        "title": "Lindy vs Town",
        "url": "https://www.anchorterminal.com/compare/lindy-vs-town"
      },
      {
        "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-town.json",
        "title": "nanobot vs Town",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-town"
      },
      {
        "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-town.json",
        "title": "NanoClaw vs Town",
        "url": "https://www.anchorterminal.com/compare/nanoclaw-vs-town"
      },
      {
        "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-town.json",
        "title": "Dots vs Town",
        "url": "https://www.anchorterminal.com/compare/openai-dots-vs-town"
      },
      {
        "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-town.json",
        "title": "OpenClaw vs Town",
        "url": "https://www.anchorterminal.com/compare/openclaw-vs-town"
      },
      {
        "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-poke.json",
        "title": "OpenDuet vs Poke",
        "url": "https://www.anchorterminal.com/compare/openduet-vs-poke"
      },
      {
        "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-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-town.json",
        "title": "PicoClaw vs Town",
        "url": "https://www.anchorterminal.com/compare/picoclaw-vs-town"
      },
      {
        "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/qwenpaw-vs-town.json",
        "title": "QwenPaw vs Town",
        "url": "https://www.anchorterminal.com/compare/qwenpaw-vs-town"
      },
      {
        "json": "https://www.anchorterminal.com/compare/town-vs-zeroclaw.json",
        "title": "Town vs ZeroClaw",
        "url": "https://www.anchorterminal.com/compare/town-vs-zeroclaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/town-vs-zo-computer.json",
        "title": "Town vs Zo Computer",
        "url": "https://www.anchorterminal.com/compare/town-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-town.json",
        "title": "Atticus vs Town",
        "url": "https://www.anchorterminal.com/compare/atticus-vs-town"
      },
      {
        "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-town.json",
        "title": "DeepTutor vs Town",
        "url": "https://www.anchorterminal.com/compare/deeptutor-vs-town"
      },
      {
        "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-town.json",
        "title": "Hark Pro vs Town",
        "url": "https://www.anchorterminal.com/compare/hark-pro-vs-town"
      },
      {
        "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-town.json",
        "title": "LearnHarness vs Town",
        "url": "https://www.anchorterminal.com/compare/learnharness-vs-town"
      },
      {
        "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/talorys-vs-town.json",
        "title": "Talorys vs Town",
        "url": "https://www.anchorterminal.com/compare/talorys-vs-town"
      },
      {
        "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-town.json",
        "title": "Lobby vs Town",
        "url": "https://www.anchorterminal.com/compare/lobby-os-vs-town"
      },
      {
        "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-town.json",
        "title": "Natura tinyNature vs Town",
        "url": "https://www.anchorterminal.com/compare/natura-vs-town"
      },
      {
        "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-town.json",
        "title": "Pally vs Town",
        "url": "https://www.anchorterminal.com/compare/pally-vs-town"
      },
      {
        "json": "https://www.anchorterminal.com/compare/tomo-vs-town.json",
        "title": "Tomo vs Town",
        "url": "https://www.anchorterminal.com/compare/tomo-vs-town"
      },
      {
        "json": "https://www.anchorterminal.com/compare/town-vs-wajo.json",
        "title": "Town vs Wajo (Fo)",
        "url": "https://www.anchorterminal.com/compare/town-vs-wajo"
      }
    ],
    "scores": [
      {
        "by": 7,
        "edge": "openduet",
        "key": "reliability",
        "name": "Reliability",
        "openduet": 42,
        "town": 35,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 25,
        "edge": "openduet",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "openduet": 58,
        "town": 33,
        "weight": 13
      },
      {
        "by": 3,
        "edge": "openduet",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "openduet": 52,
        "town": 49,
        "weight": 13
      },
      {
        "by": 20,
        "edge": "town",
        "key": "security",
        "name": "Security \u0026 auth",
        "openduet": 59,
        "town": 79,
        "weight": 14
      },
      {
        "by": 0,
        "edge": "",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "openduet": 30,
        "town": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 23,
        "edge": "town",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "openduet": 37,
        "town": 60,
        "weight": 7
      },
      {
        "by": 5,
        "edge": "openduet",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "openduet": 68,
        "town": 63,
        "weight": 7
      }
    ],
    "summary": "OpenDuet and Town score within a point of each other on agent readiness, 49.5 (D) and 48.7 (D). Town leads on security \u0026 auth and maintenance \u0026 community. 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.",
      "town": "Town is a hosted assistant that works across the owner's mail, calendar and work apps, and other systems can start its routines through per-routine webhooks with rotatable secrets, idempotency keys and documented errors. A caller can't read a run's result. The privacy policy and trust page disagree on whether training is on by default."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/openduet-vs-town",
    "json": "https://www.anchorterminal.com/compare/openduet-vs-town.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/openduet-vs-town.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/openduet-vs-town.min.md"
  },
  "markdown": "OpenDuet and Town score within a point of each other on agent readiness, 49.5 (D) and 48.7 (D). Town leads on security \u0026 auth and maintenance \u0026 community. 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- Town: grade D, 48.7/100, rank #982 of 1239. Markdown https://www.anchorterminal.com/tools/town.md · JSON https://www.anchorterminal.com/api/v1/tools/town.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- Reliability, 42 against 35\n- Schema \u0026 documentation, 58 against 33\n- Transparency \u0026 trust, 68 against 63\n\nAlso in its favour:\n- Open source\n\nWatch for: No release, tag, published image or deploy guide; the README marks it early development\n\n### Town (D)\n\nGood for: An owner who wants a mail and calendar assistant whose routines other systems can trigger.\n\nAhead on:\n- Security \u0026 auth, 79 against 59\n- Maintenance \u0026 community, 60 against 37\n\nWatch for: The privacy policy describes training with an opt-out and the trust page says training is opt-in.\n\n\n## Score by category\n\n| Category | Weight | OpenDuet | Town | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 42 | 35 | OpenDuet +7 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 58 | 33 | OpenDuet +25 |\n| Agent ergonomics | 13% (16.2 this run) | 52 | 49 | OpenDuet +3 |\n| Security \u0026 auth | 14% (17.5 this run) | 59 | 79 | Town +20 |\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 | 60 | Town +23 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 68 | 63 | OpenDuet +5 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **49.5 · D** | **48.7 · D** | |\n\n## Facts side by side\n\n| Fact | OpenDuet | Town |\n| --- | --- | --- |\n| Kind | Agent harness | Platform |\n| Vendor | CopilotKit (Tawkit, Inc.) | Town.com, Inc. |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports |  | HTTP |\n| Auth | OAuth or key | OAuth or 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 | Closed service under Town's Terms of Service (Town.com, Inc., updated 21 July 2026). |\n| Read-only variant documented | no | yes |\n| llms.txt | no | no |\n| Last release | none | 2026-10-10 |\n| Terms last updated | couldn't be read | 2026-07-21 |\n| Privacy policy last updated | 2026-08-27 | 2026-07-21 |\n| Customer content may train models | couldn't be read | yes, with an opt-out |\n| Terms restrict automated access | couldn't be read | yes |\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 | yes |\n| Popularity | 1.6k stars | none |\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**Town.** Town is a hosted assistant that works across the owner's mail, calendar and work apps, and other systems can start its routines through per-routine webhooks with rotatable secrets, idempotency keys and documented errors. A caller can't read a run's result. The privacy policy and trust page disagree on whether training is on by default.\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### Town\n\n1. Start a Town routine with POST to its webhook URL, Authorization Bearer whsec_ secret, and application/json or text/plain. Expect 202 only.\n2. Send X-Town-Idempotency-Key with a stable event id on every retry so Town doesn't start a second run.\n3. Treat 404 as wrong secret, disabled endpoint or missing endpoint alike, and ask the owner to check Routine Settings rather than retrying.\n4. Send account_email only if the owner allowed the override. It must match a connected account in full and can't widen the routine's scope.\n5. Ask the owner to keep routines that act on webhook input in approval-required mode, as Town's own docs advise.\n\n## Questions\n\n### Which is better for AI agents, OpenDuet or Town?\n\nOpenDuet and Town score within a point of each other on agent readiness, 49.5 (D) and 48.7 (D). Town leads on security \u0026 auth and maintenance \u0026 community.\n\n### Are OpenDuet and Town 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 Town.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/openduet-vs-town.json, and with the fewest tokens: https://www.anchorterminal.com/compare/openduet-vs-town.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"openduet\", \"b\": \"town\"}`. From a terminal: `anchor compare openduet town`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/openduet.json and https://www.anchorterminal.com/api/v1/tools/town.json\n\n## Other comparisons with OpenDuet or Town\n\n- [asaply vs OpenDuet](https://www.anchorterminal.com/compare/asaply-vs-openduet.md)\n- [asaply vs Town](https://www.anchorterminal.com/compare/asaply-vs-town.md)\n- [Asmi vs OpenDuet](https://www.anchorterminal.com/compare/asmi-vs-openduet.md)\n- [Asmi vs Town](https://www.anchorterminal.com/compare/asmi-vs-town.md)\n- [Boba vs OpenDuet](https://www.anchorterminal.com/compare/boba-vs-openduet.md)\n- [Boba vs Town](https://www.anchorterminal.com/compare/boba-vs-town.md)\n- [Brea vs OpenDuet](https://www.anchorterminal.com/compare/brea-vs-openduet.md)\n- [Brea vs Town](https://www.anchorterminal.com/compare/brea-vs-town.md)\n- [Del vs OpenDuet](https://www.anchorterminal.com/compare/del-vs-openduet.md)\n- [Del vs Town](https://www.anchorterminal.com/compare/del-vs-town.md)\n- [HireAlpha vs OpenDuet](https://www.anchorterminal.com/compare/hirealpha-vs-openduet.md)\n- [HireAlpha vs Town](https://www.anchorterminal.com/compare/hirealpha-vs-town.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 Town](https://www.anchorterminal.com/compare/openinstinct-vs-town.md)\n- [Orbits vs Town](https://www.anchorterminal.com/compare/orbits-vs-town.md)\n- [Orchid vs Town](https://www.anchorterminal.com/compare/orchid-ai-vs-town.md)\n- [szn vs Town](https://www.anchorterminal.com/compare/szn-vs-town.md)\n- [Tab vs Town](https://www.anchorterminal.com/compare/tab-bot-vs-town.md)\n- [Tasker AI vs Town](https://www.anchorterminal.com/compare/tasker-ai-vs-town.md)\n- [Town vs Zapia](https://www.anchorterminal.com/compare/town-vs-zapia.md)\n- [AstrBot vs OpenDuet](https://www.anchorterminal.com/compare/astrbot-vs-openduet.md)\n- [AstrBot vs Town](https://www.anchorterminal.com/compare/astrbot-vs-town.md)\n- [Boski vs OpenDuet](https://www.anchorterminal.com/compare/boski-vs-openduet.md)\n- [Boski vs Town](https://www.anchorterminal.com/compare/boski-vs-town.md)\n- [Caddy vs OpenDuet](https://www.anchorterminal.com/compare/caddy-app-vs-openduet.md)\n- [Caddy vs Town](https://www.anchorterminal.com/compare/caddy-app-vs-town.md)\n- [Claude Duet vs OpenDuet](https://www.anchorterminal.com/compare/claude-duet-vs-openduet.md)\n- [Claude Duet vs Town](https://www.anchorterminal.com/compare/claude-duet-vs-town.md)\n- [CowAgent vs OpenDuet](https://www.anchorterminal.com/compare/cowagent-vs-openduet.md)\n- [CowAgent vs Town](https://www.anchorterminal.com/compare/cowagent-vs-town.md)\n- [folk vs OpenDuet](https://www.anchorterminal.com/compare/folk-nozomio-vs-openduet.md)\n- [folk vs Town](https://www.anchorterminal.com/compare/folk-nozomio-vs-town.md)\n- [GAIA vs OpenDuet](https://www.anchorterminal.com/compare/gaia-vs-openduet.md)\n- [GAIA vs Town](https://www.anchorterminal.com/compare/gaia-vs-town.md)\n- [Gemini Spark vs OpenDuet](https://www.anchorterminal.com/compare/gemini-spark-vs-openduet.md)\n- [Gemini Spark vs Town](https://www.anchorterminal.com/compare/gemini-spark-vs-town.md)\n- [Grok Bot vs OpenDuet](https://www.anchorterminal.com/compare/grok-bot-vs-openduet.md)\n- [Grok Bot vs Town](https://www.anchorterminal.com/compare/grok-bot-vs-town.md)\n- [Haven vs OpenDuet](https://www.anchorterminal.com/compare/haven-vs-openduet.md)\n- [Haven vs Town](https://www.anchorterminal.com/compare/haven-vs-town.md)\n- [Hermes Agent vs OpenDuet](https://www.anchorterminal.com/compare/hermes-agent-vs-openduet.md)\n- [Hermes Agent vs Town](https://www.anchorterminal.com/compare/hermes-agent-vs-town.md)\n- [Instinct vs OpenDuet](https://www.anchorterminal.com/compare/instinct-vs-openduet.md)\n- [Instinct vs Town](https://www.anchorterminal.com/compare/instinct-vs-town.md)\n- [IronClaw vs OpenDuet](https://www.anchorterminal.com/compare/ironclaw-vs-openduet.md)\n- [IronClaw vs Town](https://www.anchorterminal.com/compare/ironclaw-vs-town.md)\n- [Leon vs OpenDuet](https://www.anchorterminal.com/compare/leon-vs-openduet.md)\n- [Leon vs Town](https://www.anchorterminal.com/compare/leon-vs-town.md)\n- [Lindy vs OpenDuet](https://www.anchorterminal.com/compare/lindy-vs-openduet.md)\n- [Lindy vs Town](https://www.anchorterminal.com/compare/lindy-vs-town.md)\n- [nanobot vs OpenDuet](https://www.anchorterminal.com/compare/nanobot-vs-openduet.md)\n- [nanobot vs Town](https://www.anchorterminal.com/compare/nanobot-vs-town.md)\n- [NanoClaw vs OpenDuet](https://www.anchorterminal.com/compare/nanoclaw-vs-openduet.md)\n- [NanoClaw vs Town](https://www.anchorterminal.com/compare/nanoclaw-vs-town.md)\n- [Dots vs OpenDuet](https://www.anchorterminal.com/compare/openai-dots-vs-openduet.md)\n- [Dots vs Town](https://www.anchorterminal.com/compare/openai-dots-vs-town.md)\n- [OpenClaw vs OpenDuet](https://www.anchorterminal.com/compare/openclaw-vs-openduet.md)\n- [OpenClaw vs Town](https://www.anchorterminal.com/compare/openclaw-vs-town.md)\n- [OpenDuet vs PicoClaw](https://www.anchorterminal.com/compare/openduet-vs-picoclaw.md)\n- [OpenDuet vs Poke](https://www.anchorterminal.com/compare/openduet-vs-poke.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 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 Town](https://www.anchorterminal.com/compare/picoclaw-vs-town.md)\n- [Poke vs Town](https://www.anchorterminal.com/compare/poke-vs-town.md)\n- [QwenPaw vs Town](https://www.anchorterminal.com/compare/qwenpaw-vs-town.md)\n- [Town vs ZeroClaw](https://www.anchorterminal.com/compare/town-vs-zeroclaw.md)\n- [Town vs Zo Computer](https://www.anchorterminal.com/compare/town-vs-zo-computer.md)\n- [Atticus vs OpenDuet](https://www.anchorterminal.com/compare/atticus-vs-openduet.md)\n- [Atticus vs Town](https://www.anchorterminal.com/compare/atticus-vs-town.md)\n- [DeepTutor vs OpenDuet](https://www.anchorterminal.com/compare/deeptutor-vs-openduet.md)\n- [DeepTutor vs Town](https://www.anchorterminal.com/compare/deeptutor-vs-town.md)\n- [Hark Pro vs OpenDuet](https://www.anchorterminal.com/compare/hark-pro-vs-openduet.md)\n- [Hark Pro vs Town](https://www.anchorterminal.com/compare/hark-pro-vs-town.md)\n- [LearnHarness vs OpenDuet](https://www.anchorterminal.com/compare/learnharness-vs-openduet.md)\n- [LearnHarness vs Town](https://www.anchorterminal.com/compare/learnharness-vs-town.md)\n- [OpenDuet vs Talorys](https://www.anchorterminal.com/compare/openduet-vs-talorys.md)\n- [Talorys vs Town](https://www.anchorterminal.com/compare/talorys-vs-town.md)\n- [Lobby vs OpenDuet](https://www.anchorterminal.com/compare/lobby-os-vs-openduet.md)\n- [Lobby vs Town](https://www.anchorterminal.com/compare/lobby-os-vs-town.md)\n- [Natura tinyNature vs OpenDuet](https://www.anchorterminal.com/compare/natura-vs-openduet.md)\n- [Natura tinyNature vs Town](https://www.anchorterminal.com/compare/natura-vs-town.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 Town](https://www.anchorterminal.com/compare/pally-vs-town.md)\n- [Tomo vs Town](https://www.anchorterminal.com/compare/tomo-vs-town.md)\n- [Town vs Wajo (Fo)](https://www.anchorterminal.com/compare/town-vs-wajo.md)\n\n## Disclosure\n\n- Town competes with LocalGhost, which Anchor Terminal's founder builds. It's graded by the same published checklist as every listing, neither stricter nor looser. Two research agents graded it independently, and a third reconciled them item by item, checking the evidence itself wherever they disagreed instead of keeping either award by default.\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 Town",
        "url": ""
      }
    ],
    "description": "OpenDuet and Town score within a point of each other for proactive personal assistants, 49.5 and 48.7 out of 100. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "OpenDuet D 49.5",
      "Town D 48.7",
      "scores"
    ],
    "h1": "OpenDuet vs Town",
    "image": "https://www.anchorterminal.com/assets/og/compare-openduet-vs-town.png",
    "path": "/compare/openduet-vs-town",
    "published": "2026-10-01",
    "section": "tools",
    "title": "OpenDuet vs Town for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-30",
    "url": "https://www.anchorterminal.com/compare/openduet-vs-town"
  },
  "tokens": {
    "markdown": 3900,
    "slim": 680
  },
  "version": 1
}
