{
  "data": {
    "a": {
      "slug": "astrbot",
      "name": "AstrBot",
      "vendor": "AstrBotDevs",
      "vendorUrl": "https://astrbot.app",
      "kind": "harness",
      "category": "personal-assistants",
      "summary": "AstrBot is an open-source chatbot and agent program that the owner runs and connects to messaging platforms such as QQ, Telegram, Slack, Discord, Lark and WeCom, with scheduled tasks, MCP tools, plugins and a web admin panel.",
      "url": "https://www.anchorterminal.com/tools/astrbot",
      "markdownUrl": "https://www.anchorterminal.com/tools/astrbot.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/astrbot.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/astrbot.json",
      "repo": "https://github.com/AstrBotDevs/AstrBot",
      "license": "AGPL-3.0-or-later",
      "transports": [],
      "packages": [
        {
          "registry": "pypi",
          "name": "astrbot"
        },
        {
          "registry": "oci",
          "name": "soulter/astrbot"
        }
      ],
      "auth": "mixed",
      "authNotes": "No account with the project. The web panel signs in with the user `astrbot` and a random initial password printed in the startup log, with optional TOTP and a login rate limit (https://github.com/AstrBotDevs/AstrBot/blob/master/docs/en/use/webui.md). Outside programs use `abk_` API keys created in Settings, OpenAPI, sent as `Authorization: Bearer` or `X-API-Key`, limited by 11 scopes and two sensitive sub-scopes and stored as PBKDF2 hashes (https://github.com/AstrBotDevs/AstrBot/blob/master/docs/en/dev/openapi.md). Messaging platform tokens and model provider keys are entered in the panel and kept in `data/cmd_config.json`.",
      "pricing": "free",
      "pricingNotes": "Free under AGPL-3.0 with nothing to buy. The EULA says the team sells no service and that a request for payment is a likely scam (https://github.com/AstrBotDevs/AstrBot/blob/master/EULA.md). The owner pays the model provider and any search or sandbox service, or nothing with a local model. The README links a paid third-party cloud host and several model resellers through referral links (checked 2026-10-12).",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, the OpenAPI file or the source (checked 2026-10-12).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 41800,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-12"
      },
      "docsUrl": "https://docs.astrbot.app",
      "openapi": "https://github.com/AstrBotDevs/AstrBot/blob/master/docs/public/openapi.json",
      "capabilities": [
        "assistant.proactive",
        "assistant.messaging",
        "assistant.self-hosted",
        "agent.mcp-client"
      ],
      "tags": [
        "open-source",
        "self-hosted",
        "free",
        "no-card",
        "python",
        "docker",
        "openapi",
        "agpl",
        "telemetry-default-on"
      ],
      "lastRelease": "2026-09-27",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 58.8,
        "grade": "C",
        "agentReady": false,
        "rank": 585,
        "ranked": true,
        "rankOf": 1010,
        "categoryRank": 8,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 54,
          "maintenance": 81,
          "payments": 60,
          "reliability": 81,
          "schema": 62,
          "security": 44,
          "transparency": 40
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-12"
        },
        "negative": -2,
        "negativeNotes": [
          "2025-11-14. GHSA-4m32-cjv7-f425 (CVE-2025-55449, critical, 9.8), a hard-coded JWT signing key that let an unauthenticated attacker install a plugin and run commands on any reachable instance at 3.5.17 or earlier. Patched in 3.5.18 on 21 June 2025 and published five months later, inside the last 12 months. Fixed and documented, so the deduction decays to -2. https://github.com/AstrBotDevs/AstrBot/security/advisories/GHSA-4m32-cjv7-f425"
        ],
        "verdict": "Fourteen official messaging adapters, scheduled tasks and scoped API keys come in one AGPL-3.0 program with releases most weeks. No tool call asks for approval, no mail, calendar or long-term memory connector is built in, and usage statistics, including the machine's hostname, are sent by default.",
        "bestFor": "Someone who wants one self-run bot answering on QQ, Telegram, Slack, Discord, Lark or WeCom, in private or group chats, with scheduled tasks, a knowledge base and plugins.",
        "strengths": [
          "Official adapters for 14 messaging platforms in the README table, among them QQ, Telegram, Slack, Discord, LINE, Lark, DingTalk and WeCom",
          "Agent shell, Python and file tools are off by default (`computer_use_runtime` is `none`) and limited to administrators when turned on",
          "HTTP API under `/api/v1` with a published OpenAPI file of 170 paths and API keys limited by 11 scopes, stored as PBKDF2 hashes",
          "About 15 tagged releases in the 90 days to 12 October 2026, each with a dated changelog file in English and Chinese",
          "Unit tests run on Linux, macOS and Windows, and the last master runs we saw on 12 October 2026 passed"
        ],
        "weaknesses": [
          "No approval step before any tool call. The agent sends messages, creates scheduled tasks and calls MCP tools without asking",
          "No built-in mail, calendar or file-account connector and no long-term memory of the owner. Both depend on third-party plugins or MCP servers",
          "Usage statistics are on by default and include the hostname and an installation ID, while the EULA says nothing personally identifiable is collected",
          "The web panel listens on 0.0.0.0 by default, and the repository has no SECURITY.md or security.txt",
          "No prompt-injection guidance found, although group messages, web pages and MCP results all reach the model"
        ],
        "agentNotes": [
          "Set `ASTRBOT_DISABLE_METRICS=1` before the first start. Statistics, including the hostname, are sent to tickstats.soulter.top by default",
          "Set `dashboard.host` to 127.0.0.1 in `data/cmd_config.json`, or the `DASHBOARD_HOST` variable, unless remote access is intended. The default is 0.0.0.0",
          "Create an `abk_` key in Settings, OpenAPI with only the scopes needed, and send it as `Authorization: Bearer` or `X-API-Key`",
          "Include `username` in every `POST /api/v1/chat` body. Without the `chat:admin` scope an administrator ID is rejected",
          "Check Extensions, Future Tasks after asking for a schedule. One-off tasks are deleted after their run even when the run fails"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 58.8
          }
        ],
        "editorialScores": {
          "ergonomics": 54,
          "maintenance": 81,
          "payments": 60,
          "reliability": 81,
          "schema": 62,
          "security": 44,
          "transparency": 56
        },
        "provenanceScore": 23
      },
      "connect": {
        "install": "uv tool install astrbot --python 3.12 \u0026\u0026 astrbot init \u0026\u0026 astrbot run",
        "http": "curl -N 'http://localhost:6185/api/v1/chat' -H 'Authorization: Bearer abk_xxx' -H 'Content-Type: application/json' -d '{\"message\":\"Hello\",\"username\":\"alice\"}'"
      },
      "letme": {
        "capability": "https://letme.dev/assistant.proactive",
        "tool": "https://letme.dev/astrbot"
      },
      "area": "frameworks",
      "provenance": {
        "legalEntity": "",
        "domain": "astrbot.app",
        "domainRegistered": "",
        "endpointOnVendorDomain": null,
        "terms": "https://github.com/AstrBotDevs/AstrBot/blob/master/EULA.md",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/AstrBotDevs/AstrBot/releases",
        "securityTxt": "none",
        "checked": "2026-10-12",
        "notes": [
          "No legal entity was found. The docs call AstrBot a non-profit project under the AstrBotDevs organisation, and the EULA speaks for the AstrBot Team.",
          "The EULA in the repository (last updated 12 January 2026) is the only terms document found. Its section 8 is the only privacy statement, so no privacy link is given.",
          "astrbot.app answers every path, robots.txt and `/.well-known/security.txt` included, with the same script-drawn page, so the site has no robots rules and no security.txt. docs.astrbot.app answers 404 for security.txt and llms.txt.",
          "GitHub says the project has not set up a SECURITY.md. A Report a vulnerability button is shown and two advisories are published.",
          "Usage statistics go to tickstats.soulter.top, a host outside the project's domain.",
          "The domain's registration date was not looked up."
        ],
        "score": 23
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/astrbot.json",
      "live": {
        "slug": "astrbot",
        "versions": [
          {
            "registry": "github",
            "name": "AstrBotDevs/AstrBot",
            "version": "v4.29.0-beta.2",
            "released": "2026-10-10",
            "seenAt": "2026-10-13T22:43:58.500463184Z"
          },
          {
            "registry": "pypi",
            "name": "astrbot",
            "version": "4.28.2",
            "released": "2026-09-27",
            "seenAt": "2026-10-13T22:43:58.308766583Z"
          }
        ],
        "githubStars": 41835,
        "pypiWeekly": 3300,
        "securityTxt": {
          "url": "https://astrbot.app/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-13T15:44:56.06140622Z"
        },
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/AstrBotDevs/AstrBot/master/EULA.md",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-13T20:22:03.850902381Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "7ae5843e8a0a"
          }
        ],
        "updatedAt": "2026-10-13T22:43:58.500463184Z"
      }
    },
    "answer": "AstrBot scores 58.8 (C) on agent readiness against Town's 48.7 (D), and leads in 5 of 7 scored categories. Town leads on security \u0026 auth and transparency \u0026 trust.",
    "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": 834,
        "ranked": true,
        "rankOf": 1010,
        "categoryRank": 12,
        "methodology": "0.4",
        "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.4",
            "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
      },
      "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"
    },
    "facts": [
      {
        "a": "Agent harness",
        "b": "Platform",
        "name": "Kind"
      },
      {
        "a": "AstrBotDevs",
        "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": "Free",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "AGPL-3.0-or-later",
        "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": "2026-09-27",
        "b": "2026-10-10",
        "name": "Last release"
      },
      {
        "a": "2026-01-12",
        "b": "",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "42k stars",
        "b": "none",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "AstrBot scores 58.8 (C) on agent readiness against Town's 48.7 (D), and leads in 5 of 7 scored categories. Town leads on security \u0026 auth and transparency \u0026 trust.",
        "question": "Which is better for AI agents, AstrBot or Town?"
      },
      {
        "answer": "AstrBot is open source (AGPL-3.0-or-later). No open-source release is listed for Town.",
        "question": "Are AstrBot and Town open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 81 against 35",
          "Schema \u0026 documentation, 62 against 33",
          "Agent ergonomics, 54 against 49",
          "Payments \u0026 pricing, 60 against 30",
          "Maintenance \u0026 community, 81 against 60"
        ],
        "also": [
          "Open source"
        ],
        "goodFor": "Someone who wants one self-run bot answering on QQ, Telegram, Slack, Discord, Lark or WeCom, in private or group chats, with scheduled tasks, a knowledge base and plugins.",
        "slug": "astrbot",
        "watchFor": "No approval step before any tool call. The agent sends messages, creates scheduled tasks and calls MCP tools without asking"
      },
      {
        "aheadOn": [
          "Security \u0026 auth, 79 against 44",
          "Transparency \u0026 trust, 63 against 40"
        ],
        "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-astrbot.json",
        "title": "asaply vs AstrBot",
        "url": "https://www.anchorterminal.com/compare/asaply-vs-astrbot"
      },
      {
        "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-astrbot.json",
        "title": "Asmi vs AstrBot",
        "url": "https://www.anchorterminal.com/compare/asmi-vs-astrbot"
      },
      {
        "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/astrbot-vs-boba.json",
        "title": "AstrBot vs Boba",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-boba"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-brea.json",
        "title": "AstrBot vs Brea",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-brea"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-del.json",
        "title": "AstrBot vs Del",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-del"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-hirealpha.json",
        "title": "AstrBot vs HireAlpha",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-hirealpha"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-natura.json",
        "title": "AstrBot vs Natura tinyNature",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-natura"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-openinstinct.json",
        "title": "AstrBot vs OpenInstinct",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-openinstinct"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-orbits.json",
        "title": "AstrBot vs Orbits",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-orbits"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-orchid-ai.json",
        "title": "AstrBot vs Orchid",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-orchid-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-pally.json",
        "title": "AstrBot vs Pally",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-pally"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-szn.json",
        "title": "AstrBot vs szn",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-szn"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-tab-bot.json",
        "title": "AstrBot vs Tab",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-tab-bot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-tomo.json",
        "title": "AstrBot vs Tomo",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-tomo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-zapia.json",
        "title": "AstrBot vs Zapia",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-zapia"
      },
      {
        "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-town.json",
        "title": "Brea vs Town",
        "url": "https://www.anchorterminal.com/compare/brea-vs-town"
      },
      {
        "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-town.json",
        "title": "HireAlpha vs Town",
        "url": "https://www.anchorterminal.com/compare/hirealpha-vs-town"
      },
      {
        "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/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-boski.json",
        "title": "AstrBot vs Boski",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-boski"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-caddy-app.json",
        "title": "AstrBot vs Caddy",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-caddy-app"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-cowagent.json",
        "title": "AstrBot vs CowAgent",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-cowagent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-folk-nozomio.json",
        "title": "AstrBot vs folk",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-folk-nozomio"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-gaia.json",
        "title": "AstrBot vs GAIA",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-gaia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-gemini-spark.json",
        "title": "AstrBot vs Gemini Spark",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-gemini-spark"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-grok-bot.json",
        "title": "AstrBot vs Grok Bot",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-grok-bot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-haven.json",
        "title": "AstrBot vs Haven",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-haven"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-hermes-agent.json",
        "title": "AstrBot vs Hermes Agent",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-hermes-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-instinct.json",
        "title": "AstrBot vs Instinct",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-instinct"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-ironclaw.json",
        "title": "AstrBot vs IronClaw",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-ironclaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-leon.json",
        "title": "AstrBot vs Leon",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-leon"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-lindy.json",
        "title": "AstrBot vs Lindy",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-lindy"
      },
      {
        "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-nanoclaw.json",
        "title": "AstrBot vs NanoClaw",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-nanoclaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-openai-dots.json",
        "title": "AstrBot vs Dots",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-openai-dots"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-openclaw.json",
        "title": "AstrBot vs OpenClaw",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-openclaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-picoclaw.json",
        "title": "AstrBot vs PicoClaw",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-picoclaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-poke.json",
        "title": "AstrBot vs Poke",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-poke"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-qwenpaw.json",
        "title": "AstrBot vs QwenPaw",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-qwenpaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-zeroclaw.json",
        "title": "AstrBot vs ZeroClaw",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-zeroclaw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/astrbot-vs-zo-computer.json",
        "title": "AstrBot vs Zo Computer",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-zo-computer"
      },
      {
        "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-town.json",
        "title": "Caddy vs Town",
        "url": "https://www.anchorterminal.com/compare/caddy-app-vs-town"
      },
      {
        "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-town.json",
        "title": "folk vs Town",
        "url": "https://www.anchorterminal.com/compare/folk-nozomio-vs-town"
      },
      {
        "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-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-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-town.json",
        "title": "Haven vs Town",
        "url": "https://www.anchorterminal.com/compare/haven-vs-town"
      },
      {
        "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-town.json",
        "title": "Instinct vs Town",
        "url": "https://www.anchorterminal.com/compare/instinct-vs-town"
      },
      {
        "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-town.json",
        "title": "Leon vs Town",
        "url": "https://www.anchorterminal.com/compare/leon-vs-town"
      },
      {
        "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-town.json",
        "title": "nanobot vs Town",
        "url": "https://www.anchorterminal.com/compare/nanobot-vs-town"
      },
      {
        "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-town.json",
        "title": "Dots vs Town",
        "url": "https://www.anchorterminal.com/compare/openai-dots-vs-town"
      },
      {
        "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/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/natura-vs-town.json",
        "title": "Natura tinyNature vs Town",
        "url": "https://www.anchorterminal.com/compare/natura-vs-town"
      },
      {
        "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"
      },
      {
        "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/astrbot-vs-talorys.json",
        "title": "AstrBot vs Talorys",
        "url": "https://www.anchorterminal.com/compare/astrbot-vs-talorys"
      }
    ],
    "scores": [
      {
        "astrbot": 81,
        "by": 46,
        "edge": "astrbot",
        "key": "reliability",
        "name": "Reliability",
        "town": 35,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "astrbot": 62,
        "by": 29,
        "edge": "astrbot",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "town": 33,
        "weight": 13
      },
      {
        "astrbot": 54,
        "by": 5,
        "edge": "astrbot",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "town": 49,
        "weight": 13
      },
      {
        "astrbot": 44,
        "by": 35,
        "edge": "town",
        "key": "security",
        "name": "Security \u0026 auth",
        "town": 79,
        "weight": 14
      },
      {
        "astrbot": 60,
        "by": 30,
        "edge": "astrbot",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "town": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "astrbot": 81,
        "by": 21,
        "edge": "astrbot",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "town": 60,
        "weight": 7
      },
      {
        "astrbot": 40,
        "by": 23,
        "edge": "town",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "town": 63,
        "weight": 7
      }
    ],
    "summary": "AstrBot scores 58.8 (C) on agent readiness against Town's 48.7 (D), and leads in 5 of 7 scored categories. Town leads on security \u0026 auth and transparency \u0026 trust. Both do proactive personal assistants.",
    "verdicts": {
      "astrbot": "Fourteen official messaging adapters, scheduled tasks and scoped API keys come in one AGPL-3.0 program with releases most weeks. No tool call asks for approval, no mail, calendar or long-term memory connector is built in, and usage statistics, including the machine's hostname, are sent by default.",
      "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/astrbot-vs-town",
    "json": "https://www.anchorterminal.com/compare/astrbot-vs-town.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/astrbot-vs-town.md",
    "slim": "https://www.anchorterminal.com/compare/astrbot-vs-town.min.md"
  },
  "markdown": "AstrBot scores 58.8 (C) on agent readiness against Town's 48.7 (D), and leads in 5 of 7 scored categories. Town leads on security \u0026 auth and transparency \u0026 trust. Both do proactive personal assistants.\n\n- AstrBot: grade C, 58.8/100, rank #585 of 1010. Markdown https://www.anchorterminal.com/tools/astrbot.md · JSON https://www.anchorterminal.com/api/v1/tools/astrbot.json\n- Town: grade D, 48.7/100, rank #834 of 1010. 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 834 assistants comparisons: https://www.anchorterminal.com/compare/personal-assistants/index.md\n\n## Which one, for what\n\n### AstrBot (C)\n\nGood for: Someone who wants one self-run bot answering on QQ, Telegram, Slack, Discord, Lark or WeCom, in private or group chats, with scheduled tasks, a knowledge base and plugins.\n\nAhead on:\n- Reliability, 81 against 35\n- Schema \u0026 documentation, 62 against 33\n- Agent ergonomics, 54 against 49\n- Payments \u0026 pricing, 60 against 30\n- Maintenance \u0026 community, 81 against 60\n\nAlso in its favour:\n- Open source\n\nWatch for: No approval step before any tool call. The agent sends messages, creates scheduled tasks and calls MCP tools without asking\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 44\n- Transparency \u0026 trust, 63 against 40\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 | AstrBot | Town | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 81 | 35 | AstrBot +46 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 62 | 33 | AstrBot +29 |\n| Agent ergonomics | 13% (16.2 this run) | 54 | 49 | AstrBot +5 |\n| Security \u0026 auth | 14% (17.5 this run) | 44 | 79 | Town +35 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 30 | AstrBot +30 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 81 | 60 | AstrBot +21 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 40 | 63 | Town +23 |\n| Negative events | ≤15 | -2 | 0 | |\n| **Total** | | **58.8 · C** | **48.7 · D** | |\n\n## Facts side by side\n\n| Fact | AstrBot | Town |\n| --- | --- | --- |\n| Kind | Agent harness | Platform |\n| Vendor | AstrBotDevs | 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 | Free | Freemium |\n| x402 | no | no |\n| Licence | AGPL-3.0-or-later | 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 | 2026-09-27 | 2026-10-10 |\n| Terms last updated | 2026-01-12 |  |\n| Privacy policy last updated | no document linked |  |\n| Customer content may train models | not found in the text |  |\n| Terms restrict automated access | not found in the text |  |\n| Terms restrict benchmarking | not found in the text |  |\n| Terms or service can change without notice | not found in the text |  |\n| Arbitration or class-action waiver | not found in the text |  |\n| Popularity | 42k stars | none |\n\n## Verdicts\n\n**AstrBot.** Fourteen official messaging adapters, scheduled tasks and scoped API keys come in one AGPL-3.0 program with releases most weeks. No tool call asks for approval, no mail, calendar or long-term memory connector is built in, and usage statistics, including the machine's hostname, are sent by default.\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### AstrBot\n\n1. Set `ASTRBOT_DISABLE_METRICS=1` before the first start. Statistics, including the hostname, are sent to tickstats.soulter.top by default\n2. Set `dashboard.host` to 127.0.0.1 in `data/cmd_config.json`, or the `DASHBOARD_HOST` variable, unless remote access is intended. The default is 0.0.0.0\n3. Create an `abk_` key in Settings, OpenAPI with only the scopes needed, and send it as `Authorization: Bearer` or `X-API-Key`\n4. Include `username` in every `POST /api/v1/chat` body. Without the `chat:admin` scope an administrator ID is rejected\n5. Check Extensions, Future Tasks after asking for a schedule. One-off tasks are deleted after their run even when the run fails\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, AstrBot or Town?\n\nAstrBot scores 58.8 (C) on agent readiness against Town's 48.7 (D), and leads in 5 of 7 scored categories. Town leads on security \u0026 auth and transparency \u0026 trust.\n\n### Are AstrBot and Town open source?\n\nAstrBot is open source (AGPL-3.0-or-later). No open-source release is listed for Town.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/astrbot-vs-town.json, and with the fewest tokens: https://www.anchorterminal.com/compare/astrbot-vs-town.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"astrbot\", \"b\": \"town\"}`. From a terminal: `anchor compare astrbot town`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/astrbot.json and https://www.anchorterminal.com/api/v1/tools/town.json\n\n## Other comparisons with AstrBot or Town\n\n- [asaply vs AstrBot](https://www.anchorterminal.com/compare/asaply-vs-astrbot.md)\n- [asaply vs Town](https://www.anchorterminal.com/compare/asaply-vs-town.md)\n- [Asmi vs AstrBot](https://www.anchorterminal.com/compare/asmi-vs-astrbot.md)\n- [Asmi vs Town](https://www.anchorterminal.com/compare/asmi-vs-town.md)\n- [AstrBot vs Boba](https://www.anchorterminal.com/compare/astrbot-vs-boba.md)\n- [AstrBot vs Brea](https://www.anchorterminal.com/compare/astrbot-vs-brea.md)\n- [AstrBot vs Del](https://www.anchorterminal.com/compare/astrbot-vs-del.md)\n- [AstrBot vs HireAlpha](https://www.anchorterminal.com/compare/astrbot-vs-hirealpha.md)\n- [AstrBot vs Natura tinyNature](https://www.anchorterminal.com/compare/astrbot-vs-natura.md)\n- [AstrBot vs OpenInstinct](https://www.anchorterminal.com/compare/astrbot-vs-openinstinct.md)\n- [AstrBot vs Orbits](https://www.anchorterminal.com/compare/astrbot-vs-orbits.md)\n- [AstrBot vs Orchid](https://www.anchorterminal.com/compare/astrbot-vs-orchid-ai.md)\n- [AstrBot vs Pally](https://www.anchorterminal.com/compare/astrbot-vs-pally.md)\n- [AstrBot vs szn](https://www.anchorterminal.com/compare/astrbot-vs-szn.md)\n- [AstrBot vs Tab](https://www.anchorterminal.com/compare/astrbot-vs-tab-bot.md)\n- [AstrBot vs Tomo](https://www.anchorterminal.com/compare/astrbot-vs-tomo.md)\n- [AstrBot vs Zapia](https://www.anchorterminal.com/compare/astrbot-vs-zapia.md)\n- [Boba vs Town](https://www.anchorterminal.com/compare/boba-vs-town.md)\n- [Brea vs Town](https://www.anchorterminal.com/compare/brea-vs-town.md)\n- [Del vs Town](https://www.anchorterminal.com/compare/del-vs-town.md)\n- [HireAlpha vs Town](https://www.anchorterminal.com/compare/hirealpha-vs-town.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- [Town vs Zapia](https://www.anchorterminal.com/compare/town-vs-zapia.md)\n- [AstrBot vs Boski](https://www.anchorterminal.com/compare/astrbot-vs-boski.md)\n- [AstrBot vs Caddy](https://www.anchorterminal.com/compare/astrbot-vs-caddy-app.md)\n- [AstrBot vs CowAgent](https://www.anchorterminal.com/compare/astrbot-vs-cowagent.md)\n- [AstrBot vs folk](https://www.anchorterminal.com/compare/astrbot-vs-folk-nozomio.md)\n- [AstrBot vs GAIA](https://www.anchorterminal.com/compare/astrbot-vs-gaia.md)\n- [AstrBot vs Gemini Spark](https://www.anchorterminal.com/compare/astrbot-vs-gemini-spark.md)\n- [AstrBot vs Grok Bot](https://www.anchorterminal.com/compare/astrbot-vs-grok-bot.md)\n- [AstrBot vs Haven](https://www.anchorterminal.com/compare/astrbot-vs-haven.md)\n- [AstrBot vs Hermes Agent](https://www.anchorterminal.com/compare/astrbot-vs-hermes-agent.md)\n- [AstrBot vs Instinct](https://www.anchorterminal.com/compare/astrbot-vs-instinct.md)\n- [AstrBot vs IronClaw](https://www.anchorterminal.com/compare/astrbot-vs-ironclaw.md)\n- [AstrBot vs Leon](https://www.anchorterminal.com/compare/astrbot-vs-leon.md)\n- [AstrBot vs Lindy](https://www.anchorterminal.com/compare/astrbot-vs-lindy.md)\n- [AstrBot vs nanobot](https://www.anchorterminal.com/compare/astrbot-vs-nanobot.md)\n- [AstrBot vs NanoClaw](https://www.anchorterminal.com/compare/astrbot-vs-nanoclaw.md)\n- [AstrBot vs Dots](https://www.anchorterminal.com/compare/astrbot-vs-openai-dots.md)\n- [AstrBot vs OpenClaw](https://www.anchorterminal.com/compare/astrbot-vs-openclaw.md)\n- [AstrBot vs PicoClaw](https://www.anchorterminal.com/compare/astrbot-vs-picoclaw.md)\n- [AstrBot vs Poke](https://www.anchorterminal.com/compare/astrbot-vs-poke.md)\n- [AstrBot vs QwenPaw](https://www.anchorterminal.com/compare/astrbot-vs-qwenpaw.md)\n- [AstrBot vs ZeroClaw](https://www.anchorterminal.com/compare/astrbot-vs-zeroclaw.md)\n- [AstrBot vs Zo Computer](https://www.anchorterminal.com/compare/astrbot-vs-zo-computer.md)\n- [Boski vs Town](https://www.anchorterminal.com/compare/boski-vs-town.md)\n- [Caddy vs Town](https://www.anchorterminal.com/compare/caddy-app-vs-town.md)\n- [CowAgent vs Town](https://www.anchorterminal.com/compare/cowagent-vs-town.md)\n- [folk vs Town](https://www.anchorterminal.com/compare/folk-nozomio-vs-town.md)\n- [GAIA vs Town](https://www.anchorterminal.com/compare/gaia-vs-town.md)\n- [Gemini Spark vs Town](https://www.anchorterminal.com/compare/gemini-spark-vs-town.md)\n- [Grok Bot vs Town](https://www.anchorterminal.com/compare/grok-bot-vs-town.md)\n- [Haven vs Town](https://www.anchorterminal.com/compare/haven-vs-town.md)\n- [Hermes Agent vs Town](https://www.anchorterminal.com/compare/hermes-agent-vs-town.md)\n- [Instinct vs Town](https://www.anchorterminal.com/compare/instinct-vs-town.md)\n- [IronClaw vs Town](https://www.anchorterminal.com/compare/ironclaw-vs-town.md)\n- [Leon vs Town](https://www.anchorterminal.com/compare/leon-vs-town.md)\n- [Lindy vs Town](https://www.anchorterminal.com/compare/lindy-vs-town.md)\n- [nanobot vs Town](https://www.anchorterminal.com/compare/nanobot-vs-town.md)\n- [NanoClaw vs Town](https://www.anchorterminal.com/compare/nanoclaw-vs-town.md)\n- [Dots vs Town](https://www.anchorterminal.com/compare/openai-dots-vs-town.md)\n- [OpenClaw vs Town](https://www.anchorterminal.com/compare/openclaw-vs-town.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- [Natura tinyNature vs Town](https://www.anchorterminal.com/compare/natura-vs-town.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- [Talorys vs Town](https://www.anchorterminal.com/compare/talorys-vs-town.md)\n- [AstrBot vs Talorys](https://www.anchorterminal.com/compare/astrbot-vs-talorys.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)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-14",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "AstrBot vs Town",
        "url": ""
      }
    ],
    "description": "AstrBot scores 58.8 (C) to Town's 48.7 (D) for proactive personal assistants. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "AstrBot C 58.8",
      "Town D 48.7",
      "scores"
    ],
    "h1": "AstrBot vs Town",
    "image": "https://www.anchorterminal.com/assets/og/compare-astrbot-vs-town.png",
    "path": "/compare/astrbot-vs-town",
    "published": "2026-10-01",
    "section": "tools",
    "title": "AstrBot vs Town for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-13",
    "url": "https://www.anchorterminal.com/compare/astrbot-vs-town"
  },
  "tokens": {
    "markdown": 3450,
    "slim": 680
  },
  "version": 1
}
