{
  "data": {
    "a": {
      "slug": "docker-agent",
      "name": "Docker Agent",
      "vendor": "Docker",
      "vendorUrl": "https://docker.github.io/docker-agent/",
      "kind": "framework",
      "category": "frameworks",
      "summary": "Docker's open-source runtime for building and running AI agents from YAML or HCL files, formerly cagent. It runs as a `docker agent` CLI plugin with a terminal UI, headless mode, HTTP, MCP and A2A servers, and a Go library.",
      "url": "https://www.anchorterminal.com/tools/docker-agent",
      "markdownUrl": "https://www.anchorterminal.com/tools/docker-agent.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/docker-agent.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/docker-agent.json",
      "dns": "docker-agent.grade.anchorterminal.com",
      "repo": "https://github.com/docker/docker-agent",
      "license": "Apache-2.0",
      "transports": [],
      "packages": [
        {
          "registry": "oci",
          "name": "docker/docker-agent"
        },
        {
          "registry": "go",
          "name": "github.com/docker/docker-agent"
        }
      ],
      "auth": "none",
      "authNotes": "No account of its own. Model keys come from provider environment variables, `--env-from-file`, an account login or Docker Model Runner for local models. The servers it starts take an optional Bearer token (`--auth-token`), which HTTP MCP requires on a non-loopback address.",
      "pricing": "free",
      "pricingNotes": "Free and Apache-2.0, with nothing to buy for the CLI. You pay your model provider, or nothing with a local model through Docker Model Runner. Cloud sandboxes need a Docker login and weren't priced in this check.",
      "priceSummary": "Free · OSS",
      "where": "library",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs or the README (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 4029,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://docker.github.io/docker-agent/",
      "llmsTxt": "https://docker.github.io/docker-agent/llms.txt",
      "capabilities": [
        "agent.framework",
        "agent.multi-agent",
        "agent.mcp-client",
        "agent.durable"
      ],
      "tags": [
        "framework",
        "open-source",
        "go",
        "local",
        "free",
        "no-card",
        "llms-txt",
        "docker"
      ],
      "lastRelease": "2026-10-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 73.6,
        "grade": "BB",
        "agentReady": true,
        "rank": 102,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 8,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 81,
          "maintenance": 96,
          "payments": 60,
          "reliability": 88,
          "schema": 90,
          "security": 70,
          "transparency": 81
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-01"
        },
        "negative": -7,
        "negativeNotes": [
          "2026-09-01. GHSA-8f6v-26r8-3r4h (high). `read_skill` was treated as read-only and could be auto-approved, yet it ran shell commands embedded in local skill files, so opening a repository that ships skills could run commands without a prompt. Affects 1.32.5 up to 1.130.0. Fixed in 1.130.0 and published, inside six months, -2. https://github.com/docker/docker-agent/security/advisories/GHSA-8f6v-26r8-3r4h",
          "2026-08-20. GHSA-f2g7-cxrq-x54m (high). `docker agent serve a2a` created unattended sessions with tool approval disabled, so a client that could reach the endpoint could run tools without approval. The listener binds to loopback by default. Affects 1.8.2 up to 1.126.0. Fixed in 1.126.0 and published, inside six months, -2. https://github.com/docker/docker-agent/security/advisories/GHSA-f2g7-cxrq-x54m",
          "2026-10-21 and 2026-10-28. Breaking changes in minor releases without notice. 1.152.0 made `--auth-token` mandatory on non-loopback TCP listeners, so `serve api --listen 0.0.0.0:8080`, the command the API server docs showed without a token before that release, now refuses to start, and the change is listed under Bug Fixes. 1.153.0 removed MCP sampling, roots and logging support under Technical Changes, with no earlier deprecation notice in the changelog. Neither has a Breaking Changes section. The same pattern ran through 1.137.0 (9 September), which removed the `session_plan` toolset in a labelled Breaking Changes section with no deprecation notice found, read only through the semver line on 17 October. The auth change closes a DNS-rebinding and CSRF path and the error says what to set, so the floor, one term for the pattern across these releases, -3. https://github.com/docker/docker-agent/blob/main/CHANGELOG.md"
        ],
        "verdict": "An agent with an MCP server is eight lines of YAML, and the same file runs in a terminal, headless, or as an HTTP, MCP or A2A server. Usage telemetry is on by default and can carry prompts passed as command arguments, and breaking changes keep shipping in minor releases, two of them in October 2026 without a breaking label.",
        "bestFor": "Teams already on Docker who want agents defined in a file, shared through an OCI registry and run the same way in a terminal, in CI or behind an HTTP, MCP or A2A server.",
        "strengths": [
          "An agent with one MCP server is eight lines of YAML, with a published JSON Schema for the config",
          "Four safety modes, allow, ask and deny rules, and a `--sandbox` flag that runs the agent in a Docker Sandboxes VM",
          "Headless `run --exec` with NDJSON events, structured output, and budgets for cost, tokens and time",
          "The same config runs as an HTTP API, an OpenAI-compatible chat server, an MCP server or an A2A server",
          "v1.154.0 on 28 October 2026, with 36 tagged releases in the 90 days to 1 November and a dated changelog"
        ],
        "weaknesses": [
          "Usage telemetry is on by default and command events can include prompts passed as arguments",
          "Two high-severity advisories in 2026, each letting tools or shell commands run without approval, both fixed",
          "Breaking changes ship in minor releases, three labelled between July and September 2026 and two unlabelled in October (1.152.0, 1.153.0)",
          "`max_iterations` is unlimited and no budget is set unless the config declares one",
          "The `--listen` control plane has no built-in authentication (loopback only), and A2A support is described as early"
        ],
        "agentNotes": [
          "Set `TELEMETRY_ENABLED=false` before `run` or `exec` with a prompt on the command line. Telemetry is on by default and sends positional arguments",
          "For unattended runs pass `--safety restricted` with an allow-list, or `--sandbox`. Without a policy, `--exec` rejects every tool call that needs approval",
          "Set `max_iterations` and a `budget` block in the config. Both are unlimited by default",
          "Run 1.130.0 or later. Earlier versions ran shell commands embedded in local skills, and A2A sessions before 1.126.0 skipped tool approval",
          "Review `runtime.safety` in any config pulled from a registry or URL. An author default of `autonomous` runs every tool call unprompted",
          "Pass `--auth-token` to `serve api` on any non-loopback address from 1.152.0, or it won't start. Don't rely on MCP sampling, removed in 1.153.0"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 2.8,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 73.6
          }
        ],
        "editorialScores": {
          "ergonomics": 81,
          "maintenance": 96,
          "payments": 60,
          "reliability": 88,
          "schema": 90,
          "security": 70,
          "transparency": 75
        },
        "provenanceScore": 86,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-01",
            "maintenance": "2026-11-01",
            "payments": "2026-11-01",
            "reliability": "2026-11-01",
            "schema": "2026-11-01",
            "security": "2026-11-01",
            "transparency": "2026-11-01"
          },
          "last": "2026-11-01",
          "lastMoved": "2026-11-01",
          "oldest": "2026-11-01",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "brew install docker-agent   # bundled with Docker Desktop 4.63 and later as `docker agent`",
        "claudeCode": "claude mcp add --transport stdio myagent --env OPENAI_API_KEY=$OPENAI_API_KEY --env ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY -- docker agent serve mcp myorg/agent:tag --working-dir $(pwd)",
        "headless": {
          "command": "docker agent run --exec --safety restricted agent.yaml --json \"$TASK\"",
          "env": {
            "OPENAI_API_KEY": "\u003ckey\u003e",
            "TELEMETRY_ENABLED": "false"
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/agent.framework",
        "tool": "https://letme.dev/docker-agent"
      },
      "sameCompany": [
        "docker-model-runner"
      ],
      "area": "frameworks",
      "provenance": {
        "legalEntity": "Docker, Inc.",
        "domain": "docker.com",
        "domainRegistered": "1995-01-25",
        "endpointOnVendorDomain": null,
        "terms": "https://www.docker.com/legal/docker-terms-use/",
        "privacy": "https://www.docker.com/legal/privacy/",
        "statusPage": "",
        "changelog": "https://github.com/docker/docker-agent/blob/main/CHANGELOG.md",
        "securityTxt": "valid",
        "checked": "2026-11-01",
        "notes": [
          "The repository is under GitHub's docker organisation and SECURITY.md sends reports to security@docker.com. Docker's privacy policy names Docker, Inc.",
          "www.docker.com/.well-known/security.txt gives security@docker.com, a policy URL and an expiry of 1 January 2030, re-read on 1 November 2026.",
          "Main-branch docs are on docker.github.io/docker-agent and the stable docs on docs.docker.com/ai/docker-agent. By 17 October 2026 the telemetry and OpenTelemetry pages had moved from the community section to the configuration section, and the old paths still load.",
          "Docker's general terms and privacy policy are listed. Neither the README nor the telemetry page says which terms govern the open-source CLI.",
          "No status page is listed because the software runs on the owner's machine. Usage telemetry goes to api.docker.com/events/v1/track per pkg/telemetry/client.go.",
          "RDAP for docker.com gives a registration date of 1995-01-25."
        ],
        "score": 86
      },
      "requirements": {
        "setupChecked": true,
        "complianceChecked": true,
        "card": "unknown",
        "freeTier": true,
        "minutes": 5,
        "credential": "api-key",
        "hosting": [
          "self-hosted"
        ],
        "euResidency": "unknown",
        "trainsOnData": "no",
        "zeroRetention": "unknown",
        "selfHost": "yes"
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/docker-agent.json",
      "live": {
        "slug": "docker-agent",
        "versions": [
          {
            "registry": "github",
            "name": "docker/docker-agent",
            "version": "v1.157.2",
            "released": "2026-11-05",
            "seenAt": "2026-11-06T23:21:45.59514179Z"
          }
        ],
        "githubStars": 4662,
        "securityTxt": {
          "url": "https://docker.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2030-01-01T05:00:00.000Z",
          "checkedAt": "2026-11-07T16:00:06.40302104Z"
        },
        "llmsTxt": {
          "url": "https://docker.github.io/docker-agent/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:18.14013237Z"
        },
        "domain": {
          "domain": "docker.com",
          "registered": "1995-01-25",
          "source": "https://rdap.verisign.com/com/v1/domain/docker.com",
          "checkedAt": "2026-11-01T14:14:21.327350802Z"
        },
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/docker/docker-agent/main/CHANGELOG.md",
            "kind": "deprecations",
            "status": 304,
            "checkedAt": "2026-11-07T14:20:37.941057894Z",
            "changedAt": "2026-11-06T13:41:57.676287987Z",
            "fingerprint": "3ffc7b576b1b"
          },
          {
            "url": "https://www.docker.com/legal/privacy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:28:02.241968202Z",
            "changedAt": "2026-10-09T18:49:41.704132769Z",
            "fingerprint": "8e523e7e5859"
          },
          {
            "url": "https://www.docker.com/legal/docker-terms-use/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:28:00.267054946Z",
            "changedAt": "2026-10-30T05:54:50.28672223Z",
            "fingerprint": "e68baa3d8d9c"
          }
        ],
        "github": {
          "repo": "docker/docker-agent",
          "checkedAt": "2026-11-02T08:44:40.290365909Z",
          "stars": 4646,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-11-02T08:37:52Z",
          "openIssues": 37,
          "openPRs": 35,
          "issuesOpened90d": 153,
          "issuesClosed90d": 124,
          "prsMerged90d": 658,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 46,
            "failure": 4,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-11-02T08:23:20Z"
          },
          "advisories": [
            {
              "ghsa": "GHSA-8f6v-26r8-3r4h",
              "severity": "high",
              "published": "2026-09-01T16:46:23Z"
            },
            {
              "ghsa": "GHSA-f2g7-cxrq-x54m",
              "severity": "high",
              "published": "2026-08-20T13:03:08Z"
            }
          ],
          "replies": {
            "sampled": 25,
            "unanswered": 11,
            "medianDays": 0.9
          }
        },
        "updatedAt": "2026-11-07T16:00:06.40302104Z"
      }
    },
    "answer": "Mastra and Docker Agent score within a point of each other on agent readiness, 74.2 (BB) and 73.6 (BB). Docker Agent leads on transparency \u0026 trust.",
    "b": {
      "slug": "mastra",
      "name": "Mastra",
      "vendor": "Kepler Software, Inc.",
      "vendorUrl": "https://mastra.ai",
      "kind": "framework",
      "category": "frameworks",
      "summary": "Open-source TypeScript framework from Mastra for building agents and workflows, with memory, RAG, evals, tracing, an MCP client and server, and a local Studio. An optional hosted platform runs deployments and observability.",
      "url": "https://www.anchorterminal.com/tools/mastra",
      "markdownUrl": "https://www.anchorterminal.com/tools/mastra.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/mastra.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/mastra.json",
      "dns": "mastra.grade.anchorterminal.com",
      "repo": "https://github.com/mastra-ai/mastra",
      "license": "Apache-2.0 for the core. Code under ee/ directories is source-available under the Mastra Enterprise License, free for development and testing",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "@mastra/core"
        },
        {
          "registry": "npm",
          "name": "@mastra/mcp"
        },
        {
          "registry": "npm",
          "name": "mastra"
        }
      ],
      "auth": "api-key",
      "authNotes": "The framework has no account of its own. The model router takes `provider/model` strings and each provider's own key. The hosted Mastra platform needs an account.",
      "pricing": "free",
      "pricingNotes": "Free and open source. You pay for model calls. The hosted platform has a $0 Starter plan with 100K observability events and 24 CPU hours, then $10 per 100K events and $0.35 a CPU hour, and Teams at $250 a month (https://mastra.ai/pricing, checked 2026-11-06).",
      "priceSummary": "Free · OSS",
      "where": "library",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Mastra docs, the repository or the pricing page (checked 2026-10-06).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 29383,
        "npmWeekly": 3116983,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://mastra.ai/docs",
      "llmsTxt": "https://mastra.ai/llms.txt",
      "capabilities": [
        "agent.framework",
        "agent.durable",
        "agent.mcp-client",
        "agent.multi-agent"
      ],
      "tags": [
        "framework",
        "typescript",
        "open-source",
        "llms-txt",
        "mcp",
        "telemetry-default-on"
      ],
      "lastRelease": "2026-11-04",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 74.2,
        "grade": "BB",
        "agentReady": true,
        "rank": 91,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 7,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 92,
          "maintenance": 96,
          "payments": 60,
          "reliability": 87,
          "schema": 98,
          "security": 67,
          "transparency": 72
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": -8,
        "negativeNotes": [
          "2026-06-17. Malicious versions of Mastra's npm packages were published, among them @mastra/core 1.42.1 at 01:15 UTC, and GitHub malware advisories that day (GHSA-pp62-grrw-hvfp and others) say any machine that installed one should be treated as fully compromised. All 21 Mastra packages we checked on OSV carry one. Mastra published clean versions the same day and the changelogs name an \"easy-day-js\" supply-chain incident, but we found no advisory or post-mortem from Mastra. Fixed and under four months old, so 8 points. https://osv.dev/vulnerability/MAL-2026-6011"
        ],
        "verdict": "A TypeScript framework with agents, workflows with suspend and resume, memory, an MCP client and server, per-server tool approval and built-in guardrail processors including a prompt-injection detector. On 17 June 2026 malicious versions of its npm packages were published, and the CLI, server and Studio send usage analytics by default, with token counts every 15 minutes.",
        "bestFor": "TypeScript teams that want agents, workflows, memory, evals and a local Studio in one framework.",
        "strengths": [
          "MCP client with requireToolApproval per server or per tool, allowedHosts and a curated environment for stdio servers",
          "Guardrail processors for prompt injection, PII, moderation and cost limits, run on input and output",
          "Workflows with snapshots, suspend and resume, and durable agents on Inngest or an evented engine",
          "Apache 2.0 core, 1.0 since 20 January 2026, with 27 releases of @mastra/core in 90 days to 6 November",
          "llms.txt with a when-to-use section and condensed instructions for coding agents"
        ],
        "weaknesses": [
          "Malicious versions of Mastra npm packages, including @mastra/core 1.42.1, were published on 17 June 2026",
          "CLI, server and Studio send usage analytics by default, including token counts every 15 minutes, off with MASTRA_TELEMETRY_DISABLED=1",
          "No SECURITY.md, no security.txt and no bug bounty found",
          "Code under ee/ is source-available under the Mastra Enterprise License, not Apache 2.0",
          "TypeScript only, Node 22.13 or newer"
        ],
        "agentNotes": [
          "Set MASTRA_TELEMETRY_DISABLED=1 in every environment that runs the CLI, the server or Studio",
          "Pin exact versions with a lockfile, and make sure no 17 June 2026 release such as @mastra/core 1.42.1 is installed",
          "Set requireToolApproval on MCP servers that write, and allowedHosts when server URLs come from configuration",
          "Add PromptInjectionDetector as an input processor when tools return web or user content",
          "Use supervisor agents through generate() or stream(). `.network()` is deprecated"
        ],
        "metrics": {
          "kind": "library",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 74.2
          }
        ],
        "editorialScores": {
          "ergonomics": 92,
          "maintenance": 96,
          "payments": 60,
          "reliability": 87,
          "schema": 98,
          "security": 67,
          "transparency": 72
        },
        "provenanceScore": 71,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm create mastra@latest   # or: npm i @mastra/core @mastra/mcp"
      },
      "letme": {
        "capability": "https://letme.dev/agent.framework",
        "tool": "https://letme.dev/mastra"
      },
      "area": "frameworks",
      "provenance": {
        "legalEntity": "Kepler Software, Inc.",
        "domain": "mastra.ai",
        "domainRegistered": "2024-10-01",
        "endpointOnVendorDomain": null,
        "terms": "https://mastra.ai/terms-of-service",
        "privacy": "https://mastra.ai/privacy-policy",
        "statusPage": "https://statuspage.incident.io/mastra-platform",
        "changelog": "https://github.com/mastra-ai/mastra/blob/main/packages/core/CHANGELOG.md",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The privacy policy names Kepler Software Inc as operator of mastra.ai and shows a last-published date of 25 April 2025.",
          "The licence file is copyright Kepler Software, Inc.",
          "mastra.ai/.well-known/security.txt returns 404 (rechecked 6 November 2026), and the repository has no SECURITY.md.",
          "RDAP gives mastra.ai a registration date of 2024-10-01.",
          "The status page covers the hosted platform, not the framework."
        ],
        "score": 71
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/mastra.json",
      "live": {
        "slug": "mastra",
        "vendorStatus": {
          "page": "https://statuspage.incident.io/mastra-platform",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-07T19:22:27.41396844Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "mastra-ai/mastra",
            "version": "@mastra/core@1.82.0",
            "released": "2026-11-04",
            "seenAt": "2026-11-06T23:43:05.299046627Z"
          },
          {
            "registry": "npm",
            "name": "@mastra/core",
            "version": "1.82.0",
            "seenAt": "2026-11-06T23:43:01.102546802Z"
          },
          {
            "registry": "npm",
            "name": "@mastra/mcp",
            "version": "2.8.0",
            "seenAt": "2026-11-06T23:43:01.962943277Z"
          },
          {
            "registry": "npm",
            "name": "mastra",
            "version": "1.38.0",
            "seenAt": "2026-11-06T23:43:03.330470883Z"
          }
        ],
        "githubStars": 29384,
        "npmWeekly": 3116983,
        "securityTxt": {
          "url": "https://mastra.ai/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:00:45.130857018Z"
        },
        "llmsTxt": {
          "url": "https://mastra.ai/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:57.501317652Z"
        },
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/mastra-ai/mastra/main/packages/core/CHANGELOG.md",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:21:37.959722321Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "0bdb3498f7aa"
          },
          {
            "url": "https://mastra.ai/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:13:54.312763229Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "0204673a21a8"
          },
          {
            "url": "https://mastra.ai/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:13:56.829832485Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1621ce3063d8"
          },
          {
            "url": "https://mastra.ai/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:13:58.580048861Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "edbcf520f26c"
          }
        ],
        "updatedAt": "2026-11-07T19:22:27.41396844Z"
      }
    },
    "edges": [
      {
        "by": 11,
        "category": "ergonomics",
        "leads": "mastra",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "Framework reading, scored on what an agent with MCP needs. The README's agent with one MCP server is eight lines of YAML and no code, with deferred toolsets and a code mode (23). Budgets cap cost, tokens and time, tool results are bounded to 50 KiB since 1.148.0, and context is compacted, but `max_iterations` is unlimited and no budget applies unless declared (16). `--json` writes one NDJSON event per message, tool call and error, and the API documents 404, 409, 413 and 502 responses. No exit-code reference found for `run --exec` (14). Sessions resume from SQLite, the event stream replays from a sequence number, follow-ups accept an `Idempotency-Key`, and read-only and destructive tool annotations drive the safety modes (18). One binary and a model key or a local model are enough to start. The library is Go only (10).",
          "b": "An MCP client in about ten lines with listTools() for static or listToolsets() for per-request tools, and ToolSearchProcessor for loading tools on demand (25). Step limits, memory windows and processors such as a token limiter control what reaches the model (20). MastraError with ids and categories, and processors can abort with a reason the caller can read (17). Workflow step retries, snapshots and durable agents for resuming (20). create-mastra scaffolds a project and the model router takes a plain string, but it's TypeScript only (10)."
        },
        "scores": {
          "a": 81,
          "b": 92
        }
      },
      {
        "by": 9,
        "category": "transparency",
        "leads": "docker-agent",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Apache-2.0 (30). The telemetry page lists what's collected and warns that arguments and error text can carry secrets or personal data. It doesn't name the endpoint (api.docker.com, per the source), link Docker's privacy policy or give a retention period, unchanged on 17 October (15). Breaking changes are dated in the changelog and one renamed variable kept a fallback for one release, with no written deprecation policy, and the changelog says frozen config schema versions aren't maintained long-term (10). Telemetry is disclosed in the README, the docs and a first-start notice, with an opt-out variable (20).",
          "b": "Apache 2.0 for the core, with ee/ directories source-available under the Mastra Enterprise License (25). The privacy policy (last published 25 April 2025) covers the website, the Teams plan states six months' retention, and the subprocessor list sits in a trust centre our reader couldn't render (15). Migration guides and deprecation warnings, without dated removal windows (12). Every telemetry stream is documented with links to its source and one opt-out, and the reference now spells out what the project identifiers can be correlated with (20)."
        },
        "scores": {
          "a": 81,
          "b": 72
        }
      },
      {
        "by": 8,
        "category": "schema",
        "leads": "mastra",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "Framework reading. agent-schema.json in the repository is a JSON Schema for the whole config, and the chat server serves its OpenAPI document at /openapi.json. We found no OpenAPI document for the native /api server and didn't check the Go package reference (22). llms.txt on docker.github.io/docker-agent and on docs.docker.com (10). The docs say when to use the API server and when the chat server, compare six ways to pass large input, and state that permissions aren't a security boundary (17). Configs are parsed strictly, unknown fields fail to load with a hint, and safety fields accept four named modes only (13). An examples directory, a troubleshooting page of common errors and documented HTTP status codes for the API. We found no exit-code reference for `run --exec` (13). A dated CHANGELOG.md and a numbered config schema, now version 16, with migration on load (15).",
          "b": "Typed TypeScript API with a reference section (25). llms.txt with a when-to-use list and condensed instructions for coding agents (10). The docs say when to use durable agents, and point multi-agent users from `.network()` to supervisor agents (20). Tools take Zod schemas (15). Examples on every page, and MastraError with ids and categories documented, though errors are spread across pages (13). Per-package changelogs and migration guides (15)."
        },
        "scores": {
          "a": 90,
          "b": 98
        }
      }
    ],
    "facts": [
      {
        "a": "Agent framework",
        "b": "Agent framework",
        "name": "Kind"
      },
      {
        "a": "Docker",
        "b": "Kepler Software, Inc.",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "",
        "name": "Transports"
      },
      {
        "a": "None",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Free",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache-2.0",
        "b": "Apache-2.0 for the core. Code under ee/ directories is source-available under the Mastra Enterprise License, free for development and testing",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-28",
        "b": "2026-11-04",
        "name": "Last release"
      },
      {
        "a": "2026-08-26",
        "b": "2026-10-26",
        "name": "Terms last updated"
      },
      {
        "a": "2026-08-26",
        "b": "no date given",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "4k stars",
        "b": "29k stars, 3.1M npm/wk",
        "name": "Popularity"
      },
      {
        "a": "2.8/5 (4)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Mastra and Docker Agent score within a point of each other on agent readiness, 74.2 (BB) and 73.6 (BB). Docker Agent leads on transparency \u0026 trust.",
        "question": "Which is better for AI agents, Docker Agent or Mastra?"
      },
      {
        "answer": "Yes. Docker Agent is open source (Apache-2.0). Mastra is open source (Apache-2.0 for the core. Code under ee/ directories is source-available under the Mastra Enterprise License, free for development and testing).",
        "question": "Are Docker Agent and Mastra open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Transparency \u0026 trust, 81 against 72"
        ],
        "also": [
          "No key needed to call it",
          "Free to start without a card"
        ],
        "goodFor": "Teams already on Docker who want agents defined in a file, shared through an OCI registry and run the same way in a terminal, in CI or behind an HTTP, MCP or A2A server.",
        "slug": "docker-agent",
        "watchFor": "Usage telemetry is on by default and command events can include prompts passed as arguments"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 98 against 90",
          "Agent ergonomics, 92 against 81"
        ],
        "also": null,
        "goodFor": "TypeScript teams that want agents, workflows, memory, evals and a local Studio in one framework.",
        "slug": "mastra",
        "watchFor": "Malicious versions of Mastra npm packages, including @mastra/core 1.42.1, were published on 17 June 2026"
      }
    ],
    "history": {
      "docker-agent": [
        {
          "causes": [
            "event"
          ],
          "date": "2026-11-01",
          "delta": -3,
          "from": 76.6,
          "fromGrade": "BB",
          "to": 73.6,
          "toGrade": "BB"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 76.5,
          "fromGrade": "BB",
          "to": 76.6,
          "toGrade": "BB"
        }
      ],
      "mastra": null
    },
    "job": {
      "capability": "agent.framework",
      "name": "Agent frameworks"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/agentos-vs-docker-agent.json",
        "title": "AgentOS vs Docker Agent",
        "url": "https://www.anchorterminal.com/compare/agentos-vs-docker-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agentos-vs-mastra.json",
        "title": "AgentOS vs Mastra",
        "url": "https://www.anchorterminal.com/compare/agentos-vs-mastra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agno-vs-docker-agent.json",
        "title": "Agno vs Docker Agent",
        "url": "https://www.anchorterminal.com/compare/agno-vs-docker-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agno-vs-mastra.json",
        "title": "Agno vs Mastra",
        "url": "https://www.anchorterminal.com/compare/agno-vs-mastra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/boxlang-ai-vs-docker-agent.json",
        "title": "BoxLang AI vs Docker Agent",
        "url": "https://www.anchorterminal.com/compare/boxlang-ai-vs-docker-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/boxlang-ai-vs-mastra.json",
        "title": "BoxLang AI vs Mastra",
        "url": "https://www.anchorterminal.com/compare/boxlang-ai-vs-mastra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/claude-agent-sdk-vs-docker-agent.json",
        "title": "Claude Agent SDK vs Docker Agent",
        "url": "https://www.anchorterminal.com/compare/claude-agent-sdk-vs-docker-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/claude-agent-sdk-vs-mastra.json",
        "title": "Claude Agent SDK vs Mastra",
        "url": "https://www.anchorterminal.com/compare/claude-agent-sdk-vs-mastra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crewai-vs-docker-agent.json",
        "title": "CrewAI vs Docker Agent",
        "url": "https://www.anchorterminal.com/compare/crewai-vs-docker-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crewai-vs-mastra.json",
        "title": "CrewAI vs Mastra",
        "url": "https://www.anchorterminal.com/compare/crewai-vs-mastra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cursor-agent-sdk-vs-docker-agent.json",
        "title": "Cursor Agent SDK vs Docker Agent",
        "url": "https://www.anchorterminal.com/compare/cursor-agent-sdk-vs-docker-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cursor-agent-sdk-vs-mastra.json",
        "title": "Cursor Agent SDK vs Mastra",
        "url": "https://www.anchorterminal.com/compare/cursor-agent-sdk-vs-mastra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docker-agent-vs-google-adk.json",
        "title": "Docker Agent vs Agent Development Kit (ADK)",
        "url": "https://www.anchorterminal.com/compare/docker-agent-vs-google-adk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docker-agent-vs-guilds-run.json",
        "title": "Docker Agent vs guilds.run",
        "url": "https://www.anchorterminal.com/compare/docker-agent-vs-guilds-run"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docker-agent-vs-langgraph.json",
        "title": "Docker Agent vs LangGraph",
        "url": "https://www.anchorterminal.com/compare/docker-agent-vs-langgraph"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docker-agent-vs-llamaindex.json",
        "title": "Docker Agent vs LlamaIndex Framework",
        "url": "https://www.anchorterminal.com/compare/docker-agent-vs-llamaindex"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docker-agent-vs-microsoft-agent-framework.json",
        "title": "Docker Agent vs Microsoft Agent Framework",
        "url": "https://www.anchorterminal.com/compare/docker-agent-vs-microsoft-agent-framework"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docker-agent-vs-openai-agents-sdk.json",
        "title": "Docker Agent vs OpenAI Agents SDK",
        "url": "https://www.anchorterminal.com/compare/docker-agent-vs-openai-agents-sdk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docker-agent-vs-pydantic-ai.json",
        "title": "Docker Agent vs Pydantic AI",
        "url": "https://www.anchorterminal.com/compare/docker-agent-vs-pydantic-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docker-agent-vs-smolagents.json",
        "title": "Docker Agent vs smolagents",
        "url": "https://www.anchorterminal.com/compare/docker-agent-vs-smolagents"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docker-agent-vs-strands-agents.json",
        "title": "Docker Agent vs Strands Agents",
        "url": "https://www.anchorterminal.com/compare/docker-agent-vs-strands-agents"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docker-agent-vs-tradingagents.json",
        "title": "Docker Agent vs TradingAgents",
        "url": "https://www.anchorterminal.com/compare/docker-agent-vs-tradingagents"
      },
      {
        "json": "https://www.anchorterminal.com/compare/docker-agent-vs-vercel-ai-sdk.json",
        "title": "Docker Agent vs AI SDK",
        "url": "https://www.anchorterminal.com/compare/docker-agent-vs-vercel-ai-sdk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-adk-vs-mastra.json",
        "title": "Agent Development Kit (ADK) vs Mastra",
        "url": "https://www.anchorterminal.com/compare/google-adk-vs-mastra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/guilds-run-vs-mastra.json",
        "title": "guilds.run vs Mastra",
        "url": "https://www.anchorterminal.com/compare/guilds-run-vs-mastra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/langgraph-vs-mastra.json",
        "title": "LangGraph vs Mastra",
        "url": "https://www.anchorterminal.com/compare/langgraph-vs-mastra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/llamaindex-vs-mastra.json",
        "title": "LlamaIndex Framework vs Mastra",
        "url": "https://www.anchorterminal.com/compare/llamaindex-vs-mastra"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mastra-vs-microsoft-agent-framework.json",
        "title": "Mastra vs Microsoft Agent Framework",
        "url": "https://www.anchorterminal.com/compare/mastra-vs-microsoft-agent-framework"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mastra-vs-openai-agents-sdk.json",
        "title": "Mastra vs OpenAI Agents SDK",
        "url": "https://www.anchorterminal.com/compare/mastra-vs-openai-agents-sdk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mastra-vs-pydantic-ai.json",
        "title": "Mastra vs Pydantic AI",
        "url": "https://www.anchorterminal.com/compare/mastra-vs-pydantic-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mastra-vs-smolagents.json",
        "title": "Mastra vs smolagents",
        "url": "https://www.anchorterminal.com/compare/mastra-vs-smolagents"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mastra-vs-strands-agents.json",
        "title": "Mastra vs Strands Agents",
        "url": "https://www.anchorterminal.com/compare/mastra-vs-strands-agents"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mastra-vs-tradingagents.json",
        "title": "Mastra vs TradingAgents",
        "url": "https://www.anchorterminal.com/compare/mastra-vs-tradingagents"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mastra-vs-vercel-ai-sdk.json",
        "title": "Mastra vs AI SDK",
        "url": "https://www.anchorterminal.com/compare/mastra-vs-vercel-ai-sdk"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 1,
        "docker-agent": 88,
        "edge": "docker-agent",
        "key": "reliability",
        "mastra": 87,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 8,
        "docker-agent": 90,
        "edge": "mastra",
        "key": "schema",
        "mastra": 98,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 11,
        "docker-agent": 81,
        "edge": "mastra",
        "key": "ergonomics",
        "mastra": 92,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 3,
        "docker-agent": 70,
        "edge": "docker-agent",
        "key": "security",
        "mastra": 67,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 0,
        "docker-agent": 60,
        "edge": "",
        "key": "payments",
        "mastra": 60,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 0,
        "docker-agent": 96,
        "edge": "",
        "key": "maintenance",
        "mastra": 96,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 9,
        "docker-agent": 81,
        "edge": "docker-agent",
        "key": "transparency",
        "mastra": 72,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Mastra and Docker Agent score within a point of each other on agent readiness, 74.2 (BB) and 73.6 (BB). Docker Agent leads on transparency \u0026 trust. Both do agent frameworks.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "docker-agent": "An agent with an MCP server is eight lines of YAML, and the same file runs in a terminal, headless, or as an HTTP, MCP or A2A server. Usage telemetry is on by default and can carry prompts passed as command arguments, and breaking changes keep shipping in minor releases, two of them in October 2026 without a breaking label.",
      "mastra": "A TypeScript framework with agents, workflows with suspend and resume, memory, an MCP client and server, per-server tool approval and built-in guardrail processors including a prompt-injection detector. On 17 June 2026 malicious versions of its npm packages were published, and the CLI, server and Studio send usage analytics by default, with token counts every 15 minutes."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/docker-agent-vs-mastra",
    "json": "https://www.anchorterminal.com/compare/docker-agent-vs-mastra.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/docker-agent-vs-mastra.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/docker-agent-vs-mastra.min.md"
  },
  "markdown": "Mastra and Docker Agent score within a point of each other on agent readiness, 74.2 (BB) and 73.6 (BB). Docker Agent leads on transparency \u0026 trust. Both do agent frameworks.\n\n- Docker Agent: grade BB, 73.6/100, rank #102 of 1510. Markdown https://www.anchorterminal.com/tools/docker-agent.md · JSON https://www.anchorterminal.com/api/v1/tools/docker-agent.json\n- Mastra: grade BB, 74.2/100, rank #91 of 1510. Markdown https://www.anchorterminal.com/tools/mastra.md · JSON https://www.anchorterminal.com/api/v1/tools/mastra.json\n- Best agent frameworks and SDKs: https://www.anchorterminal.com/best/frameworks/index.md\n- All 171 frameworks comparisons: https://www.anchorterminal.com/compare/frameworks/index.md\n\n## Which one, for what\n\n### Docker Agent (BB)\n\nGood for: Teams already on Docker who want agents defined in a file, shared through an OCI registry and run the same way in a terminal, in CI or behind an HTTP, MCP or A2A server.\n\nAhead on:\n- Transparency \u0026 trust, 81 against 72\n\nAlso in its favour:\n- No key needed to call it\n- Free to start without a card\n\nWatch for: Usage telemetry is on by default and command events can include prompts passed as arguments\n\n### Mastra (BB)\n\nGood for: TypeScript teams that want agents, workflows, memory, evals and a local Studio in one framework.\n\nAhead on:\n- Schema \u0026 documentation, 98 against 90\n- Agent ergonomics, 92 against 81\n\nWatch for: Malicious versions of Mastra npm packages, including @mastra/core 1.42.1, were published on 17 June 2026\n\n\n## Why the edge\n\n### Agent ergonomics: Mastra +11\n\n- Docker Agent (81): Framework reading, scored on what an agent with MCP needs. The README's agent with one MCP server is eight lines of YAML and no code, with deferred toolsets and a code mode (23). Budgets cap cost, tokens and time, tool results are bounded to 50 KiB since 1.148.0, and context is compacted, but `max_iterations` is unlimited and no budget applies unless declared (16). `--json` writes one NDJSON event per message, tool call and error, and the API documents 404, 409, 413 and 502 responses. No exit-code reference found for `run --exec` (14). Sessions resume from SQLite, the event stream replays from a sequence number, follow-ups accept an `Idempotency-Key`, and read-only and destructive tool annotations drive the safety modes (18). One binary and a model key or a local model are enough to start. The library is Go only (10).\n- Mastra (92): An MCP client in about ten lines with listTools() for static or listToolsets() for per-request tools, and ToolSearchProcessor for loading tools on demand (25). Step limits, memory windows and processors such as a token limiter control what reaches the model (20). MastraError with ids and categories, and processors can abort with a reason the caller can read (17). Workflow step retries, snapshots and durable agents for resuming (20). create-mastra scaffolds a project and the model router takes a plain string, but it's TypeScript only (10).\n\n### Transparency \u0026 trust: Docker Agent +9\n\n- Docker Agent (81): Apache-2.0 (30). The telemetry page lists what's collected and warns that arguments and error text can carry secrets or personal data. It doesn't name the endpoint (api.docker.com, per the source), link Docker's privacy policy or give a retention period, unchanged on 17 October (15). Breaking changes are dated in the changelog and one renamed variable kept a fallback for one release, with no written deprecation policy, and the changelog says frozen config schema versions aren't maintained long-term (10). Telemetry is disclosed in the README, the docs and a first-start notice, with an opt-out variable (20).\n- Mastra (72): Apache 2.0 for the core, with ee/ directories source-available under the Mastra Enterprise License (25). The privacy policy (last published 25 April 2025) covers the website, the Teams plan states six months' retention, and the subprocessor list sits in a trust centre our reader couldn't render (15). Migration guides and deprecation warnings, without dated removal windows (12). Every telemetry stream is documented with links to its source and one opt-out, and the reference now spells out what the project identifiers can be correlated with (20).\n\n### Schema \u0026 documentation: Mastra +8\n\n- Docker Agent (90): Framework reading. agent-schema.json in the repository is a JSON Schema for the whole config, and the chat server serves its OpenAPI document at /openapi.json. We found no OpenAPI document for the native /api server and didn't check the Go package reference (22). llms.txt on docker.github.io/docker-agent and on docs.docker.com (10). The docs say when to use the API server and when the chat server, compare six ways to pass large input, and state that permissions aren't a security boundary (17). Configs are parsed strictly, unknown fields fail to load with a hint, and safety fields accept four named modes only (13). An examples directory, a troubleshooting page of common errors and documented HTTP status codes for the API. We found no exit-code reference for `run --exec` (13). A dated CHANGELOG.md and a numbered config schema, now version 16, with migration on load (15).\n- Mastra (98): Typed TypeScript API with a reference section (25). llms.txt with a when-to-use list and condensed instructions for coding agents (10). The docs say when to use durable agents, and point multi-agent users from `.network()` to supervisor agents (20). Tools take Zod schemas (15). Examples on every page, and MastraError with ids and categories documented, though errors are spread across pages (13). Per-package changelogs and migration guides (15).\n\n## Score by category\n\n| Category | Weight | Docker Agent | Mastra | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 88 | 87 | Docker Agent +1 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 90 | 98 | Mastra +8 |\n| Agent ergonomics | 13% (16.2 this run) | 81 | 92 | Mastra +11 |\n| Security \u0026 auth | 14% (17.5 this run) | 70 | 67 | Docker Agent +3 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 60 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 96 | 96 | even |\n| Transparency \u0026 trust | 7% (8.8 this run) | 81 | 72 | Docker Agent +9 |\n| Negative events | ≤15 | -7 | -8 | |\n| **Total** | | **73.6 · BB** | **74.2 · BB** | |\n\n## Facts side by side\n\n| Fact | Docker Agent | Mastra |\n| --- | --- | --- |\n| Kind | Agent framework | Agent framework |\n| Vendor | Docker | Kepler Software, Inc. |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports |  |  |\n| Auth | None | API key |\n| Pricing | Free | Free |\n| x402 | no | no |\n| Licence | Apache-2.0 | Apache-2.0 for the core. Code under ee/ directories is source-available under the Mastra Enterprise License, free for development and testing |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-28 | 2026-11-04 |\n| Terms last updated | 2026-08-26 | 2026-10-26 |\n| Privacy policy last updated | 2026-08-26 | no date given |\n| Customer content may train models | not found in the text | yes |\n| Terms restrict automated access | yes | yes |\n| Terms restrict benchmarking | yes | not found in the text |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | yes | yes |\n| Popularity | 4k stars | 29k stars, 3.1M npm/wk |\n| Agent reviews | 2.8/5 (4) | none |\n\n## How the scores have moved\n\n### Docker Agent\n\n- -3.0 on 1 November 2026: negative event\n- +0.1 on 27 October 2026: checklist\n\n### Mastra\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Docker Agent.** An agent with an MCP server is eight lines of YAML, and the same file runs in a terminal, headless, or as an HTTP, MCP or A2A server. Usage telemetry is on by default and can carry prompts passed as command arguments, and breaking changes keep shipping in minor releases, two of them in October 2026 without a breaking label.\n\n**Mastra.** A TypeScript framework with agents, workflows with suspend and resume, memory, an MCP client and server, per-server tool approval and built-in guardrail processors including a prompt-injection detector. On 17 June 2026 malicious versions of its npm packages were published, and the CLI, server and Studio send usage analytics by default, with token counts every 15 minutes.\n\n## Before you call either\n\n### Docker Agent\n\n1. Set `TELEMETRY_ENABLED=false` before `run` or `exec` with a prompt on the command line. Telemetry is on by default and sends positional arguments\n2. For unattended runs pass `--safety restricted` with an allow-list, or `--sandbox`. Without a policy, `--exec` rejects every tool call that needs approval\n3. Set `max_iterations` and a `budget` block in the config. Both are unlimited by default\n4. Run 1.130.0 or later. Earlier versions ran shell commands embedded in local skills, and A2A sessions before 1.126.0 skipped tool approval\n5. Review `runtime.safety` in any config pulled from a registry or URL. An author default of `autonomous` runs every tool call unprompted\n6. Pass `--auth-token` to `serve api` on any non-loopback address from 1.152.0, or it won't start. Don't rely on MCP sampling, removed in 1.153.0\n\n### Mastra\n\n1. Set MASTRA_TELEMETRY_DISABLED=1 in every environment that runs the CLI, the server or Studio\n2. Pin exact versions with a lockfile, and make sure no 17 June 2026 release such as @mastra/core 1.42.1 is installed\n3. Set requireToolApproval on MCP servers that write, and allowedHosts when server URLs come from configuration\n4. Add PromptInjectionDetector as an input processor when tools return web or user content\n5. Use supervisor agents through generate() or stream(). `.network()` is deprecated\n\n## Questions\n\n### Which is better for AI agents, Docker Agent or Mastra?\n\nMastra and Docker Agent score within a point of each other on agent readiness, 74.2 (BB) and 73.6 (BB). Docker Agent leads on transparency \u0026 trust.\n\n### Are Docker Agent and Mastra open source?\n\nYes. Docker Agent is open source (Apache-2.0). Mastra is open source (Apache-2.0 for the core. Code under ee/ directories is source-available under the Mastra Enterprise License, free for development and testing).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/docker-agent-vs-mastra.json, and with the fewest tokens: https://www.anchorterminal.com/compare/docker-agent-vs-mastra.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"docker-agent\", \"b\": \"mastra\"}`. From a terminal: `anchor compare docker-agent mastra`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/docker-agent.json and https://www.anchorterminal.com/api/v1/tools/mastra.json\n\n## Other comparisons with Docker Agent or Mastra\n\n- [AgentOS vs Docker Agent](https://www.anchorterminal.com/compare/agentos-vs-docker-agent.md)\n- [AgentOS vs Mastra](https://www.anchorterminal.com/compare/agentos-vs-mastra.md)\n- [Agno vs Docker Agent](https://www.anchorterminal.com/compare/agno-vs-docker-agent.md)\n- [Agno vs Mastra](https://www.anchorterminal.com/compare/agno-vs-mastra.md)\n- [BoxLang AI vs Docker Agent](https://www.anchorterminal.com/compare/boxlang-ai-vs-docker-agent.md)\n- [BoxLang AI vs Mastra](https://www.anchorterminal.com/compare/boxlang-ai-vs-mastra.md)\n- [Claude Agent SDK vs Docker Agent](https://www.anchorterminal.com/compare/claude-agent-sdk-vs-docker-agent.md)\n- [Claude Agent SDK vs Mastra](https://www.anchorterminal.com/compare/claude-agent-sdk-vs-mastra.md)\n- [CrewAI vs Docker Agent](https://www.anchorterminal.com/compare/crewai-vs-docker-agent.md)\n- [CrewAI vs Mastra](https://www.anchorterminal.com/compare/crewai-vs-mastra.md)\n- [Cursor Agent SDK vs Docker Agent](https://www.anchorterminal.com/compare/cursor-agent-sdk-vs-docker-agent.md)\n- [Cursor Agent SDK vs Mastra](https://www.anchorterminal.com/compare/cursor-agent-sdk-vs-mastra.md)\n- [Docker Agent vs Agent Development Kit (ADK)](https://www.anchorterminal.com/compare/docker-agent-vs-google-adk.md)\n- [Docker Agent vs guilds.run](https://www.anchorterminal.com/compare/docker-agent-vs-guilds-run.md)\n- [Docker Agent vs LangGraph](https://www.anchorterminal.com/compare/docker-agent-vs-langgraph.md)\n- [Docker Agent vs LlamaIndex Framework](https://www.anchorterminal.com/compare/docker-agent-vs-llamaindex.md)\n- [Docker Agent vs Microsoft Agent Framework](https://www.anchorterminal.com/compare/docker-agent-vs-microsoft-agent-framework.md)\n- [Docker Agent vs OpenAI Agents SDK](https://www.anchorterminal.com/compare/docker-agent-vs-openai-agents-sdk.md)\n- [Docker Agent vs Pydantic AI](https://www.anchorterminal.com/compare/docker-agent-vs-pydantic-ai.md)\n- [Docker Agent vs smolagents](https://www.anchorterminal.com/compare/docker-agent-vs-smolagents.md)\n- [Docker Agent vs Strands Agents](https://www.anchorterminal.com/compare/docker-agent-vs-strands-agents.md)\n- [Docker Agent vs TradingAgents](https://www.anchorterminal.com/compare/docker-agent-vs-tradingagents.md)\n- [Docker Agent vs AI SDK](https://www.anchorterminal.com/compare/docker-agent-vs-vercel-ai-sdk.md)\n- [Agent Development Kit (ADK) vs Mastra](https://www.anchorterminal.com/compare/google-adk-vs-mastra.md)\n- [guilds.run vs Mastra](https://www.anchorterminal.com/compare/guilds-run-vs-mastra.md)\n- [LangGraph vs Mastra](https://www.anchorterminal.com/compare/langgraph-vs-mastra.md)\n- [LlamaIndex Framework vs Mastra](https://www.anchorterminal.com/compare/llamaindex-vs-mastra.md)\n- [Mastra vs Microsoft Agent Framework](https://www.anchorterminal.com/compare/mastra-vs-microsoft-agent-framework.md)\n- [Mastra vs OpenAI Agents SDK](https://www.anchorterminal.com/compare/mastra-vs-openai-agents-sdk.md)\n- [Mastra vs Pydantic AI](https://www.anchorterminal.com/compare/mastra-vs-pydantic-ai.md)\n- [Mastra vs smolagents](https://www.anchorterminal.com/compare/mastra-vs-smolagents.md)\n- [Mastra vs Strands Agents](https://www.anchorterminal.com/compare/mastra-vs-strands-agents.md)\n- [Mastra vs TradingAgents](https://www.anchorterminal.com/compare/mastra-vs-tradingagents.md)\n- [Mastra vs AI SDK](https://www.anchorterminal.com/compare/mastra-vs-vercel-ai-sdk.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-11-07",
    "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": "Docker Agent vs Mastra",
        "url": ""
      }
    ],
    "description": "Mastra and Docker Agent score within a point of each other for agent frameworks, 74.2 and 73.6 out of 100. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Docker Agent BB 73.6",
      "Mastra BB 74.2",
      "scores"
    ],
    "h1": "Docker Agent vs Mastra",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/docker-agent-vs-mastra",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Docker Agent vs Mastra for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/docker-agent-vs-mastra"
  },
  "tokens": {
    "markdown": 3750,
    "slim": 1630
  },
  "version": 1
}
