{
  "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": "AI SDK scores 89.8 (AA) on agent readiness against Docker Agent's 73.6 (BB), and leads in 6 of 7 scored categories.",
    "b": {
      "slug": "vercel-ai-sdk",
      "name": "AI SDK",
      "vendor": "Vercel Inc.",
      "vendorUrl": "https://vercel.com",
      "kind": "framework",
      "category": "frameworks",
      "summary": "Open-source TypeScript toolkit from Vercel for building AI applications and agents, with a provider-agnostic API, a ToolLoopAgent, an MCP client and UI hooks for React, Vue, Svelte and Angular.",
      "url": "https://www.anchorterminal.com/tools/vercel-ai-sdk",
      "markdownUrl": "https://www.anchorterminal.com/tools/vercel-ai-sdk.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/vercel-ai-sdk.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/vercel-ai-sdk.json",
      "dns": "vercel-ai-sdk.grade.anchorterminal.com",
      "repo": "https://github.com/vercel/ai",
      "license": "Apache-2.0",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "ai"
        },
        {
          "registry": "npm",
          "name": "@ai-sdk/mcp"
        },
        {
          "registry": "npm",
          "name": "@ai-sdk/workflow"
        }
      ],
      "auth": "api-key",
      "authNotes": "The SDK has no account of its own. Each provider package takes that provider's key. Plain string model IDs resolve through Vercel's AI Gateway by default, which needs AI_GATEWAY_API_KEY or a Vercel OIDC token.",
      "pricing": "free",
      "pricingNotes": "Free and open source. You pay for model calls. The optional AI Gateway charges providers' list prices with no markup, from prepaid credits, with a free monthly credit on a subset of models (https://vercel.com/docs/ai-gateway/pricing, checked 2026-11-06).",
      "priceSummary": "Free · OSS",
      "where": "library",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the AI SDK docs, the vercel/ai repository's packages or the AI Gateway pricing page. The tools registry in the repository lists a third-party x402 marketplace tool (checked 2026-10-06).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 27781,
        "npmWeekly": 44868298,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://ai-sdk.dev/docs",
      "llmsTxt": "https://ai-sdk.dev/llms.txt",
      "capabilities": [
        "agent.framework",
        "agent.mcp-client",
        "agent.multi-agent",
        "agent.durable"
      ],
      "tags": [
        "framework",
        "typescript",
        "open-source",
        "llms-txt",
        "mcp",
        "otel"
      ],
      "lastRelease": "2026-11-05",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 89.8,
        "grade": "AA",
        "agentReady": true,
        "rank": 1,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 1,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 95,
          "maintenance": 97,
          "payments": 60,
          "reliability": 93,
          "schema": 100,
          "security": 90,
          "transparency": 89
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "A TypeScript agent toolkit with ToolLoopAgent, a built-in MCP client, per-tool approvals that can be HMAC-signed, opt-in OpenTelemetry and durable runs through WorkflowAgent. It ships three major versions in 14 months (5.0, 6.0, 7.0), each with a migration guide, and plain string model IDs route through Vercel's AI Gateway unless another provider is set.",
        "bestFor": "TypeScript teams building agents and chat UIs who want one API across many providers and a short path to MCP.",
        "strengths": [
          "Apache 2.0, with 246 npm releases of `ai` in the 90 days to 6 October 2026",
          "MCP client in @ai-sdk/mcp with HTTP, SSE and stdio transports, OAuth and opt-in retries for tools/call",
          "Per-tool approvals, HMAC-signed approvals and Open Policy Agent rules in @ai-sdk/policy-opa",
          "Telemetry only after an OpenTelemetry integration is registered, with recordInputs and recordOutputs switches",
          "Tool search with deferred loading, so the model sees only a search tool until it needs more"
        ],
        "weaknesses": [
          "TypeScript only, and `ai` 7.x needs Node 22 or newer",
          "Three major versions between July 2025 and June 2026, each with breaking changes",
          "String model IDs go to Vercel's AI Gateway by default, which needs a Vercel key",
          "No input or output guardrail primitive, and sandboxes and stdio MCP transport are still experimental",
          "1,399 open issues and pull requests on 4 October 2026, per a GitHub mirror"
        ],
        "agentNotes": [
          "Pass a provider instance such as openai('model') if traffic shouldn't go through Vercel's AI Gateway",
          "Set toolApproval on tools that write, and experimental_toolApprovalSecret when approvals come back from a browser",
          "Raise or replace the default stop condition of 20 steps with stopWhen",
          "Close the MCP client after the run, and use HTTP transport outside local development",
          "Set recordInputs and recordOutputs to false when spans would carry secrets"
        ],
        "metrics": {
          "kind": "library",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "AA",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 89.8
          }
        ],
        "editorialScores": {
          "ergonomics": 95,
          "maintenance": 97,
          "payments": 60,
          "reliability": 93,
          "schema": 100,
          "security": 90,
          "transparency": 86
        },
        "provenanceScore": 91,
        "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 i ai   # MCP: npm i @ai-sdk/mcp"
      },
      "letme": {
        "capability": "https://letme.dev/agent.framework",
        "tool": "https://letme.dev/vercel-ai-sdk"
      },
      "area": "frameworks",
      "provenance": {
        "legalEntity": "Vercel Inc.",
        "domain": "ai-sdk.dev",
        "domainRegistered": "2024-09-26",
        "endpointOnVendorDomain": null,
        "terms": "https://vercel.com/legal/terms",
        "privacy": "https://vercel.com/legal/privacy-policy",
        "statusPage": "https://www.vercel-status.com",
        "changelog": "https://github.com/vercel/ai/blob/main/packages/ai/CHANGELOG.md",
        "securityTxt": "valid",
        "checked": "2026-11-06",
        "notes": [
          "The privacy notice (effective 1 June 2026) names Vercel Inc.",
          "vercel.com/.well-known/security.txt points to HackerOne and responsible.disclosure@vercel.com and expires 2027-09-28.",
          "RDAP gives ai-sdk.dev a registration date of 2024-09-26 and vercel.com 1999-10-04.",
          "The status page covers Vercel's hosted services, including the AI Gateway, not the library."
        ],
        "score": 91
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/vercel-ai-sdk.json",
      "live": {
        "slug": "vercel-ai-sdk",
        "vendorStatus": {
          "page": "https://www.vercel-status.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-07T19:23:51.340953129Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "vercel/ai",
            "version": "@ai-sdk/zai@2.0.19",
            "released": "2026-11-06",
            "seenAt": "2026-11-07T00:15:06.320451302Z"
          },
          {
            "registry": "npm",
            "name": "@ai-sdk/mcp",
            "version": "2.0.92",
            "seenAt": "2026-11-07T00:15:02.210062748Z"
          },
          {
            "registry": "npm",
            "name": "@ai-sdk/workflow",
            "version": "2.0.96",
            "seenAt": "2026-11-07T00:15:04.290347217Z"
          },
          {
            "registry": "npm",
            "name": "ai",
            "version": "7.0.164",
            "seenAt": "2026-11-07T00:15:02.102209516Z"
          }
        ],
        "githubStars": 27784,
        "npmWeekly": 44868298,
        "securityTxt": {
          "url": "https://ai-sdk.dev/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T15:59:53.467050636Z"
        },
        "llmsTxt": {
          "url": "https://ai-sdk.dev/llms.txt",
          "ok": false,
          "status": 0,
          "checkedAt": "2026-11-07T15:34:35.854467131Z"
        },
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/vercel/ai/main/packages/ai/CHANGELOG.md",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:24:01.002799396Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6e9ccd1db741"
          }
        ],
        "updatedAt": "2026-11-07T19:23:51.340953129Z"
      }
    },
    "edges": [
      {
        "by": 20,
        "category": "security",
        "leads": "vercel-ai-sdk",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Framework reading. 30 for what leaves the machine by default, 20 for approvals and sandboxing, 15 for prompt-injection posture, 15 for audit and 20 for the security programme. Usage telemetry is on by default, with a notice on first start and `TELEMETRY_ENABLED=false` to stop it. The telemetry page, moved to the configuration section by 17 October, still says command events include positional arguments, which for `run` and `exec` can include prompts, and error text (12). Four safety modes with allow, ask and deny rules, a default that asks for anything not read-only, `--exec` rejecting unapproved calls, `--sandbox` for a Docker Sandboxes VM, and HTTP MCP defaulting to loopback and `restricted`. Since 1.152.0 (21 October) the API server rejects cross-origin requests, checks `Host` on unauthenticated listeners and requires `--auth-token` on non-loopback ones. A run's `--listen` control plane still has no built-in authentication and accepts loopback addresses and local sockets only (19). The docs treat skill files and third-party configs as untrusted and restrict URI schemes against prompt injection, with no dedicated guidance page (10). Hooks for audit logging and approval decisions, opt-in OpenTelemetry traces, NDJSON transcripts and a session database (14). SECURITY.md with a 72-hour acknowledgement, a valid security.txt on docker.com (expires 2030-01-01, re-read on 1 November), two advisories published on GitHub with fixed versions, and CodeQL and zizmor in CI. No paid bounty, and we saw no CVE identifiers on the advisories. The advisories page answered 403 on 1 November, the GitHub advisory database held no new docker-agent entry from August to November, and OSV lists none for the Go module. 1.152.0 updates Go to 1.27.3 for its security fixes and locks down the REST API against CSRF and DNS rebinding, with no advisory found for the latter (15). SOC 2 isn't scored for a framework.",
          "b": "No telemetry until an OpenTelemetry integration is registered. String model IDs route to Vercel's AI Gateway by default, which is documented and needs a Vercel key, so it isn't silent (25). Per-tool approval, HMAC-signed approvals against forged client history, and Open Policy Agent rules in @ai-sdk/policy-opa, though sandboxes are experimental (20). ToolLoopAgent rejects system messages in prompts by default as an injection risk, URL fetches are checked against private addresses, and MCP HTTP transport refuses redirects by default, but there's no guardrail primitive (10). OpenTelemetry spans for every model and tool call to any backend, opt-in (15). HackerOne programme, a valid security.txt, SECURITY.md and two low-severity advisories published with fixed versions (20). Framework reading, so SOC 2 isn't scored."
        },
        "scores": {
          "a": 70,
          "b": 90
        }
      },
      {
        "by": 14,
        "category": "ergonomics",
        "leads": "vercel-ai-sdk",
        "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 a few lines with createMCPClient and client.tools(), and tool search with deferLoading keeps unused tool definitions out of the prompt (25). stopWhen with a default of 20 steps, and prepareStep to trim messages, switch models or limit active tools per step (20). 38 typed errors with isInstance guards, and MCP results with isError go back to the model (20). maxRetries on model calls, opt-in retries for transient MCP failures only, and WorkflowAgent for durable steps with automatic retries (20). Few required parameters, but TypeScript only, and a string model ID needs an AI Gateway key unless a default provider is set (10)."
        },
        "scores": {
          "a": 81,
          "b": 95
        }
      },
      {
        "by": 10,
        "category": "schema",
        "leads": "vercel-ai-sdk",
        "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 for every function (25). llms.txt and a Markdown copy of each page (10). The docs say when to use each piece, such as a table of WorkflowAgent against ToolLoopAgent, a when-to-use section for subagents and harnesses, and HTTP over stdio for MCP in production (20). Tools take Zod or JSON Schema inputs (15). 38 error types documented in the reference, with error-handling guides and examples throughout (15). Versioning page and a changesets CHANGELOG per package (15)."
        },
        "scores": {
          "a": 90,
          "b": 100
        }
      },
      {
        "by": 8,
        "category": "transparency",
        "leads": "vercel-ai-sdk",
        "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 (30). The library stores nothing. The AI Gateway's ZDR page says it doesn't retain prompts or outputs and per-request ZDR is available on Pro and Enterprise, and Vercel's privacy notice is dated 1 June 2026, but we didn't read a DPA or subprocessor list (22). Deprecated APIs are removed only at majors with a migration guide, and 6.x and 5.x keep getting releases, without a written support window (14). Telemetry is opt-in and documented, with switches for inputs and outputs (20)."
        },
        "scores": {
          "a": 81,
          "b": 89
        }
      },
      {
        "by": 5,
        "category": "reliability",
        "leads": "vercel-ai-sdk",
        "name": "Reliability",
        "reasons": {
          "a": "Read with the local-software lines, because the owner runs it. Binaries for macOS, Linux and Windows on amd64 and arm64 on every GitHub release, a Homebrew formula at 1.154.0 on 1 November, a Docker Hub image updated on 31 October, and Docker Desktop 4.63 and later bundle it. Go 1.27 is the stated minimum for source builds (20). The ci workflow runs on every push to main with about 1,350 test files and an e2e directory. Nine of the last ten push runs passed on 8 October, per the 8 October check, not re-read on 1 November (25). 25 open issues and 17 open pull requests on 8 October, most labelled and answered, with open reports of a race in `transfer_task` (#4156), a hand-off dropped silently (#4242) and `edit_file` editing the first of several matches (#3929), per the 8 October check, not re-read on 1 November (20). The changelog has Breaking Changes sections, but those changes ship in minor releases (1.114.0, 1.133.0 and 1.137.0 since July) and the major version has never moved. Since then 1.152.0 (21 October) made `--auth-token` mandatory on non-loopback API listeners under Bug Fixes, and 1.153.0 (28 October) removed MCP sampling, roots and logging support under Technical Changes and changed Go runtime packages in commits marked `!`, none of them in a Breaking Changes section (8). 1.154.0, past 1.0 (15).",
          "b": "Official npm packages, with `ai` 7.x requiring Node 22 or newer (20). A public CI workflow with lint, type checks, unit tests, Node-version tests, MCP tests on Windows and e2e tests runs on every push to main, and the newest completed CI runs on main passed on 6 November (25). 1,517 open issues and pull requests on 6 November from GitHub's API, with 1,059 issues opened in the 90 days to 3 November; 47 of the 50 newest had a comment and 32 were closed (18). A written versioning page with breaking changes only in majors, experimental_ prefixes for unstable APIs and a migration guide per major (15). 7.0.163 (15). 20+25+18+15+15 = 93, up from 73 on 6 October, when GitHub couldn't be read."
        },
        "scores": {
          "a": 88,
          "b": 93
        }
      }
    ],
    "facts": [
      {
        "a": "Agent framework",
        "b": "Agent framework",
        "name": "Kind"
      },
      {
        "a": "Docker",
        "b": "Vercel 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",
        "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-05",
        "name": "Last release"
      },
      {
        "a": "2026-08-26",
        "b": "2026-06-01",
        "name": "Terms last updated"
      },
      {
        "a": "2026-08-26",
        "b": "2026-06-01",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "yes, with an opt-out",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "4k stars",
        "b": "28k stars, 44.9M npm/wk",
        "name": "Popularity"
      },
      {
        "a": "2.8/5 (4)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "AI SDK scores 89.8 (AA) on agent readiness against Docker Agent's 73.6 (BB), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, Docker Agent or AI SDK?"
      },
      {
        "answer": "Yes. Docker Agent is open source (Apache-2.0). AI SDK is open source (Apache-2.0).",
        "question": "Are Docker Agent and AI SDK open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "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": [
          "Reliability, 93 against 88",
          "Schema \u0026 documentation, 100 against 90",
          "Agent ergonomics, 95 against 81",
          "Security \u0026 auth, 90 against 70",
          "Transparency \u0026 trust, 89 against 81"
        ],
        "also": [
          "No incidents deducted, where Docker Agent loses 7 points for them"
        ],
        "goodFor": "TypeScript teams building agents and chat UIs who want one API across many providers and a short path to MCP.",
        "slug": "vercel-ai-sdk",
        "watchFor": "TypeScript only, and `ai` 7.x needs Node 22 or newer"
      }
    ],
    "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"
        }
      ],
      "vercel-ai-sdk": 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-vercel-ai-sdk.json",
        "title": "AgentOS vs AI SDK",
        "url": "https://www.anchorterminal.com/compare/agentos-vs-vercel-ai-sdk"
      },
      {
        "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-vercel-ai-sdk.json",
        "title": "Agno vs AI SDK",
        "url": "https://www.anchorterminal.com/compare/agno-vs-vercel-ai-sdk"
      },
      {
        "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-vercel-ai-sdk.json",
        "title": "BoxLang AI vs AI SDK",
        "url": "https://www.anchorterminal.com/compare/boxlang-ai-vs-vercel-ai-sdk"
      },
      {
        "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-vercel-ai-sdk.json",
        "title": "Claude Agent SDK vs AI SDK",
        "url": "https://www.anchorterminal.com/compare/claude-agent-sdk-vs-vercel-ai-sdk"
      },
      {
        "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-vercel-ai-sdk.json",
        "title": "CrewAI vs AI SDK",
        "url": "https://www.anchorterminal.com/compare/crewai-vs-vercel-ai-sdk"
      },
      {
        "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-vercel-ai-sdk.json",
        "title": "Cursor Agent SDK vs AI SDK",
        "url": "https://www.anchorterminal.com/compare/cursor-agent-sdk-vs-vercel-ai-sdk"
      },
      {
        "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-mastra.json",
        "title": "Docker Agent vs Mastra",
        "url": "https://www.anchorterminal.com/compare/docker-agent-vs-mastra"
      },
      {
        "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/google-adk-vs-vercel-ai-sdk.json",
        "title": "Agent Development Kit (ADK) vs AI SDK",
        "url": "https://www.anchorterminal.com/compare/google-adk-vs-vercel-ai-sdk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/guilds-run-vs-vercel-ai-sdk.json",
        "title": "guilds.run vs AI SDK",
        "url": "https://www.anchorterminal.com/compare/guilds-run-vs-vercel-ai-sdk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/langgraph-vs-vercel-ai-sdk.json",
        "title": "LangGraph vs AI SDK",
        "url": "https://www.anchorterminal.com/compare/langgraph-vs-vercel-ai-sdk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/llamaindex-vs-vercel-ai-sdk.json",
        "title": "LlamaIndex Framework vs AI SDK",
        "url": "https://www.anchorterminal.com/compare/llamaindex-vs-vercel-ai-sdk"
      },
      {
        "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"
      },
      {
        "json": "https://www.anchorterminal.com/compare/microsoft-agent-framework-vs-vercel-ai-sdk.json",
        "title": "Microsoft Agent Framework vs AI SDK",
        "url": "https://www.anchorterminal.com/compare/microsoft-agent-framework-vs-vercel-ai-sdk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openai-agents-sdk-vs-vercel-ai-sdk.json",
        "title": "OpenAI Agents SDK vs AI SDK",
        "url": "https://www.anchorterminal.com/compare/openai-agents-sdk-vs-vercel-ai-sdk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pydantic-ai-vs-vercel-ai-sdk.json",
        "title": "Pydantic AI vs AI SDK",
        "url": "https://www.anchorterminal.com/compare/pydantic-ai-vs-vercel-ai-sdk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/smolagents-vs-vercel-ai-sdk.json",
        "title": "smolagents vs AI SDK",
        "url": "https://www.anchorterminal.com/compare/smolagents-vs-vercel-ai-sdk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/strands-agents-vs-vercel-ai-sdk.json",
        "title": "Strands Agents vs AI SDK",
        "url": "https://www.anchorterminal.com/compare/strands-agents-vs-vercel-ai-sdk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/tradingagents-vs-vercel-ai-sdk.json",
        "title": "TradingAgents vs AI SDK",
        "url": "https://www.anchorterminal.com/compare/tradingagents-vs-vercel-ai-sdk"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 5,
        "docker-agent": 88,
        "edge": "vercel-ai-sdk",
        "key": "reliability",
        "name": "Reliability",
        "vercel-ai-sdk": 93,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 10,
        "docker-agent": 90,
        "edge": "vercel-ai-sdk",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "vercel-ai-sdk": 100,
        "weight": 13
      },
      {
        "by": 14,
        "docker-agent": 81,
        "edge": "vercel-ai-sdk",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "vercel-ai-sdk": 95,
        "weight": 13
      },
      {
        "by": 20,
        "docker-agent": 70,
        "edge": "vercel-ai-sdk",
        "key": "security",
        "name": "Security \u0026 auth",
        "vercel-ai-sdk": 90,
        "weight": 14
      },
      {
        "by": 0,
        "docker-agent": 60,
        "edge": "",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "vercel-ai-sdk": 60,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 1,
        "docker-agent": 96,
        "edge": "vercel-ai-sdk",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "vercel-ai-sdk": 97,
        "weight": 7
      },
      {
        "by": 8,
        "docker-agent": 81,
        "edge": "vercel-ai-sdk",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "vercel-ai-sdk": 89,
        "weight": 7
      }
    ],
    "summary": "AI SDK scores 89.8 (AA) on agent readiness against Docker Agent's 73.6 (BB), and leads in 6 of 7 scored categories. 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.",
      "vercel-ai-sdk": "A TypeScript agent toolkit with ToolLoopAgent, a built-in MCP client, per-tool approvals that can be HMAC-signed, opt-in OpenTelemetry and durable runs through WorkflowAgent. It ships three major versions in 14 months (5.0, 6.0, 7.0), each with a migration guide, and plain string model IDs route through Vercel's AI Gateway unless another provider is set."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/docker-agent-vs-vercel-ai-sdk",
    "json": "https://www.anchorterminal.com/compare/docker-agent-vs-vercel-ai-sdk.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/docker-agent-vs-vercel-ai-sdk.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/docker-agent-vs-vercel-ai-sdk.min.md"
  },
  "markdown": "AI SDK scores 89.8 (AA) on agent readiness against Docker Agent's 73.6 (BB), and leads in 6 of 7 scored categories. 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- AI SDK: grade AA, 89.8/100, rank #1 of 1510. Markdown https://www.anchorterminal.com/tools/vercel-ai-sdk.md · JSON https://www.anchorterminal.com/api/v1/tools/vercel-ai-sdk.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\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### AI SDK (AA)\n\nGood for: TypeScript teams building agents and chat UIs who want one API across many providers and a short path to MCP.\n\nAhead on:\n- Reliability, 93 against 88\n- Schema \u0026 documentation, 100 against 90\n- Agent ergonomics, 95 against 81\n- Security \u0026 auth, 90 against 70\n- Transparency \u0026 trust, 89 against 81\n\nAlso in its favour:\n- No incidents deducted, where Docker Agent loses 7 points for them\n\nWatch for: TypeScript only, and `ai` 7.x needs Node 22 or newer\n\n\n## Why the edge\n\n### Security \u0026 auth: AI SDK +20\n\n- Docker Agent (70): Framework reading. 30 for what leaves the machine by default, 20 for approvals and sandboxing, 15 for prompt-injection posture, 15 for audit and 20 for the security programme. Usage telemetry is on by default, with a notice on first start and `TELEMETRY_ENABLED=false` to stop it. The telemetry page, moved to the configuration section by 17 October, still says command events include positional arguments, which for `run` and `exec` can include prompts, and error text (12). Four safety modes with allow, ask and deny rules, a default that asks for anything not read-only, `--exec` rejecting unapproved calls, `--sandbox` for a Docker Sandboxes VM, and HTTP MCP defaulting to loopback and `restricted`. Since 1.152.0 (21 October) the API server rejects cross-origin requests, checks `Host` on unauthenticated listeners and requires `--auth-token` on non-loopback ones. A run's `--listen` control plane still has no built-in authentication and accepts loopback addresses and local sockets only (19). The docs treat skill files and third-party configs as untrusted and restrict URI schemes against prompt injection, with no dedicated guidance page (10). Hooks for audit logging and approval decisions, opt-in OpenTelemetry traces, NDJSON transcripts and a session database (14). SECURITY.md with a 72-hour acknowledgement, a valid security.txt on docker.com (expires 2030-01-01, re-read on 1 November), two advisories published on GitHub with fixed versions, and CodeQL and zizmor in CI. No paid bounty, and we saw no CVE identifiers on the advisories. The advisories page answered 403 on 1 November, the GitHub advisory database held no new docker-agent entry from August to November, and OSV lists none for the Go module. 1.152.0 updates Go to 1.27.3 for its security fixes and locks down the REST API against CSRF and DNS rebinding, with no advisory found for the latter (15). SOC 2 isn't scored for a framework.\n- AI SDK (90): No telemetry until an OpenTelemetry integration is registered. String model IDs route to Vercel's AI Gateway by default, which is documented and needs a Vercel key, so it isn't silent (25). Per-tool approval, HMAC-signed approvals against forged client history, and Open Policy Agent rules in @ai-sdk/policy-opa, though sandboxes are experimental (20). ToolLoopAgent rejects system messages in prompts by default as an injection risk, URL fetches are checked against private addresses, and MCP HTTP transport refuses redirects by default, but there's no guardrail primitive (10). OpenTelemetry spans for every model and tool call to any backend, opt-in (15). HackerOne programme, a valid security.txt, SECURITY.md and two low-severity advisories published with fixed versions (20). Framework reading, so SOC 2 isn't scored.\n\n### Agent ergonomics: AI SDK +14\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- AI SDK (95): An MCP client in a few lines with createMCPClient and client.tools(), and tool search with deferLoading keeps unused tool definitions out of the prompt (25). stopWhen with a default of 20 steps, and prepareStep to trim messages, switch models or limit active tools per step (20). 38 typed errors with isInstance guards, and MCP results with isError go back to the model (20). maxRetries on model calls, opt-in retries for transient MCP failures only, and WorkflowAgent for durable steps with automatic retries (20). Few required parameters, but TypeScript only, and a string model ID needs an AI Gateway key unless a default provider is set (10).\n\n### Schema \u0026 documentation: AI SDK +10\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- AI SDK (100): Typed TypeScript API with a reference section for every function (25). llms.txt and a Markdown copy of each page (10). The docs say when to use each piece, such as a table of WorkflowAgent against ToolLoopAgent, a when-to-use section for subagents and harnesses, and HTTP over stdio for MCP in production (20). Tools take Zod or JSON Schema inputs (15). 38 error types documented in the reference, with error-handling guides and examples throughout (15). Versioning page and a changesets CHANGELOG per package (15).\n\n### Transparency \u0026 trust: AI SDK +8\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- AI SDK (89): Apache 2.0 (30). The library stores nothing. The AI Gateway's ZDR page says it doesn't retain prompts or outputs and per-request ZDR is available on Pro and Enterprise, and Vercel's privacy notice is dated 1 June 2026, but we didn't read a DPA or subprocessor list (22). Deprecated APIs are removed only at majors with a migration guide, and 6.x and 5.x keep getting releases, without a written support window (14). Telemetry is opt-in and documented, with switches for inputs and outputs (20).\n\n### Reliability: AI SDK +5\n\n- Docker Agent (88): Read with the local-software lines, because the owner runs it. Binaries for macOS, Linux and Windows on amd64 and arm64 on every GitHub release, a Homebrew formula at 1.154.0 on 1 November, a Docker Hub image updated on 31 October, and Docker Desktop 4.63 and later bundle it. Go 1.27 is the stated minimum for source builds (20). The ci workflow runs on every push to main with about 1,350 test files and an e2e directory. Nine of the last ten push runs passed on 8 October, per the 8 October check, not re-read on 1 November (25). 25 open issues and 17 open pull requests on 8 October, most labelled and answered, with open reports of a race in `transfer_task` (#4156), a hand-off dropped silently (#4242) and `edit_file` editing the first of several matches (#3929), per the 8 October check, not re-read on 1 November (20). The changelog has Breaking Changes sections, but those changes ship in minor releases (1.114.0, 1.133.0 and 1.137.0 since July) and the major version has never moved. Since then 1.152.0 (21 October) made `--auth-token` mandatory on non-loopback API listeners under Bug Fixes, and 1.153.0 (28 October) removed MCP sampling, roots and logging support under Technical Changes and changed Go runtime packages in commits marked `!`, none of them in a Breaking Changes section (8). 1.154.0, past 1.0 (15).\n- AI SDK (93): Official npm packages, with `ai` 7.x requiring Node 22 or newer (20). A public CI workflow with lint, type checks, unit tests, Node-version tests, MCP tests on Windows and e2e tests runs on every push to main, and the newest completed CI runs on main passed on 6 November (25). 1,517 open issues and pull requests on 6 November from GitHub's API, with 1,059 issues opened in the 90 days to 3 November; 47 of the 50 newest had a comment and 32 were closed (18). A written versioning page with breaking changes only in majors, experimental_ prefixes for unstable APIs and a migration guide per major (15). 7.0.163 (15). 20+25+18+15+15 = 93, up from 73 on 6 October, when GitHub couldn't be read.\n\n## Score by category\n\n| Category | Weight | Docker Agent | AI SDK | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 88 | 93 | AI SDK +5 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 90 | 100 | AI SDK +10 |\n| Agent ergonomics | 13% (16.2 this run) | 81 | 95 | AI SDK +14 |\n| Security \u0026 auth | 14% (17.5 this run) | 70 | 90 | AI SDK +20 |\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 | 97 | AI SDK +1 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 81 | 89 | AI SDK +8 |\n| Negative events | ≤15 | -7 | 0 | |\n| **Total** | | **73.6 · BB** | **89.8 · AA** | |\n\n## Facts side by side\n\n| Fact | Docker Agent | AI SDK |\n| --- | --- | --- |\n| Kind | Agent framework | Agent framework |\n| Vendor | Docker | Vercel 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 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-28 | 2026-11-05 |\n| Terms last updated | 2026-08-26 | 2026-06-01 |\n| Privacy policy last updated | 2026-08-26 | 2026-06-01 |\n| Customer content may train models | not found in the text | yes, with an opt-out |\n| Terms restrict automated access | yes | not found in the text |\n| Terms restrict benchmarking | yes | not found in the text |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | yes | yes |\n| Popularity | 4k stars | 28k stars, 44.9M 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### AI SDK\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**AI SDK.** A TypeScript agent toolkit with ToolLoopAgent, a built-in MCP client, per-tool approvals that can be HMAC-signed, opt-in OpenTelemetry and durable runs through WorkflowAgent. It ships three major versions in 14 months (5.0, 6.0, 7.0), each with a migration guide, and plain string model IDs route through Vercel's AI Gateway unless another provider is set.\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### AI SDK\n\n1. Pass a provider instance such as openai('model') if traffic shouldn't go through Vercel's AI Gateway\n2. Set toolApproval on tools that write, and experimental_toolApprovalSecret when approvals come back from a browser\n3. Raise or replace the default stop condition of 20 steps with stopWhen\n4. Close the MCP client after the run, and use HTTP transport outside local development\n5. Set recordInputs and recordOutputs to false when spans would carry secrets\n\n## Questions\n\n### Which is better for AI agents, Docker Agent or AI SDK?\n\nAI SDK scores 89.8 (AA) on agent readiness against Docker Agent's 73.6 (BB), and leads in 6 of 7 scored categories.\n\n### Are Docker Agent and AI SDK open source?\n\nYes. Docker Agent is open source (Apache-2.0). AI SDK is open source (Apache-2.0).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/docker-agent-vs-vercel-ai-sdk.json, and with the fewest tokens: https://www.anchorterminal.com/compare/docker-agent-vs-vercel-ai-sdk.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"docker-agent\", \"b\": \"vercel-ai-sdk\"}`. From a terminal: `anchor compare docker-agent vercel-ai-sdk`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/docker-agent.json and https://www.anchorterminal.com/api/v1/tools/vercel-ai-sdk.json\n\n## Other comparisons with Docker Agent or AI SDK\n\n- [AgentOS vs Docker Agent](https://www.anchorterminal.com/compare/agentos-vs-docker-agent.md)\n- [AgentOS vs AI SDK](https://www.anchorterminal.com/compare/agentos-vs-vercel-ai-sdk.md)\n- [Agno vs Docker Agent](https://www.anchorterminal.com/compare/agno-vs-docker-agent.md)\n- [Agno vs AI SDK](https://www.anchorterminal.com/compare/agno-vs-vercel-ai-sdk.md)\n- [BoxLang AI vs Docker Agent](https://www.anchorterminal.com/compare/boxlang-ai-vs-docker-agent.md)\n- [BoxLang AI vs AI SDK](https://www.anchorterminal.com/compare/boxlang-ai-vs-vercel-ai-sdk.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 AI SDK](https://www.anchorterminal.com/compare/claude-agent-sdk-vs-vercel-ai-sdk.md)\n- [CrewAI vs Docker Agent](https://www.anchorterminal.com/compare/crewai-vs-docker-agent.md)\n- [CrewAI vs AI SDK](https://www.anchorterminal.com/compare/crewai-vs-vercel-ai-sdk.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 AI SDK](https://www.anchorterminal.com/compare/cursor-agent-sdk-vs-vercel-ai-sdk.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 Mastra](https://www.anchorterminal.com/compare/docker-agent-vs-mastra.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- [Agent Development Kit (ADK) vs AI SDK](https://www.anchorterminal.com/compare/google-adk-vs-vercel-ai-sdk.md)\n- [guilds.run vs AI SDK](https://www.anchorterminal.com/compare/guilds-run-vs-vercel-ai-sdk.md)\n- [LangGraph vs AI SDK](https://www.anchorterminal.com/compare/langgraph-vs-vercel-ai-sdk.md)\n- [LlamaIndex Framework vs AI SDK](https://www.anchorterminal.com/compare/llamaindex-vs-vercel-ai-sdk.md)\n- [Mastra vs AI SDK](https://www.anchorterminal.com/compare/mastra-vs-vercel-ai-sdk.md)\n- [Microsoft Agent Framework vs AI SDK](https://www.anchorterminal.com/compare/microsoft-agent-framework-vs-vercel-ai-sdk.md)\n- [OpenAI Agents SDK vs AI SDK](https://www.anchorterminal.com/compare/openai-agents-sdk-vs-vercel-ai-sdk.md)\n- [Pydantic AI vs AI SDK](https://www.anchorterminal.com/compare/pydantic-ai-vs-vercel-ai-sdk.md)\n- [smolagents vs AI SDK](https://www.anchorterminal.com/compare/smolagents-vs-vercel-ai-sdk.md)\n- [Strands Agents vs AI SDK](https://www.anchorterminal.com/compare/strands-agents-vs-vercel-ai-sdk.md)\n- [TradingAgents vs AI SDK](https://www.anchorterminal.com/compare/tradingagents-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 AI SDK",
        "url": ""
      }
    ],
    "description": "AI SDK scores 89.8 (AA) to Docker Agent's 73.6 (BB) for agent frameworks. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Docker Agent BB 73.6",
      "AI SDK AA 89.8",
      "scores"
    ],
    "h1": "Docker Agent vs AI SDK",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/docker-agent-vs-vercel-ai-sdk",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Docker Agent vs AI SDK for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/docker-agent-vs-vercel-ai-sdk"
  },
  "tokens": {
    "markdown": 4950,
    "slim": 2880
  },
  "version": 1
}
