{
  "data": {
    "a": {
      "slug": "nanobot",
      "name": "nanobot",
      "vendor": "HKUDS",
      "vendorUrl": "https://nanobot.wiki",
      "kind": "harness",
      "category": "personal-assistants",
      "summary": "nanobot is an open-source, self-hosted personal AI agent written in Python by HKUDS. It runs as a gateway on the owner's machine and answers in a web UI, a terminal and chat apps, with tools, memory and scheduled automations.",
      "url": "https://www.anchorterminal.com/tools/nanobot",
      "markdownUrl": "https://www.anchorterminal.com/tools/nanobot.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/nanobot.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/nanobot.json",
      "repo": "https://github.com/HKUDS/nanobot",
      "license": "MIT",
      "transports": [],
      "packages": [
        {
          "registry": "pypi",
          "name": "nanobot-ai"
        }
      ],
      "auth": "none",
      "authNotes": "No account with the project. The owner supplies model provider keys or an OAuth sign-in, and bot tokens or mailbox passwords for each channel, in `~/.nanobot/config.json`. The WebUI on localhost needs no password, and binding to all interfaces requires a token.",
      "pricing": "free",
      "pricingNotes": "Free under the MIT licence, with nothing to buy from the project. The owner pays the model provider, or nothing with a local model. The optional Render deployment needs a paid Render service.",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs or the source (checked 2026-10-12).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 49000,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-12"
      },
      "docsUrl": "https://nanobot.wiki/docs/latest/getting-started/nanobot-overview",
      "llmsTxt": "https://nanobot.wiki/llms.txt",
      "capabilities": [
        "assistant.proactive",
        "assistant.messaging",
        "assistant.memory",
        "assistant.self-hosted",
        "assistant.accounts",
        "agent.mcp-client"
      ],
      "tags": [
        "open-source",
        "self-hosted",
        "local",
        "free",
        "python",
        "mit",
        "llms-txt",
        "docker",
        "alpha"
      ],
      "lastRelease": "2026-09-15",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 63,
        "grade": "B",
        "agentReady": false,
        "rank": 483,
        "ranked": true,
        "rankOf": 1239,
        "categoryRank": 6,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 74,
          "maintenance": 82,
          "payments": 60,
          "reliability": 70,
          "schema": 77,
          "security": 63,
          "transparency": 54
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-12"
        },
        "negative": -6,
        "negativeNotes": [
          "2026-09-02. GHSA-vc5v-6vwm-wf9m (critical, 9.3, no CVE). Web fetch did not block internal addresses, so cloud metadata and internal services could be read without authentication in versions before 0.3.0. Fixed in 0.3.0 of 25 July and published, -2. https://github.com/HKUDS/nanobot/security/advisories/GHSA-vc5v-6vwm-wf9m",
          "2026-03-27. GHSA-4gmr-2vc8-7qh3 (CVE-2026-33654, high). A spoofed email could inject instructions through email polling with no user action, up to command execution, in 0.1.4.post5 and earlier. Fixed in 0.1.4.post6 and published, more than six months ago, -2. https://github.com/HKUDS/nanobot/security/advisories/GHSA-4gmr-2vc8-7qh3",
          "2026-03-11. GHSA-g6cf-xjwr-pm77 (CVE-2026-31977, critical, 9.0). A sender ID containing `|` passed the `allowFrom` check in versions before 0.1.4.post4. Fixed and published, more than six months ago, -1. https://github.com/HKUDS/nanobot/security/advisories/GHSA-g6cf-xjwr-pm77",
          "2026-04-14 and 2026-05-24. GHSA-v5j3-4q66-58cf (CVE-2026-35589, high, 8.0), cross-site WebSocket hijacking of the WhatsApp bridge, fixed in 0.1.5, and GHSA-3f63-vcp3-hvqr (CVE-2026-48716, high, 8.7), file write through a WhatsApp document name. Both fixed and published, -1 together. https://github.com/HKUDS/nanobot/security/advisories"
        ],
        "verdict": "nanobot runs on the owner's machine under the MIT licence, with no telemetry found in its source and memory kept as files the owner can read and restore. No per-action approval step was found, and the shell sandbox and workspace restriction are off by default. Five security advisories were published between March and September 2026, all with fixes.",
        "bestFor": "A technical owner who wants an assistant on their own machine across many chat apps, with file-based memory and a free choice of model.",
        "strengths": [
          "MIT licence, runs on the owner's machine, and no telemetry code was found in the source at v0.3.5",
          "Long-term memory is plain files (`USER.md`, `SOUL.md`, `memory/MEMORY.md`) versioned with Git, with `/dream-log` and `/dream-restore` to inspect and roll back",
          "Chat channels deny unknown senders by default since v0.1.4.post4, with pairing codes the owner approves",
          "Email requires SPF and DKIM results from a named receiving service since v0.3.5, and mailbox access stays off until `consentGranted` is set",
          "Optional `bwrap` (Linux) and `seatbelt` (macOS) sandboxes for shell commands, and an SSRF guard on web fetches and HTTP MCP connections"
        ],
        "weaknesses": [
          "No per-action approval was found in the docs or source. The agent sends messages, runs shell commands and edits files without asking",
          "`tools.restrictToWorkspace` defaults to false and `tools.exec.sandbox` to empty. Neither sandbox restricts network access, and Windows has none",
          "Five advisories published from 11 March to 2 September 2026, two rated critical, among them an allowlist bypass and unauthenticated SSRF in web fetch",
          "SECURITY.md lists plain-text API keys in `config.json`, no rate limiting and limited security event logging as known limitations",
          "Version 0.3.5 with an Alpha classifier, 214 open issues and 614 open pull requests on 12 October 2026"
        ],
        "agentNotes": [
          "Set `tools.restrictToWorkspace` to true and `tools.exec.sandbox` to `bwrap` or `seatbelt` before giving it real accounts. Both are off by default",
          "Run 0.3.0 or later. Earlier versions carry the published SSRF flaw in web fetch (GHSA-vc5v-6vwm-wf9m)",
          "Keep `allowFrom` narrow on every channel and never set `[\"*\"]` on Email, which has no pairing",
          "Write secrets as `${VAR}` references in `~/.nanobot/config.json`. Plain values are stored in clear text",
          "Use `nanobot -m \"...\"` for a one-shot run, and keep `nanobot gateway` running for channels, schedules and heartbeat"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 2.8,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 63
          }
        ],
        "editorialScores": {
          "ergonomics": 74,
          "maintenance": 82,
          "payments": 60,
          "reliability": 70,
          "schema": 77,
          "security": 63,
          "transparency": 69
        },
        "provenanceScore": 39,
        "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-28",
          "oldest": "2026-10-12",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "python -m pip install nanobot-ai   # or: uv tool install nanobot-ai   # then: nanobot webui",
        "headless": {
          "command": "nanobot -m \"$TASK\""
        }
      },
      "letme": {
        "capability": "https://letme.dev/assistant.proactive",
        "tool": "https://letme.dev/nanobot"
      },
      "area": "frameworks",
      "provenance": {
        "legalEntity": "",
        "domain": "nanobot.wiki",
        "domainRegistered": "",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/HKUDS/nanobot/releases",
        "securityTxt": "none",
        "checked": "2026-10-12",
        "notes": [
          "No legal entity is named. The repository belongs to the GitHub organisation HKUDS, which a published advisory title calls the Hong Kong University Data Intelligence Lab. pyproject.toml names Xubin Ren and the nanobot contributors as authors.",
          "nanobot.wiki has no terms or privacy page linked from its home page or llms.txt, and `/.well-known/security.txt` answered with the site's not-found page on 12 October 2026.",
          "SECURITY.md in the repository asks for reports through a private GitHub advisory or by email and aims to respond within 48 hours.",
          "There is no hosted endpoint. A gateway answers on its owner's own host."
        ],
        "score": 39
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/nanobot.json",
      "live": {
        "slug": "nanobot",
        "versions": [
          {
            "registry": "github",
            "name": "HKUDS/nanobot",
            "version": "v0.4.0",
            "released": "2026-10-28",
            "seenAt": "2026-10-30T14:30:52.791114257Z"
          },
          {
            "registry": "pypi",
            "name": "nanobot-ai",
            "version": "0.4.0",
            "released": "2026-10-28",
            "seenAt": "2026-10-30T14:30:52.678796813Z"
          }
        ],
        "githubStars": 49676,
        "pypiWeekly": 18002,
        "securityTxt": {
          "url": "https://nanobot.wiki/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-30T15:38:50.619828306Z"
        },
        "llmsTxt": {
          "url": "https://nanobot.wiki/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-30T15:08:10.426226137Z"
        },
        "domain": {
          "domain": "nanobot.wiki",
          "registered": "2026-03-31",
          "source": "https://rdap.nic.wiki/domain/nanobot.wiki",
          "checkedAt": "2026-10-25T13:56:13.32227892Z"
        },
        "github": {
          "repo": "hkuds/nanobot",
          "checkedAt": "2026-10-26T07:33:57.056306741Z",
          "stars": 49357,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-26T07:23:55Z",
          "openIssues": 209,
          "openPRs": 657,
          "issuesOpened90d": 171,
          "issuesClosed90d": 142,
          "prsMerged90d": 769,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 38,
            "failure": 12,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-10-26T07:32:15Z"
          },
          "advisories": [
            {
              "ghsa": "GHSA-vc5v-6vwm-wf9m",
              "severity": "critical",
              "published": "2026-09-02T02:03:45Z"
            },
            {
              "ghsa": "GHSA-3f63-vcp3-hvqr",
              "cve": "CVE-2026-48716",
              "severity": "high",
              "published": "2026-05-24T16:08:58Z"
            },
            {
              "ghsa": "GHSA-v5j3-4q66-58cf",
              "cve": "CVE-2026-35589",
              "severity": "high",
              "published": "2026-04-14T20:00:28Z"
            },
            {
              "ghsa": "GHSA-4gmr-2vc8-7qh3",
              "cve": "CVE-2026-33654",
              "severity": "high",
              "published": "2026-03-27T15:13:47Z"
            },
            {
              "ghsa": "GHSA-g6cf-xjwr-pm77",
              "cve": "CVE-2026-31977",
              "severity": "critical",
              "published": "2026-03-11T07:02:19Z"
            }
          ],
          "replies": {
            "sampled": 25,
            "unanswered": 9,
            "medianDays": 1.6
          }
        },
        "updatedAt": "2026-10-30T15:38:50.619828306Z"
      }
    },
    "answer": "nanobot scores 63 (B) on agent readiness against OpenDuet's 49.5 (D), and leads in 6 of 7 scored categories. OpenDuet leads on transparency \u0026 trust.",
    "b": {
      "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"
    },
    "facts": [
      {
        "a": "Agent harness",
        "b": "Agent harness",
        "name": "Kind"
      },
      {
        "a": "HKUDS",
        "b": "CopilotKit (Tawkit, Inc.)",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "",
        "name": "Transports"
      },
      {
        "a": "None",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT",
        "b": "MIT. Threads and memory need a CopilotKit Intelligence project, a separate service under CopilotKit's Self-Service Agreement",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-15",
        "b": "none",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "couldn't be read",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "2026-08-27",
        "name": "Privacy policy last updated"
      },
      {
        "a": "",
        "b": "couldn't be read",
        "name": "Customer content may train models"
      },
      {
        "a": "",
        "b": "couldn't be read",
        "name": "Terms restrict automated access"
      },
      {
        "a": "",
        "b": "couldn't be read",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "",
        "b": "couldn't be read",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "",
        "b": "couldn't be read",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "49k stars",
        "b": "1.6k stars",
        "name": "Popularity"
      },
      {
        "a": "2.8/5 (4)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "nanobot scores 63 (B) on agent readiness against OpenDuet's 49.5 (D), and leads in 6 of 7 scored categories. OpenDuet leads on transparency \u0026 trust.",
        "question": "Which is better for AI agents, nanobot or OpenDuet?"
      },
      {
        "answer": "Yes. nanobot is open source (MIT). OpenDuet is open source (MIT. Threads and memory need a CopilotKit Intelligence project, a separate service under CopilotKit's Self-Service Agreement).",
        "question": "Are nanobot and OpenDuet open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 70 against 42",
          "Schema \u0026 documentation, 77 against 58",
          "Agent ergonomics, 74 against 52",
          "Payments \u0026 pricing, 60 against 30",
          "Maintenance \u0026 community, 82 against 37"
        ],
        "also": [
          "No key needed to call it"
        ],
        "goodFor": "A technical owner who wants an assistant on their own machine across many chat apps, with file-based memory and a free choice of model.",
        "slug": "nanobot",
        "watchFor": "No per-action approval was found in the docs or source. The agent sends messages, runs shell commands and edits files without asking"
      },
      {
        "aheadOn": [
          "Transparency \u0026 trust, 68 against 54"
        ],
        "also": [
          "Free to start without a card",
          "No incidents deducted, where nanobot loses 6 points for them"
        ],
        "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"
      }
    ],
    "job": {
      "capability": "assistant.proactive",
      "name": "Proactive personal assistants"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/asaply-vs-nanobot.json",
        "title": "asaply vs nanobot",
        "url": "https://www.anchorterminal.com/compare/asaply-vs-nanobot"
      },
      {
        "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/asmi-vs-nanobot.json",
        "title": "Asmi vs nanobot",
        "url": "https://www.anchorterminal.com/compare/asmi-vs-nanobot"
      },
      {
        "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/boba-vs-nanobot.json",
        "title": "Boba vs nanobot",
        "url": "https://www.anchorterminal.com/compare/boba-vs-nanobot"
      },
      {
        "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/brea-vs-nanobot.json",
        "title": "Brea vs nanobot",
        "url": "https://www.anchorterminal.com/compare/brea-vs-nanobot"
      },
      {
        "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/del-vs-nanobot.json",
        "title": "Del vs nanobot",
        "url": "https://www.anchorterminal.com/compare/del-vs-nanobot"
      },
      {
        "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/hirealpha-vs-nanobot.json",
        "title": "HireAlpha vs nanobot",
        "url": "https://www.anchorterminal.com/compare/hirealpha-vs-nanobot"
      },
      {
        "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/nanobot-vs-openinstinct.json",
        "title": "nanobot vs OpenInstinct",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-openinstinct"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nanobot-vs-orbits.json",
        "title": "nanobot vs Orbits",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-orbits"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nanobot-vs-orchid-ai.json",
        "title": "nanobot vs Orchid",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-orchid-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nanobot-vs-szn.json",
        "title": "nanobot vs szn",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-szn"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nanobot-vs-tab-bot.json",
        "title": "nanobot vs Tab",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-tab-bot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nanobot-vs-zapia.json",
        "title": "nanobot vs Zapia",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-zapia"
      },
      {
        "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/astrbot-vs-nanobot.json",
        "title": "AstrBot vs nanobot",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-nanobot"
      },
      {
        "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/boski-vs-nanobot.json",
        "title": "Boski vs nanobot",
        "url": "https://www.anchorterminal.com/compare/boski-vs-nanobot"
      },
      {
        "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/caddy-app-vs-nanobot.json",
        "title": "Caddy vs nanobot",
        "url": "https://www.anchorterminal.com/compare/caddy-app-vs-nanobot"
      },
      {
        "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/claude-duet-vs-nanobot.json",
        "title": "Claude Duet vs nanobot",
        "url": "https://www.anchorterminal.com/compare/claude-duet-vs-nanobot"
      },
      {
        "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/cowagent-vs-nanobot.json",
        "title": "CowAgent vs nanobot",
        "url": "https://www.anchorterminal.com/compare/cowagent-vs-nanobot"
      },
      {
        "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/folk-nozomio-vs-nanobot.json",
        "title": "folk vs nanobot",
        "url": "https://www.anchorterminal.com/compare/folk-nozomio-vs-nanobot"
      },
      {
        "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/gaia-vs-nanobot.json",
        "title": "GAIA vs nanobot",
        "url": "https://www.anchorterminal.com/compare/gaia-vs-nanobot"
      },
      {
        "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/gemini-spark-vs-nanobot.json",
        "title": "Gemini Spark vs nanobot",
        "url": "https://www.anchorterminal.com/compare/gemini-spark-vs-nanobot"
      },
      {
        "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/grok-bot-vs-nanobot.json",
        "title": "Grok Bot vs nanobot",
        "url": "https://www.anchorterminal.com/compare/grok-bot-vs-nanobot"
      },
      {
        "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/haven-vs-nanobot.json",
        "title": "Haven vs nanobot",
        "url": "https://www.anchorterminal.com/compare/haven-vs-nanobot"
      },
      {
        "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/hermes-agent-vs-nanobot.json",
        "title": "Hermes Agent vs nanobot",
        "url": "https://www.anchorterminal.com/compare/hermes-agent-vs-nanobot"
      },
      {
        "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/instinct-vs-nanobot.json",
        "title": "Instinct vs nanobot",
        "url": "https://www.anchorterminal.com/compare/instinct-vs-nanobot"
      },
      {
        "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/ironclaw-vs-nanobot.json",
        "title": "IronClaw vs nanobot",
        "url": "https://www.anchorterminal.com/compare/ironclaw-vs-nanobot"
      },
      {
        "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/leon-vs-nanobot.json",
        "title": "Leon vs nanobot",
        "url": "https://www.anchorterminal.com/compare/leon-vs-nanobot"
      },
      {
        "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/lindy-vs-nanobot.json",
        "title": "Lindy vs nanobot",
        "url": "https://www.anchorterminal.com/compare/lindy-vs-nanobot"
      },
      {
        "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/nanobot-vs-nanoclaw.json",
        "title": "nanobot vs NanoClaw",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-nanoclaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nanobot-vs-openai-dots.json",
        "title": "nanobot vs Dots",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-openai-dots"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nanobot-vs-openclaw.json",
        "title": "nanobot vs OpenClaw",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-openclaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nanobot-vs-picoclaw.json",
        "title": "nanobot vs PicoClaw",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-picoclaw"
      },
      {
        "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/nanobot-vs-qwenpaw.json",
        "title": "nanobot vs QwenPaw",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-qwenpaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nanobot-vs-tasker-ai.json",
        "title": "nanobot vs Tasker AI",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-tasker-ai"
      },
      {
        "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/nanobot-vs-zeroclaw.json",
        "title": "nanobot vs ZeroClaw",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-zeroclaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nanobot-vs-zo-computer.json",
        "title": "nanobot vs Zo Computer",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-zo-computer"
      },
      {
        "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/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/openclaw-vs-openduet.json",
        "title": "OpenClaw vs OpenDuet",
        "url": "https://www.anchorterminal.com/compare/openclaw-vs-openduet"
      },
      {
        "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-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/atticus-vs-nanobot.json",
        "title": "Atticus vs nanobot",
        "url": "https://www.anchorterminal.com/compare/atticus-vs-nanobot"
      },
      {
        "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/deeptutor-vs-nanobot.json",
        "title": "DeepTutor vs nanobot",
        "url": "https://www.anchorterminal.com/compare/deeptutor-vs-nanobot"
      },
      {
        "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/hark-pro-vs-nanobot.json",
        "title": "Hark Pro vs nanobot",
        "url": "https://www.anchorterminal.com/compare/hark-pro-vs-nanobot"
      },
      {
        "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/learnharness-vs-nanobot.json",
        "title": "LearnHarness vs nanobot",
        "url": "https://www.anchorterminal.com/compare/learnharness-vs-nanobot"
      },
      {
        "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/nanobot-vs-talorys.json",
        "title": "nanobot vs Talorys",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-talorys"
      },
      {
        "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/lobby-os-vs-nanobot.json",
        "title": "Lobby vs nanobot",
        "url": "https://www.anchorterminal.com/compare/lobby-os-vs-nanobot"
      },
      {
        "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/nanobot-vs-natura.json",
        "title": "nanobot vs Natura tinyNature",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-natura"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nanobot-vs-pally.json",
        "title": "nanobot vs Pally",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-pally"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nanobot-vs-tomo.json",
        "title": "nanobot vs Tomo",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-tomo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nanobot-vs-wajo.json",
        "title": "nanobot vs Wajo (Fo)",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-wajo"
      },
      {
        "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/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"
      }
    ],
    "scores": [
      {
        "by": 28,
        "edge": "nanobot",
        "key": "reliability",
        "name": "Reliability",
        "nanobot": 70,
        "openduet": 42,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 19,
        "edge": "nanobot",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "nanobot": 77,
        "openduet": 58,
        "weight": 13
      },
      {
        "by": 22,
        "edge": "nanobot",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "nanobot": 74,
        "openduet": 52,
        "weight": 13
      },
      {
        "by": 4,
        "edge": "nanobot",
        "key": "security",
        "name": "Security \u0026 auth",
        "nanobot": 63,
        "openduet": 59,
        "weight": 14
      },
      {
        "by": 30,
        "edge": "nanobot",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "nanobot": 60,
        "openduet": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 45,
        "edge": "nanobot",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "nanobot": 82,
        "openduet": 37,
        "weight": 7
      },
      {
        "by": 14,
        "edge": "openduet",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "nanobot": 54,
        "openduet": 68,
        "weight": 7
      }
    ],
    "summary": "nanobot scores 63 (B) on agent readiness against OpenDuet's 49.5 (D), and leads in 6 of 7 scored categories. OpenDuet leads on transparency \u0026 trust. Both do proactive personal assistants.",
    "tutorials": [],
    "verdicts": {
      "nanobot": "nanobot runs on the owner's machine under the MIT licence, with no telemetry found in its source and memory kept as files the owner can read and restore. No per-action approval step was found, and the shell sandbox and workspace restriction are off by default. Five security advisories were published between March and September 2026, all with fixes.",
      "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/nanobot-vs-openduet",
    "json": "https://www.anchorterminal.com/compare/nanobot-vs-openduet.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/nanobot-vs-openduet.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/nanobot-vs-openduet.min.md"
  },
  "markdown": "nanobot scores 63 (B) on agent readiness against OpenDuet's 49.5 (D), and leads in 6 of 7 scored categories. OpenDuet leads on transparency \u0026 trust. Both do proactive personal assistants.\n\n- nanobot: grade B, 63/100, rank #483 of 1239. Markdown https://www.anchorterminal.com/tools/nanobot.md · JSON https://www.anchorterminal.com/api/v1/tools/nanobot.json\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- 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### nanobot (B)\n\nGood for: A technical owner who wants an assistant on their own machine across many chat apps, with file-based memory and a free choice of model.\n\nAhead on:\n- Reliability, 70 against 42\n- Schema \u0026 documentation, 77 against 58\n- Agent ergonomics, 74 against 52\n- Payments \u0026 pricing, 60 against 30\n- Maintenance \u0026 community, 82 against 37\n\nAlso in its favour:\n- No key needed to call it\n\nWatch for: No per-action approval was found in the docs or source. The agent sends messages, runs shell commands and edits files without asking\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- Transparency \u0026 trust, 68 against 54\n\nAlso in its favour:\n- Free to start without a card\n- No incidents deducted, where nanobot loses 6 points for them\n\nWatch for: No release, tag, published image or deploy guide; the README marks it early development\n\n\n## Score by category\n\n| Category | Weight | nanobot | OpenDuet | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 70 | 42 | nanobot +28 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 77 | 58 | nanobot +19 |\n| Agent ergonomics | 13% (16.2 this run) | 74 | 52 | nanobot +22 |\n| Security \u0026 auth | 14% (17.5 this run) | 63 | 59 | nanobot +4 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 30 | nanobot +30 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 82 | 37 | nanobot +45 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 54 | 68 | OpenDuet +14 |\n| Negative events | ≤15 | -6 | 0 | |\n| **Total** | | **63 · B** | **49.5 · D** | |\n\n## Facts side by side\n\n| Fact | nanobot | OpenDuet |\n| --- | --- | --- |\n| Kind | Agent harness | Agent harness |\n| Vendor | HKUDS | CopilotKit (Tawkit, Inc.) |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports |  |  |\n| Auth | None | OAuth or key |\n| Pricing | Free | Freemium |\n| x402 | no | no |\n| Licence | MIT | MIT. Threads and memory need a CopilotKit Intelligence project, a separate service under CopilotKit's Self-Service Agreement |\n| Read-only variant documented | no | no |\n| llms.txt | yes | no |\n| Last release | 2026-09-15 | none |\n| Terms last updated | no document linked | couldn't be read |\n| Privacy policy last updated | no document linked | 2026-08-27 |\n| Customer content may train models |  | couldn't be read |\n| Terms restrict automated access |  | couldn't be read |\n| Terms restrict benchmarking |  | couldn't be read |\n| Terms or service can change without notice |  | couldn't be read |\n| Arbitration or class-action waiver |  | couldn't be read |\n| Popularity | 49k stars | 1.6k stars |\n| Agent reviews | 2.8/5 (4) | none |\n\n## Verdicts\n\n**nanobot.** nanobot runs on the owner's machine under the MIT licence, with no telemetry found in its source and memory kept as files the owner can read and restore. No per-action approval step was found, and the shell sandbox and workspace restriction are off by default. Five security advisories were published between March and September 2026, all with fixes.\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## Before you call either\n\n### nanobot\n\n1. Set `tools.restrictToWorkspace` to true and `tools.exec.sandbox` to `bwrap` or `seatbelt` before giving it real accounts. Both are off by default\n2. Run 0.3.0 or later. Earlier versions carry the published SSRF flaw in web fetch (GHSA-vc5v-6vwm-wf9m)\n3. Keep `allowFrom` narrow on every channel and never set `[\"*\"]` on Email, which has no pairing\n4. Write secrets as `${VAR}` references in `~/.nanobot/config.json`. Plain values are stored in clear text\n5. Use `nanobot -m \"...\"` for a one-shot run, and keep `nanobot gateway` running for channels, schedules and heartbeat\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## Questions\n\n### Which is better for AI agents, nanobot or OpenDuet?\n\nnanobot scores 63 (B) on agent readiness against OpenDuet's 49.5 (D), and leads in 6 of 7 scored categories. OpenDuet leads on transparency \u0026 trust.\n\n### Are nanobot and OpenDuet open source?\n\nYes. nanobot is open source (MIT). OpenDuet is open source (MIT. Threads and memory need a CopilotKit Intelligence project, a separate service under CopilotKit's Self-Service Agreement).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/nanobot-vs-openduet.json, and with the fewest tokens: https://www.anchorterminal.com/compare/nanobot-vs-openduet.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"nanobot\", \"b\": \"openduet\"}`. From a terminal: `anchor compare nanobot openduet`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/nanobot.json and https://www.anchorterminal.com/api/v1/tools/openduet.json\n\n## Other comparisons with nanobot or OpenDuet\n\n- [asaply vs nanobot](https://www.anchorterminal.com/compare/asaply-vs-nanobot.md)\n- [asaply vs OpenDuet](https://www.anchorterminal.com/compare/asaply-vs-openduet.md)\n- [Asmi vs nanobot](https://www.anchorterminal.com/compare/asmi-vs-nanobot.md)\n- [Asmi vs OpenDuet](https://www.anchorterminal.com/compare/asmi-vs-openduet.md)\n- [Boba vs nanobot](https://www.anchorterminal.com/compare/boba-vs-nanobot.md)\n- [Boba vs OpenDuet](https://www.anchorterminal.com/compare/boba-vs-openduet.md)\n- [Brea vs nanobot](https://www.anchorterminal.com/compare/brea-vs-nanobot.md)\n- [Brea vs OpenDuet](https://www.anchorterminal.com/compare/brea-vs-openduet.md)\n- [Del vs nanobot](https://www.anchorterminal.com/compare/del-vs-nanobot.md)\n- [Del vs OpenDuet](https://www.anchorterminal.com/compare/del-vs-openduet.md)\n- [HireAlpha vs nanobot](https://www.anchorterminal.com/compare/hirealpha-vs-nanobot.md)\n- [HireAlpha vs OpenDuet](https://www.anchorterminal.com/compare/hirealpha-vs-openduet.md)\n- [nanobot vs OpenInstinct](https://www.anchorterminal.com/compare/nanobot-vs-openinstinct.md)\n- [nanobot vs Orbits](https://www.anchorterminal.com/compare/nanobot-vs-orbits.md)\n- [nanobot vs Orchid](https://www.anchorterminal.com/compare/nanobot-vs-orchid-ai.md)\n- [nanobot vs szn](https://www.anchorterminal.com/compare/nanobot-vs-szn.md)\n- [nanobot vs Tab](https://www.anchorterminal.com/compare/nanobot-vs-tab-bot.md)\n- [nanobot vs Zapia](https://www.anchorterminal.com/compare/nanobot-vs-zapia.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- [AstrBot vs nanobot](https://www.anchorterminal.com/compare/astrbot-vs-nanobot.md)\n- [AstrBot vs OpenDuet](https://www.anchorterminal.com/compare/astrbot-vs-openduet.md)\n- [Boski vs nanobot](https://www.anchorterminal.com/compare/boski-vs-nanobot.md)\n- [Boski vs OpenDuet](https://www.anchorterminal.com/compare/boski-vs-openduet.md)\n- [Caddy vs nanobot](https://www.anchorterminal.com/compare/caddy-app-vs-nanobot.md)\n- [Caddy vs OpenDuet](https://www.anchorterminal.com/compare/caddy-app-vs-openduet.md)\n- [Claude Duet vs nanobot](https://www.anchorterminal.com/compare/claude-duet-vs-nanobot.md)\n- [Claude Duet vs OpenDuet](https://www.anchorterminal.com/compare/claude-duet-vs-openduet.md)\n- [CowAgent vs nanobot](https://www.anchorterminal.com/compare/cowagent-vs-nanobot.md)\n- [CowAgent vs OpenDuet](https://www.anchorterminal.com/compare/cowagent-vs-openduet.md)\n- [folk vs nanobot](https://www.anchorterminal.com/compare/folk-nozomio-vs-nanobot.md)\n- [folk vs OpenDuet](https://www.anchorterminal.com/compare/folk-nozomio-vs-openduet.md)\n- [GAIA vs nanobot](https://www.anchorterminal.com/compare/gaia-vs-nanobot.md)\n- [GAIA vs OpenDuet](https://www.anchorterminal.com/compare/gaia-vs-openduet.md)\n- [Gemini Spark vs nanobot](https://www.anchorterminal.com/compare/gemini-spark-vs-nanobot.md)\n- [Gemini Spark vs OpenDuet](https://www.anchorterminal.com/compare/gemini-spark-vs-openduet.md)\n- [Grok Bot vs nanobot](https://www.anchorterminal.com/compare/grok-bot-vs-nanobot.md)\n- [Grok Bot vs OpenDuet](https://www.anchorterminal.com/compare/grok-bot-vs-openduet.md)\n- [Haven vs nanobot](https://www.anchorterminal.com/compare/haven-vs-nanobot.md)\n- [Haven vs OpenDuet](https://www.anchorterminal.com/compare/haven-vs-openduet.md)\n- [Hermes Agent vs nanobot](https://www.anchorterminal.com/compare/hermes-agent-vs-nanobot.md)\n- [Hermes Agent vs OpenDuet](https://www.anchorterminal.com/compare/hermes-agent-vs-openduet.md)\n- [Instinct vs nanobot](https://www.anchorterminal.com/compare/instinct-vs-nanobot.md)\n- [Instinct vs OpenDuet](https://www.anchorterminal.com/compare/instinct-vs-openduet.md)\n- [IronClaw vs nanobot](https://www.anchorterminal.com/compare/ironclaw-vs-nanobot.md)\n- [IronClaw vs OpenDuet](https://www.anchorterminal.com/compare/ironclaw-vs-openduet.md)\n- [Leon vs nanobot](https://www.anchorterminal.com/compare/leon-vs-nanobot.md)\n- [Leon vs OpenDuet](https://www.anchorterminal.com/compare/leon-vs-openduet.md)\n- [Lindy vs nanobot](https://www.anchorterminal.com/compare/lindy-vs-nanobot.md)\n- [Lindy vs OpenDuet](https://www.anchorterminal.com/compare/lindy-vs-openduet.md)\n- [nanobot vs NanoClaw](https://www.anchorterminal.com/compare/nanobot-vs-nanoclaw.md)\n- [nanobot vs Dots](https://www.anchorterminal.com/compare/nanobot-vs-openai-dots.md)\n- [nanobot vs OpenClaw](https://www.anchorterminal.com/compare/nanobot-vs-openclaw.md)\n- [nanobot vs PicoClaw](https://www.anchorterminal.com/compare/nanobot-vs-picoclaw.md)\n- [nanobot vs Poke](https://www.anchorterminal.com/compare/nanobot-vs-poke.md)\n- [nanobot vs QwenPaw](https://www.anchorterminal.com/compare/nanobot-vs-qwenpaw.md)\n- [nanobot vs Tasker AI](https://www.anchorterminal.com/compare/nanobot-vs-tasker-ai.md)\n- [nanobot vs Town](https://www.anchorterminal.com/compare/nanobot-vs-town.md)\n- [nanobot vs ZeroClaw](https://www.anchorterminal.com/compare/nanobot-vs-zeroclaw.md)\n- [nanobot vs Zo Computer](https://www.anchorterminal.com/compare/nanobot-vs-zo-computer.md)\n- [NanoClaw vs OpenDuet](https://www.anchorterminal.com/compare/nanoclaw-vs-openduet.md)\n- [Dots vs OpenDuet](https://www.anchorterminal.com/compare/openai-dots-vs-openduet.md)\n- [OpenClaw vs OpenDuet](https://www.anchorterminal.com/compare/openclaw-vs-openduet.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 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- [Atticus vs nanobot](https://www.anchorterminal.com/compare/atticus-vs-nanobot.md)\n- [Atticus vs OpenDuet](https://www.anchorterminal.com/compare/atticus-vs-openduet.md)\n- [DeepTutor vs nanobot](https://www.anchorterminal.com/compare/deeptutor-vs-nanobot.md)\n- [DeepTutor vs OpenDuet](https://www.anchorterminal.com/compare/deeptutor-vs-openduet.md)\n- [Hark Pro vs nanobot](https://www.anchorterminal.com/compare/hark-pro-vs-nanobot.md)\n- [Hark Pro vs OpenDuet](https://www.anchorterminal.com/compare/hark-pro-vs-openduet.md)\n- [LearnHarness vs nanobot](https://www.anchorterminal.com/compare/learnharness-vs-nanobot.md)\n- [LearnHarness vs OpenDuet](https://www.anchorterminal.com/compare/learnharness-vs-openduet.md)\n- [nanobot vs Talorys](https://www.anchorterminal.com/compare/nanobot-vs-talorys.md)\n- [OpenDuet vs Talorys](https://www.anchorterminal.com/compare/openduet-vs-talorys.md)\n- [Lobby vs nanobot](https://www.anchorterminal.com/compare/lobby-os-vs-nanobot.md)\n- [Lobby vs OpenDuet](https://www.anchorterminal.com/compare/lobby-os-vs-openduet.md)\n- [nanobot vs Natura tinyNature](https://www.anchorterminal.com/compare/nanobot-vs-natura.md)\n- [nanobot vs Pally](https://www.anchorterminal.com/compare/nanobot-vs-pally.md)\n- [nanobot vs Tomo](https://www.anchorterminal.com/compare/nanobot-vs-tomo.md)\n- [nanobot vs Wajo (Fo)](https://www.anchorterminal.com/compare/nanobot-vs-wajo.md)\n- [Natura tinyNature vs OpenDuet](https://www.anchorterminal.com/compare/natura-vs-openduet.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",
  "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": "nanobot vs OpenDuet",
        "url": ""
      }
    ],
    "description": "nanobot scores 63 (B) to OpenDuet's 49.5 (D) for proactive personal assistants. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "nanobot B 63",
      "OpenDuet D 49.5",
      "scores"
    ],
    "h1": "nanobot vs OpenDuet",
    "image": "https://www.anchorterminal.com/assets/og/compare-nanobot-vs-openduet.png",
    "path": "/compare/nanobot-vs-openduet",
    "published": "2026-10-01",
    "section": "tools",
    "title": "nanobot vs OpenDuet for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-30",
    "url": "https://www.anchorterminal.com/compare/nanobot-vs-openduet"
  },
  "tokens": {
    "markdown": 3900,
    "slim": 730
  },
  "version": 1
}
