{"slug": "aws-a2a-demo-langchain-orchestrator-strands-on-agentcore-oauth-across-accounts", "title": "AWS A2A Demo: LangChain Orchestrator, Strands on AgentCore, OAuth Across Accounts", "summary": "AWS on November 12, 2026 published a deployable Agent-to-Agent (A2A) reference architecture in which a LangChain enterprise orchestrator running on Amazon ECS Fargate calls a Strands compliance agent on Amazon Bedrock AgentCore in a separate AWS account, with neither team importing the other's SDK. The sample uses Agent Cards fetched from /.well-known/agent-card.json for discovery, A2A JSON-RPC message/send over HTTPS with pinned agent URLs, and dual Cognito pools for OAuth in both directions, including SaaS-agent callbacks to an enterprise context agent. AWS positions the pattern as an answer to framework lock-in for agent SaaS vendors and regulated enterprises, noting A2A is now a Linux Foundation project; the GitHub notebooks cover onboarding, SaaS deploy and enterprise deploy in roughly 28 minutes.", "body_md": "**On November 12, 2026, AWS published a [deployable A2A reference architecture](https://aws.amazon.com/blogs/machine-learning/build-composable-interoperable-multi-agent-systems-with-a2a-on-aws/?ref=explainx) where a LangChain enterprise orchestrator on Amazon ECS talks to a Strands compliance agent on [Amazon Bedrock AgentCore](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/?ref=explainx) in a **separate AWS account** — using the [Agent-to-Agent protocol](https://a2a.ai/?ref=explainx) without either team importing the other's SDK.**\n\nIf you sell an agent SaaS or run agents that must call **partner-built skills**, this is AWS's answer to **framework lock-in**: discover capabilities through **Agent Cards**, authenticate with **OAuth**, and keep **tool internals private** while still composing workflows.\n\n## TL;DR\n\n| Piece | AWS sample (Nov 12, 2026) | \n|---|---|\n| Enterprise entry | API Gateway HTTPS to **LangChain orchestrator** (Claude Sonnet 4.6) on**ECS Fargate** | \n| Enterprise context | Second LangChain agent (Nova Lite) exposing **account metadata** over A2A | \n| SaaS agent | **Strands** compliance scanner on**AgentCore** with synthetic Config-style findings | \n| Discovery | Fetch **Agent Cards** at startup; LLM picks skills as LangChain tools | \n| Cross-boundary wire | **A2A JSON-RPC**`message/send` over HTTPS with pinned agent URLs | \n| Auth | **Dual Cognito pools** ; callback uses partner API Gateway with SaaS-issued tokens | \n| Bidirectional | SaaS agent **callbacks** to enterprise context agent before scanning | \n| Repo | GitHub notebooks: onboarding request, SaaS deploy, enterprise deploy (~28 minutes) | \n\n## Why A2A on AWS now\n\nAWS notes **A2A is now a Linux Foundation project** with industry supporters. Without a standard, every ISV writes **custom HTTPS glue** per customer framework — the same integration swamp that [MCP](https://modelcontextprotocol.io/?ref=explainx) reduced for **tools**, but at the **agent boundary**.\n\nOur [A2A versus MCP explainer](https://explainx.ai/blog/what-is-a2a-agent2agent-protocol-mcp-comparison-guide-2026) separates layers: **MCP** wires one agent to databases and APIs; **A2A** wires **agents to agents** where neither should see the other's prompts or tool lists.\n\nAWS's earlier [Part 4 interoperability post](https://aws.amazon.com/blogs/machine-learning/open-protocols-for-agent-interoperability-part-4-inter-agent-communication-on-a2a/?ref=explainx) showed two Strands agents on A2A. **November 12** adds **cross-framework** proof (LangChain plus Strands), **cross-account trust**, and **OAuth in both directions** — the pattern regulated enterprises ask for when a compliance vendor sits outside the VPC.\n\nAWS A2A multi-agent delegation with a hub routing tasks to partner agents across accounts\n\n## Architecture walkthrough\n\nThe post diagrams **three agents in two accounts**:\n\n**Enterprise account**\n\n1. **Enterprise Orchestrator** — user questions enter through**API Gateway** , forwarded via VPC link and internal NLB to ECS. At startup it downloads the SaaS**Agent Card** from`/.well-known/agent-card.json` and registers**one LangChain tool per skill** .\n2. **Enterprise Context Agent** — serves**policy metadata** (data classification, escalation contacts). The SaaS agent reaches it only through a**partner API** endpoint registered at onboarding.\n\n**SaaS account**\n\n1. **Compliance SaaS Agent** — Strands`@tool` functions simulate**AWS Config / Security Hub** style findings. The**Agent Card advertises one curated skill** , not internal tool names — so customer models see**product capabilities** , not implementation.\n\n**Request path (simplified)**\n\n- User obtains Cognito token, asks a compliance question.\n- Orchestrator model decides to invoke the external skill.\n- Orchestrator fetches **enterprise pool token** from Secrets Manager, sends**A2A message** to AgentCore URL pinned at discovery.\n- SaaS agent **callbacks** to context agent with**SaaS pool token** for production account lists and policies.\n- Results return upstream; orchestrator summarizes for leadership.\n\nPrivate subnets, no public IPs on enterprise agents, and **fail-closed token fetch** (no empty bearer) match patterns in [Agent Registry governance](https://explainx.ai/blog/aws-agent-registry-push-sync-cloudtrail-eventbridge-2026).\n\n## Interoperability: LangChain without Strands\n\nThe post's **proof point** is explicit: orchestrator code uses **httpx** and JSON-RPC, not Strands SDK. If the ISV rewrote its agent in another A2A framework but kept the card and wire format, enterprise code **stays stable**.\n\nThat mirrors why we track [Agent Registry discovery](https://explainx.ai/blog/aws-agent-registry-runtime-tool-discovery-mcp-a2a-agentcore-sample-guide-2026) separately from **runtime auth**: contracts live at the **protocol layer**, not the Python import layer.\n\nSnippet concept from AWS (abridged):\n\n- Build payload `method: message/send` with text parts.\n- POST to **pinned**`agent_url` from card discovery — never trust redirect URLs from messages.\n- On **401** , refresh OAuth token once and retry.\n\nOAuth bearer tokens crossing account boundaries in the AWS A2A reference architecture\n\n## Bidirectional callback security\n\nOne-way demos break when the callee needs **caller-only data**. AWS's SaaS agent:\n\n1. Verifies the **callback URL** registered at onboarding.\n2. Fetches the enterprise **context Agent Card** anonymously.\n3. Obtains SaaS Cognito token.\n4. Calls enterprise partner API.\n\nFailures collapse to a single model-facing string — **\"Enterprise context unavailable\"** — while details log on the SaaS side. That is how you avoid **leaking stack traces** into customer-facing agent transcripts.\n\nCompare to [Bedrock AgentCore Gateway](https://explainx.ai/blog/amazon-bedrock-agentcore-web-answer-ga-single-tool-call-cited-answers-gateway-setup-guide-2026) patterns where **one hop** returns cited answers; A2A here is **multi-hop peer negotiation** with separate audit trails per account.\n\n## MCP inside, A2A outside\n\nAWS states production SaaS agents might use **MCP internally** to reach Config APIs while exposing **A2A externally**. Builders should not conflate the two URLs:\n\n| Layer | Audience | Contract | \n|---|---|---|\n| MCP server | Owning agent's runtime | `tools/list` , schemas | \n| A2A Agent Card | External orchestrators | Skills, auth schemes, endpoints | \n\nIf you already run [MCP gateways on AgentCore](https://explainx.ai/blog/bedrock-managed-knowledge-base-agentic-retrieval-agentcore-gateway-cdk-guide-2026), think of A2A as the **customer-facing flange** — especially when customers standardize on LangChain, Strands, or future Linux Foundation adapters.\n\n## Deploy and cost notes\n\nPrerequisites include **two accounts**, **Anthropic Claude Sonnet 4.6** enabled in Bedrock (plus Nova Lite in enterprise account), and Jupyter with AWS CLI profiles. Notebook 3 deploy takes about **20 minutes**; cleanup sections tear down VPC, Fargate, and AgentCore resources.\n\nAWS warns about **Bedrock, AgentCore, Fargate, and VPC charges** — run cleanup after labs. For teams comparing cloud agent hosts, pair this sample with [UAEF evaluation framework](https://explainx.ai/blog/aws-uaef-universal-agent-evaluation-framework-2026) thinking: measure **cross-org latency** and **token use** before production SLAs.\n\n## What to try this week\n\n1. Clone AWS's linked GitHub repo and run **notebook 1** onboarding JSON exchange — practice**public-only** handoffs (issuer URLs, scopes, endpoints).\n2. Diff your existing **MCP OpenAPI** specs against**Agent Card skills** — decide which capabilities are**customer-facing** .\n3. Map **Cognito pools** to**AgentCore Identity** patterns you may already use for[MCP OAuth](https://explainx.ai/blog/aws-genai-23-open-source-reusable-assets-agentcore-fast-november-2026) .\n4. If you are an ISV, publish **one curated skill** first; keep scanning tools private until card versioning is stable.\n\n## Notebook deployment sequence (from AWS)\n\nAWS orders three Jupyter notebooks:\n\n| Step | Account | Approximate time | Output artifact | \n|---|---|---|---|\n| 1 | Enterprise | ~3 minutes | `onboarding-request.json` (public URLs, scopes) | \n| 2 | SaaS provider | ~5 minutes | `onboarding-response.json` | \n| 3 | Enterprise | ~20 minutes | Agents live + end-to-end test | \n\nOnly **public values** cross organizational email — no shared secrets. That matches how regulated banks onboard vendors: **metadata first**, **credentials later** via each side's secret store.\n\nPrerequisites worth repeating: **two accounts in us-east-1, us-east-2, or us-west-2**, **Anthropic Claude Sonnet 4.6** enabled (first-time Anthropic form per account), enterprise account also needs **Amazon Nova Lite** for the context agent.\n\n## Security decisions embedded in the sample\n\n- **Pinned agent URLs** after card discovery — mitigates**open-redirect** style attacks if a malicious card sneaks into onboarding.\n- **Separate Cognito pools** — enterprise users never receive SaaS pool tokens and vice versa.\n- **Partner API** for callbacks — SaaS cannot hit arbitrary intranet hosts; only registered callback hostnames.\n- **Synthetic compliance data** in demo — production would wire**Config/Security Hub/GuardDuty** readers behind MCP internally while still exposing**one A2A skill** externally.\n\nCompare to [prompt injection social engineering](https://explainx.ai/blog/ai-security-social-engineering-prompt-injection-oblomovka-2026) themes: more integration surface means more **identity binding** work — A2A adds peers, not fewer auth checks.\n\n## When to choose A2A versus MCP-only\n\n| Pattern | Pick A2A | Pick MCP only | \n|---|---|---|\n| External vendor agent | Yes | Rarely — you still need HTTP glue | \n| Internal tools in one VPC | Optional | Often simpler | \n| Customer brings LangChain, you run Strands | Yes | Forces SDK adapters per customer | \n| Fine-grained KB row ACLs | Use [gateway interceptor pattern](https://explainx.ai/blog/aws-bedrock-kb-acl-agentcore-gateway-interceptor-2026) on MCP | A2A does not replace ACL injection | \n\n## Observability gaps to plan\n\nAWS's post focuses on **wiring**, not **trace UX**. In production, log:\n\n- **OAuth token refresh failures** (orchestrator 401 retry path).\n- **Callback latency** — bidirectional flows double network hops.\n- **Skill name chosen by LLM** — detect routing drift after prompt edits.\n\nPair with [Agent DLC](https://explainx.ai/blog/aws-agent-dlc-production-engineering-agents-2026) if compliance questions require **release gates** per external skill.\n\n## Cost modeling notes\n\nCharges accrue across **Fargate tasks**, **Bedrock tokens** (Sonnet 4.6 for two agents, Nova Lite for context), **AgentCore runtime**, **API Gateway**, and **cross-account data transfer**. Demo cleanup sections are mandatory — idle NAT gateways and public ALBs dominate lab bills.\n\nFor multi-tenant ISVs, **per-customer Agent Cards** may mean **per-customer OAuth clients**; account for **Cognito client limits** and **rotation runbooks**.\n\n## Failure modes from HN-style operations experience\n\nAlthough this launch is fresh, similar agent integrations fail predictably:\n\n- **Card URL typos** at onboarding — orchestrator tools point at stale skills forever until restart.\n- **Clock skew** on JWT expiry — manifests as flaky 401 retries.\n- **Rate limits** on partner API during batch compliance scans — needs queueing on SaaS side.\n\nDocument **runbooks** beside architecture diagrams.\n\n## Language note on Linux Foundation A2A\n\nAWS states A2A graduated to **Linux Foundation governance**, which matters for procurement: standards with foundation homes tend to pick up **multi-vendor conformance tests** over time. Betting on A2A for ISV edges is partly a bet that **LangChain, Strands, Google, and AWS** keep **Agent Card schemas** compatible across minor versions — still validate with **contract tests** each release.\n\n## Related on explainx.ai\n\n*Model IDs, notebook timings, and A2A SDK pin versions are accurate as of the November 12, 2026 AWS blog post.*", "url": "https://wpnews.pro/news/aws-a2a-demo-langchain-orchestrator-strands-on-agentcore-oauth-across-accounts", "canonical_source": "https://explainx.ai/blog/aws-a2a-multi-agent-langchain-strands-agentcore-2026?utm_source=rss&utm_medium=feed&utm_campaign=blog", "published_at": "2026-11-12 00:00:00+00:00", "updated_at": "2026-11-12 16:53:53.180335+00:00", "lang": "en", "topics": ["ai-agents", "agent-protocols", "ai-tools", "artificial-intelligence"], "entities": ["AWS", "LangChain", "Strands", "Amazon Bedrock AgentCore", "Amazon ECS Fargate", "Agent-to-Agent protocol", "Linux Foundation", "Amazon Cognito"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/aws-a2a-demo-langchain-orchestrator-strands-on-agentcore-oauth-across-accounts", "markdown": "https://wpnews.pro/news/aws-a2a-demo-langchain-orchestrator-strands-on-agentcore-oauth-across-accounts.md", "text": "https://wpnews.pro/news/aws-a2a-demo-langchain-orchestrator-strands-on-agentcore-oauth-across-accounts.txt", "jsonld": "https://wpnews.pro/news/aws-a2a-demo-langchain-orchestrator-strands-on-agentcore-oauth-across-accounts.jsonld"}}