Deep research · adversarially verified · July 2026

Agent SDKs for Edge, Cloud & NAS

13 agent-building SDKs and platforms evaluated against three deployment targets: Cloudflare edge (Workers / Durable Objects), Google Cloud (Agent Engine / Cloud Run), and self-hosted Docker on a QNAP NAS (x86_64, 8 GB). Every load-bearing claim went through 3-vote adversarial verification against primary sources.

13SDKs & platforms
141research agents, 2 passes
52claims verified 3-vote
43 ✓ / 9 ✗confirmed vs killed or corrected
150+primary sources

#Per-target verdicts

No single SDK spans all three targets. The framework choice is target-driven — pick the deployment story first, then the SDK.

① Cloudflare edge
Cloudflare Agents SDK

The only framework with native durable state on workerd: durable identity, per-agent SQLite (10 GB/DO), this.schedule(), WebSocket hibernation, and first-class MCP both directions (McpAgent, addMcpServer()). Verified 3-0 on primary docs.

It's a one-way door: no self-host or Docker path exists — workerd's open-source Durable Object storage is in-memory only. MIT code, proprietary runtime.

Runner-up: Vercel AI SDK core — fetch-based, documented by Cloudflare itself (workers-ai-provider); pair with DO / Cloudflare Workflows for durability. Every Node-first SDK inherits nodejs_compat polyfill risk.
② Google Cloud
Google ADK (but runtime ≠ framework)

GCP decouples the two: managed Agent Engine (rebranded "Agent Runtime", May 2026) accepts ADK, LangChain, LangGraph, AG2, LlamaIndex, or custom Python agents and ships managed Sessions + Memory Bank (GA Dec 2025). Cloud Run hosts any containerized framework + streamable-HTTP MCP servers, but all state must be externalized.

ADK is the only SDK with first-class support on both paths (adk deploy cloud_run / Agent Engine templates).

TS frameworks (Mastra, Vercel, Cloudflare SDK) can't enter Agent Engine at all — Cloud Run only.
③ Docker on QNAP (TBS-464)
Pydantic AI (Py) · Mastra (TS)

Pydantic AI + DBOS gives durable execution fully in-process against a SQLite file — zero extra containers, MIT, ~300 MB image. Mastra bundles to a single self-contained Node server (mastra build) with suspend/resume workflows on LibSQL — also one container.

Google ADK is the only SDK with a documented fully-offline Docker/Podman path (LiteLLM/Ollama) — pick it if air-gap matters or you also deploy to GCP.

Low-code: Flowise (lighter) or Langflow — but both have active 2025–26 critical-RCE track records: LAN-only, never port-forward.
Cross-target rule of thumb: if one codebase must span GCP + NAS, use ADK (verified end-to-end) or Pydantic AI (custom-agent path on Agent Engine, first-class Docker). If it must span Cloudflare + anything else, the closest is Vercel AI SDK — same core API on Workers and in Docker, with per-target durability layers (DO/Workflows on CF, Postgres World in Docker). Nothing verified spans all three with the same durability semantics.

#Comparison matrix

Ratings reflect verified, documented support as of 2026-07-06 — not vendor marketing. Hover rows; scroll horizontally on mobile.

SDK / platformLangLicenseDurable stateMCPCF edge (workerd)Docker self-hostGCP
Cloudflare Agents SDKCloudflareTSMIT code · proprietary runtimePer-agent SQLite, schedules, + CF Workflowsclient + server● native○ none○ n/a
Vercel AI SDK + Workflow DevKitVercelTSApache-2.0"use workflow" steps · Postgres World (self-host)client (stable v6+)● core native● first-classCloud Run
MastraKepler Software · YC W25TSApache-2.0 (+ paid ee/)suspend/resume snapshots · 12 storage backendsclient + server◐ deployer, bundle friction● first-classCloud Run
OpenAI Agents SDKOpenAITS · PyMITSessions (SQLite/Redis); no durable execclient◐ "limited support"● works (Node 22+)Cloud Run
LangGraphLangChain Inc.Py · TSMIT core · ELv2 serverSuperstep checkpointers (Postgres/SQLite)client · server via Platform◐ Postgres via Hyperdrive◐ OSS free · server licensed● Agent Engine ✓
Google ADKGooglePyApache-2.0Sessions (swap InMemory → SQLite/Redis) · Memory Bank on GCPclient○ no● first-class, offline OK● both paths ✓✓
AWS Strands AgentsAWSPy · TSApache-2.0Session persistence, not durable exec (exp. checkpoint module)client (A2A for serving)○ unsupported● first-class, off-AWS OKCloud Run (custom)
Bedrock AgentCoreAWS · managed platformany (HTTP contract)Apache SDK · proprietary platformManaged Memory service ($/event) · 8h microVM sessionsdeep: hosts + client + Gateway○ no◐ dev loop only○ AWS-only
Microsoft Agent FrameworkMicrosoft · AutoGen+SK successor.NET · PyMITSuperstep checkpoints, manual resume; auto-recovery = Azure DTSclient + server (GA)○ no JS port● worksCloud Run (custom)
Pydantic AIPydantic (company)PyMITTemporal · DBOS (in-proc SQLite/PG) · Prefect · Restateclient + server + sampling◐ unproven (Pyodide)● first-classCloud Run · AE custom
Claude Agent SDKAnthropicPy · TSMIT wrapper · proprietary runtimeJSONL transcripts + SessionStore mirror (S3/Redis/PG)client + in-process servers○ subprocess model● first-class (1 GiB/agent)Cloud Run + Vertex billing
FlowiseFlowiseAI · low-codeTS (Node)Apache-2.0 (+ commercial ee)SQLite/PG · Agentflow V2 HITL checkpoints survive restartclient only○ no● first-classCloud Run
LangflowDataStax / IBM · low-codePyMITSQLite/PG chat sessions; no workflow checkpoint/resumeclient + auto MCP server○ no● first-class (4 GB+ RAM)Cloud Run
native / first-class, documented partial — works with caveats or unproven no viable / unsupported path info context, not a rating

#SDK profiles

Each profile's load-bearing claims were independently attacked by 3 verifier agents. 3-0 verified = unanimous confirmation against primary sources; corrected = the initial claim needed fixing (see corrections).

Cloudflare Agents SDK

TypeScriptMIT + proprietary runtime

Agents as Durable Objects: durable identity, per-agent SQLite DB, this.schedule() (cron/delay persisted), WebSocket hibernation, React hooks. MCP is first-class in both directions — consume via addMcpServer(), serve via McpAgent with OAuth. 3-0 verified

Durable
Native platform capability; pair with Cloudflare Workflows for checkpointed mid-flight execution — the Agent class alone doesn't checkpoint arbitrary code
Limits
10 GB SQLite per DO · ~1,000 req/s soft limit per agent · DO location pinning
Lock-in
Hard. No self-host path exists; open-source workerd keeps DO state in-memory only (lost on restart) 3-0 verified
Decision: best-in-class on target ①, disqualified on ② and ③. Choosing it means committing to Cloudflare.

Vercel AI SDK + Workflow DevKit

TypeScriptApache-2.0

ai@7 (GA 2026-06-25): provider-agnostic core with ToolLoopAgent + stopWhen loop control, stable createMCPClient, @ai-sdk/otel. Durability lives in the separate open-source Workflow DevKit: "use workflow" compiles functions into durable resumable steps. 3-0 verified

Edge
Core is fetch-based and documented by Cloudflare itself (workers-ai-provider bindings); Workflow DevKit needs a "World" — community @fantasticfour/world-cloudflare runs on DO+SQLite corrected
Docker
Official self-host Postgres World (graphile-worker, long-lived process — explicitly not serverless); Railway template shows the 3-service shape
Lock-in
Low; Vercel-managed World/AI Gateway optional. process.env-first ergonomics assume Vercel-like runtimes
Decision: the closest thing to a cross-target TS SDK — same core everywhere, different durability adapters per target.

Mastra

TypeScriptApache-2.0 + ee/

1.0 GA 2026-01-20; 25.9k★, $35M raised, used by Replit Agent 3 / PayPal. Agents + typed graph workflows (.then/.branch/.parallel, Zod) with suspend()/resume() snapshots persisting across restarts; MCP client and server. 3-0 verified

Docker
mastra build → self-contained Hono Node server (port 4111); LibSQL file storage = full durable stack in one container 3-0 verified
Edge
Official CF deployer + D1/KV/DO storage backends, but real builds have blown the 3/10 MiB Worker caps (issue closed May 2026 without documented fix; memory-on-Workers issues remain open) — treat as fragile
QNAP
Build on a dev machine (mastra build can OOM at 4 GB), ship the artifact; runtime is a few hundred MB RSS
Decision: strongest TS pick for target ③; not yet trustworthy on ①.

OpenAI Agents SDK

TS · PythonMIT

Handoffs/guardrails-centric agent loop. Official server environments: Node 22+, Deno 2.35+, Bun 1.2.5+. Cloudflare Workers is explicitly "Limited support": requires nodejs_compat, traces must be manually flushed per-request, and traces may be inaccurate due to Workers' partial AsyncLocalStorage. 3-0 verified

Durable
Sessions/state persistence, no durable-execution engine; tracing is OpenAI-platform-centric
Docker
Plain npm/pip install in any Node 22+/Python container — unremarkable and fine
Decision: fine on ② / ③ if you live in the OpenAI ecosystem; second-class on ①.

LangGraph

Python · TSMIT core · ELv2 server

Checkpointed StateGraph supersteps; resume-after-crash, time-travel, HITL per thread_id. 1.0 GA Oct 2025, 36.6k★. The licensing split is the story: core + Postgres/SQLite checkpointers are MIT with no key and no phone-home; the Platform server (langgraph-api) is Elastic-2.0 and production self-host needs a LangSmith key (free tier metered, usage reported to beacon.langchain.com) or Enterprise license. 2-1 verified

Edge
JS core runs on Workers; PostgresSaver officially documented via Hyperdrive + nodejs_compat (June 2026) — D1 checkpointer was dropped; Agent Server forbids serverless entirely corrected
GCP
First-class on Agent Engine (managed Sessions/Memory Bank) — the portability pick for ②
Decision: OSS path is the safe cross-cloud Python choice; avoid the Platform server unless you want the licensed ops layer.

Google ADK

PythonApache-2.0

The only candidate with verified first-class coverage of Agent Engine, Cloud Run (adk deploy cloud_run), and fully-offline containers: "run it locally in Docker or Podman… no connection to Google Cloud", with local models via LiteLLM/Ollama. 3-0 verified ×3

Durable
Swap default InMemorySessionService for SQLite/Redis in production; managed Sessions + Memory Bank when on Agent Engine
Edge
No workerd story
Lock-in
Apache-2.0 and portable; deepest value (Memory Bank, managed runtime) is GCP-side gravity
Decision: the single-codebase winner for ② + ③, and the only verified air-gap option.

AWS Strands Agents

Python · TSApache-2.0

Model-driven agent loop with hooks, interrupts, multi-agent Graph/Swarm, A2A. GA, weekly releases (Py 1.45.0 / TS 1.7.0), powers Amazon Q Developer. Off-AWS Docker is officially supported: dedicated deploy guide, 15+ providers incl. Ollama/LiteLLM/llama.cpp, file-based sessions. 3-0 verified

Durable
Persistence, not durable execution: sessions restore conversation, not mid-flight execution; the endorsed durable path is AWS Lambda durable functions; native checkpoint module still experimental 3-0 verified
Edge
Browser-safe TS build exists but workerd is untested/unsupported — treat as no
Decision: good ③ choice if you like the AWS idiom; durability story trails Pydantic AI/Mastra off-AWS.

Amazon Bedrock AgentCore

any lang / HTTP contractproprietary platform

Managed primitives — Runtime (8h microVM sessions), Memory, Gateway, Identity, Browser, Code Interpreter — consumed from any framework (Strands, LangGraph, CrewAI, ADK…). MCP support is unusually deep: hosts stateful MCP servers, and Gateway unifies Lambda/OpenAPI/MCP into one MCP endpoint with semantic tool search. 3-0 verified

Self-host
None. All eight primitives exist only as AWS regional services; local Docker is a dev loop, not production 3-0 verified
Lock-in
Low on framework/model, high on platform: memory records + OAuth vault live in AWS; production images must be ARM64 Graviton
Decision: AWS's answer to Agent Engine — irrelevant to all three targets here unless you move to AWS.

Microsoft Agent Framework

.NET · PythonMIT

AutoGen + Semantic Kernel successor, 1.0 GA Apr 2026. Pregel-style typed workflows with superstep checkpointing and HITL; MCP GA both directions (agent.as_mcp_server()). No JS/TS port exists → workerd is definitionally out. 3-0 verified

Durable
Checkpoint + manual resume only — no supervisor, no auto-restart. Automatic crash recovery requires the preview Durable Task extension whose backend must be Azure-managed (worker can run anywhere, incl. GCP) 2-1, refined
Docker
MIT code runs Azure-free against any OpenAI-compatible endpoint (Ollama demos exist), but no official offline guide — you own the ops layer
Decision: pick only if you're .NET-first or Azure-adjacent; otherwise Pydantic AI covers the same ground with less gravity.

Pydantic AI

PythonMIT

Typed agents with validated structured outputs; v2 (June 2026) "capabilities" redesign. The durable-execution story is the field's most portable: Temporal, DBOS, Prefect, Restate — all shipped as official extras. DBOS checkpoints in-process to SQLite/Postgres: durable agents with zero external services. 3-0 verified

MCP
Triple support: client, server, and sampling in both directions + elicitation
Edge
Unsupported but no longer impossible — pure-Python wheels install on Python Workers since Cloudflare's Dec 2025 Pyodide overhaul; durable-exec + stdio MCP still won't run there corrected
Observability
OTel-native GenAI semconv; Logfire optional
Decision: best Python pick for ③, lowest lock-in of the entire field.

Claude Agent SDK

Python · TSMIT wrapper · ToS runtime

Claude Code as a library: query() spawns a supervised claude CLI subprocess owning the full harness — built-in tools, hooks, subagents, skills, CLAUDE.md memory. Hosting docs ship Dockerfiles/K8s manifests; sizing 1 GiB RAM + 1 CPU + 5 GiB disk per concurrent agent. 3-0 verified

Durable
JSONL transcripts + SessionStore mirror to S3/Redis/Postgres (best-effort; local disk authoritative) — transcript durability, not step-level durable execution
Edge
Impossible on isolates (subprocess + shell + disk); Anthropic's own CF path is container-backed Sandboxes
Lock-in
Claude models only (API / Bedrock / Vertex / Foundry); closed-source pinned runtime 3-0 verified
Decision: unbeatable harness depth per line of code; ~4 concurrent agents max on the 8 GB TBS-464.

Flowise & Langflow

Node · PythonApache-2.0+ee · MIT

The low-code pair (the "flue" candidates). Both: official amd64+arm64 images, SQLite zero-config default, Postgres for production. Flowise (54k★, Node, lighter idle) adds Agentflow V2 with HITL checkpoints that survive restarts; Langflow (151k★, Python, IBM-owned via DataStax) auto-exposes every flow as an MCP server. 3-0 verified

QNAP
Both fit 8 GB (Flowise ~1 GB image; Langflow ~1.25 GB compressed, 2 GB min / 4 GB+ recommended, slow cold start on the N5105)
Security
Serious track record: Langflow CVE-2025-3248 (9.8, CISA KEV) plus criticals into 2026; Flowise shipped 18 advisories on one day (May 2026) incl. authenticated host RCE with sandbox escape corrected ↑
Decision: fine as LAN-only prototyping surfaces on ③. Never expose to the internet; front with a tunnel + auth if remote access is needed.

#Why the edge filters so hard: workerd mechanics

Verified 3-0 against Cloudflare's docs and engineering blog — this is the mechanism that decides every "◐" in the edge column.

The polyfill trap

Node.js API support on Workers is opt-in (nodejs_compat flag + compatibility date ≥ 2024-09-23). Any Node API not natively implemented in workerd gets a build-time unenv polyfill — and calling an unimplemented mocked method either silently no-ops or throws:

✘ [unenv] https.request is not implemented yet!

Cloudflare has been moving fs/net/http-client to native implementations since Sept 2025, shrinking the polyfilled set — but unsupported calls still throw at runtime, in production, on the code path you didn't test.

What this means for SDK choice

  • Fetch-based cores pass: Vercel AI SDK core runs natively — it never assumed Node semantics.
  • Node-first SDKs limp: OpenAI Agents SDK is officially "Limited support" — manual trace flushing (ctx.waitUntil(forceFlush())), inaccurate traces from partial AsyncLocalStorage.
  • TCP is the hidden wall: raw-socket DB drivers (pg, node-redis) don't work — LangGraph's Workers path needs Hyperdrive in front of Postgres.
  • Bundle caps bite frameworks: 3 MiB free / 10 MiB paid (compressed) — a Mastra build hit 17.58 MiB.
  • Subprocess/filesystem SDKs are out by construction: Claude Agent SDK, MAF, ADK, low-code servers.

#Deployment recipes

Concrete verified stacks per target.

① Cloudflare edge

# Agents SDK: durable agent + MCP server
npm create cloudflare@latest -- --template \
  cloudflare/agents-starter
# state: per-agent SQLite (built-in)
# long jobs: pair with Cloudflare Workflows
# serve MCP: McpAgent + OAuth provider

Alternative: Vercel AI SDK core + workers-ai-provider, durability via Durable Objects or the community @fantasticfour/world-cloudflare World (paid plan for DOs).

② Google Cloud

# managed (Python): ADK → Agent Runtime
adk deploy agent_engine --project=$P ./agent
# container (any lang): ADK → Cloud Run
adk deploy cloud_run --project=$P ./agent
# state on Cloud Run: externalize —
# Memorystore / Firestore / Memory Bank API

Managed Sessions + Memory Bank (GA Dec 2025) are platform services billed at $0.085/vCPU-h + $0.009/GiB-h — consumable from any supported framework. MCP servers: streamable-HTTP only on Cloud Run, IAM-gated.

③ QNAP TBS-464 (Container Station)

# Python: durable with zero extra services
pip install "pydantic-ai[dbos]"
# DBOS checkpoints → SQLite file on volume

# TS: one-container Mastra server
npx mastra build   # on dev machine (RAM!)
docker run -p 4111:4111 -v /share/agents:/data app
# LibSQL file storage → suspend/resume survives restart

8 GB / N5105 budget: agent loops idle at tens-to-hundreds of MB — the NAS orchestrates, inference stays on remote APIs (local Ollama on this CPU = tiny models only). Air-gap requirement → Google ADK offline path.

⚠ Low-code on the NAS

Flowise and Langflow both execute arbitrary code by design (custom JS/Python nodes) and both have 2025–26 critical-RCE history (Langflow CVE-2025-3248 was actively exploited per CISA KEV; more criticals followed into 2026 for both).

  • LAN-only; never port-forward the NAS
  • Remote access via Cloudflare Tunnel / Tailscale with auth enabled
  • Pin image versions and update on advisory days

#What verification killed or corrected

9 of 52 claims died or changed under 3-vote adversarial review. These are the errors you'd have shipped if you trusted the first pass — several flip a real decision.

corrected
LangGraph JS has no official durability path on Cloudflare Workers.
PostgresSaver is officially documented on Workers via Hyperdrive + nodejs_compat (June 2026). The old failures were raw-TCP driver incompatibility, not the Workers request lifecycle; Redis checkpointing still has no official path, and the D1 checkpointer really was dropped.
corrected
Vercel Workflow DevKit on Cloudflare requires an experimental fork running Cloudflare Containers.
A community World — @fantasticfour/world-cloudflare (DO + SQLite + Queues + KV) — is listed in the official worlds catalog and runs natively on workerd, no Containers needed. Still no official Cloudflare World.
corrected
Mastra deployment to Workers is unreliable, per open bundle-size issue #16319 (17.58 MiB vs 10 MiB cap).
The issue was closed May 31 2026 without a documented fix — the evidence is stale as "open", but related Workers bugs (memory crashes, storage strategy) remain open. Verdict stays "fragile", on corrected evidence.
corrected
Pydantic AI has no path onto Cloudflare — issue #910 proves it fails on Python Workers.
#910 was about hosting a Pyodide sandbox service, pre-dating Cloudflare's Dec 2025 Python Workers overhaul; pure-Python wheels (incl. pydantic-ai-slim) now install via pywrangler. Unproven and unsupported ≠ impossible; durable-exec extras and stdio MCP genuinely can't run there.
corrected
MAF auto-recovery via Durable Task is "not available self-hosted or on GCP".
The worker can self-host anywhere including GCP; what can't be self-hosted is the durable backend — production requires the Azure-managed Durable Task Scheduler (local emulator is dev-only). "No Azure-free durable backend" is the accurate framing.
corrected
LangGraph's free self-host tier is "Lite, capped at 1M node executions".
Stale terminology: since Platform GA the free self-host tier is the Developer plan at 100k nodes/month, with 2026 pricing shifting toward per-run billing. Tighter than the claim — strengthens the OSS-path recommendation.
corrected
Flowise published 10 security advisories on 2026-05-14.
It was 18 (1 critical CVE-2026-46442 authenticated host RCE with NodeVM sandbox escape, 14 high, 3 medium); Flowise's all-time advisory count is 77. The undercount understated the risk.
killed 0-3
"workerd natively implements ~31 Node.js APIs, with Console/DNS/OS/TLS partially supported."
No stable API count survives contact with the docs — the native set changes release-by-release. Cite the mechanism, never a number.
killed 0-3
"Custom Agent Engine agents must be a picklable Python class — ruling out JS/TS frameworks."
Refuted as stated (the pickling constraint isn't the documented contract), though the runtime being Python-centric was independently upheld — TS frameworks still have no Agent Engine path.

#Methodology

Two dynamic multi-agent workflow passes, 141 agents total (~5.6M tokens), run 2026-07-06.

1 · Scope + sweep

Question decomposed into 5 search angles (landscape, workerd compat, GCP path, NAS practitioner, durability/lock-in skeptic); 5 parallel searchers → 23 sources fetched → 113 falsifiable claims extracted.

2 · Verify pass 1

Top 25 claims each attacked by 3 independent verifier agents instructed to refute against primary sources: 21 confirmed, 4 killed. Coverage gap identified: 9 SDKs had zero surviving claims.

3 · Gap-fill profiles

One profiler per missing SDK built full matrix cells from primary docs (repos, LICENSE files, release pages) and nominated its 3 most load-bearing claims.

4 · Verify pass 2

27 more adversarial verifiers (3 per SDK, each voting on all 3 claims): 22 confirmed, 5 refuted-and-corrected. Corrections were folded back into the profiles above.

Caveats: findings rest on vendor primary documentation — strong for capability claims, but marketing figures are vendor-claimed. Two areas are highly time-sensitive: Google's Agent Engine → "Agent Runtime / Gemini Enterprise Agent Platform" rename (May 2026) is actively redirecting doc URLs, and Cloudflare keeps migrating unenv polyfills to native workerd implementations, shrinking the edge failure surface release by release.

Key primary sources (selection)
  • developers.cloudflare.com/agents — Agents SDK docs (state, scheduling, MCP)
  • developers.cloudflare.com/workers/runtime-apis/nodejs — nodejs_compat / unenv
  • openai.github.io/openai-agents-js/guides/troubleshooting — Workers "limited support"
  • cloud.google.com/vertex-ai/generative-ai/docs/agent-engine — Agent Engine overview
  • docs.cloud.google.com/run/docs/ai-agents — Cloud Run agent hosting + MCP
  • google.github.io/adk-docs/deploy — ADK deploy paths incl. offline Docker
  • github.com/strands-agents/harness-sdk — Strands monorepo, LICENSE, releases
  • docs.aws.amazon.com/bedrock-agentcore — Runtime service contract, MCP, Memory
  • github.com/mastra-ai/mastra + mastra.ai/docs — LICENSE.md, deployers, suspend/resume
  • github.com/vercel/ai · github.com/vercel/workflow — AI SDK 7, Workflow DevKit worlds
  • docs.langchain.com/langsmith/deploy-standalone-server — self-host licensing
  • github.com/microsoft/agent-framework + learn.microsoft.com/agent-framework — checkpoints, durable task
  • pydantic.dev/docs/ai — durable execution (Temporal/DBOS/Prefect), MCP
  • code.claude.com/docs/en/agent-sdk — hosting, session storage, observability
  • github.com/FlowiseAI/Flowise · github.com/langflow-ai/langflow — LICENSE, advisories
  • nvd.nist.gov/vuln/detail/CVE-2025-3248 — Langflow RCE (CISA KEV)
  • diagrid.io/blog — "checkpoints are not durable execution" critique series
  • qnap.com Container Station tutorials — NAS Docker deployment baseline