/ 00-agent-agentcore / architecture.drawio
architecture.drawio
  1  <mxfile host="app.diagrams.net" version="24.0.0">
  2    <diagram id="stack00" name="Stack 00 - AgentCore">
  3      <mxGraphModel dx="1500" dy="1200" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="1500" pageHeight="1100" math="0" shadow="0">
  4        <root>
  5          <mxCell id="0" />
  6          <mxCell id="1" parent="0" />
  7          <mxCell id="desc" value="&lt;b style=&quot;font-size:13px;&quot;&gt;Stack 00: Amazon Bedrock AgentCore&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Flow:&lt;/b&gt;&lt;br&gt;1. Stacks 01/02 invoke AgentCore Runtime Endpoint (InvokeAgentRuntime API).&lt;br&gt;2. Runtime loads agent code from Amazon S3 and runs Strands Multimodal Agent in an isolated microVM.&lt;br&gt;3. Agent uses Amazon Bedrock (Claude Sonnet) for inference and AgentCore Memory for conversation context.&lt;br&gt;4. For video analysis, the video_analysis tool calls TwelveLabs API (external) via pre-signed S3 URLs.&lt;br&gt;5. AWS Systems Manager Parameter Store exports runtime ARN, S3 bucket, memory ID, and role ARN for downstream stacks." style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;spacing=10;fontSize=11;fontStyle=0;" parent="1" vertex="1">
  8            <mxGeometry x="40" y="-190" width="870" height="160" as="geometry" />
  9          </mxCell>
 10          <mxCell id="region" value="AWS Region" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_region;strokeColor=#00A4A6;fillColor=none;dashed=1;verticalAlign=top;align=left;spacingLeft=30;fontColor=#147EBA;" vertex="1" parent="1">
 11            <mxGeometry x="40" y="0" width="870" height="770" as="geometry" />
 12          </mxCell>
 13          <!-- ROW 1: Main flow (y=60) -->
 14          <mxCell id="caller" value="Stacks 01/02&lt;br&gt;AWS Lambda" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.lambda;" vertex="1" parent="region">
 15            <mxGeometry x="50" y="80" width="60" height="60" as="geometry" />
 16          </mxCell>
 17          <mxCell id="endpoint" value="AgentCore&lt;br&gt;Runtime Endpoint" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#01A88D;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.bedrock;" vertex="1" parent="region">
 18            <mxGeometry x="260" y="80" width="60" height="60" as="geometry" />
 19          </mxCell>
 20          <mxCell id="runtime" value="AgentCore&lt;br&gt;Runtime" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#01A88D;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.bedrock;" vertex="1" parent="region">
 21            <mxGeometry x="470" y="80" width="60" height="60" as="geometry" />
 22          </mxCell>
 23          <mxCell id="bedrock" value="Amazon Bedrock&lt;br&gt;(Claude Sonnet)" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#01A88D;strokeColor=#ffffff;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.bedrock;" vertex="1" parent="region">
 24            <mxGeometry x="700" y="80" width="60" height="60" as="geometry" />
 25          </mxCell>
 26          <!-- ROW 2: Supporting (y=220) - far enough below Row 1 labels -->
 27          <mxCell id="s3" value="Amazon S3&lt;br&gt;(Agent Code)" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#3F8624;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;" vertex="1" parent="region">
 28            <mxGeometry x="260" y="220" width="60" height="60" as="geometry" />
 29          </mxCell>
 30          <mxCell id="iam" value="AWS IAM Role&lt;br&gt;(Execution)" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#DD344C;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.identity_and_access_management;" vertex="1" parent="region">
 31            <mxGeometry x="470" y="220" width="60" height="60" as="geometry" />
 32          </mxCell>
 33          <mxCell id="memory" value="AgentCore&lt;br&gt;Memory" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#01A88D;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.bedrock;" vertex="1" parent="region">
 34            <mxGeometry x="700" y="220" width="60" height="60" as="geometry" />
 35          </mxCell>
 36          <mxCell id="memory_desc" value="Short-term: session_id, 3-day TTL&lt;br&gt;Long-term: actor_id, persistent" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=0;fontColor=#666666;" vertex="1" parent="region">
 37            <mxGeometry x="650" y="320" width="200" height="35" as="geometry" />
 38          </mxCell>
 39          <!-- ROW 3: Strands box (y=400) - far below Row 2 labels -->
 40          <mxCell id="strands_box" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;opacity=30;arcSize=10;" vertex="1" parent="region">
 41            <mxGeometry x="200" y="400" width="420" height="80" as="geometry" />
 42          </mxCell>
 43          <mxCell id="strands_logo" value="" style="shape=image;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;aspect=fixed;imageAspect=0;image=https://strandsagents.com/latest/assets/logo-github.svg;" vertex="1" parent="region">
 44            <mxGeometry x="220" y="403" width="30" height="30" as="geometry" />
 45          </mxCell>
 46          <mxCell id="strands_title" value="Strands Multimodal Agent" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=12;fontStyle=0;fontColor=#6c8ebf;" vertex="1" parent="region">
 47            <mxGeometry x="258" y="403" width="200" height="28" as="geometry" />
 48          </mxCell>
 49          <mxCell id="vision_tool" value="Claude Vision (inline)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=10;fontStyle=0;" vertex="1" parent="region">
 50            <mxGeometry x="220" y="438" width="160" height="30" as="geometry" />
 51          </mxCell>
 52          <mxCell id="video_tool" value="video_analysis tool" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=10;fontStyle=0;" vertex="1" parent="region">
 53            <mxGeometry x="400" y="438" width="160" height="30" as="geometry" />
 54          </mxCell>
 55          <!-- ROW 4: SSM (y=580) -->
 56          <mxCell id="ssm" value="SSM&lt;br&gt;Parameter Store" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#E7157B;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.parameter_store;" vertex="1" parent="region">
 57            <mxGeometry x="50" y="580" width="60" height="60" as="geometry" />
 58          </mxCell>
 59          <mxCell id="ssm_params" value="/agentcore/agent_runtime_arn&lt;br&gt;/agentcore/s3_bucket_name&lt;br&gt;/agentcore/memory_id&lt;br&gt;/agentcore/runtime_role_arn" style="text;html=1;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=9;fontStyle=2;fontColor=#666666;" vertex="1" parent="region">
 60            <mxGeometry x="20" y="680" width="180" height="55" as="geometry" />
 61          </mxCell>
 62          <!-- TwelveLabs OUTSIDE region - bigger icon 80x80 -->
 63          <mxCell id="twelvelabs" value="TwelveLabs API&lt;br&gt;(External)" style="shape=image;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;imageAspect=0;image=https://vectorseek.com/wp-content/uploads/2025/12/TwelveLabs-Logo-PNG-SVG-Vecto-01.png;" vertex="1" parent="1">
 64            <mxGeometry x="980" y="540" width="80" height="80" as="geometry" />
 65          </mxCell>
 66          <!-- EDGES - all with strokeWidth=2;flowAnimation=1 -->
 67          <!-- Row 1: horizontal main flow -->
 68          <mxCell id="e1" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#01A88D;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="caller" target="endpoint">
 69            <mxGeometry relative="1" as="geometry" />
 70          </mxCell>
 71          <mxCell id="e2" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#01A88D;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="endpoint" target="runtime">
 72            <mxGeometry relative="1" as="geometry" />
 73          </mxCell>
 74          <mxCell id="e3" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#01A88D;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="runtime" target="bedrock">
 75            <mxGeometry relative="1" as="geometry" />
 76          </mxCell>
 77          <!-- Row 1→2: vertical down (straight, no label crossing because Row 2 is 220 and labels end at ~170) -->
 78          <mxCell id="e4" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#3F8624;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="endpoint" target="s3">
 79            <mxGeometry relative="1" as="geometry" />
 80          </mxCell>
 81          <mxCell id="e5" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#DD344C;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="runtime" target="iam">
 82            <mxGeometry relative="1" as="geometry" />
 83          </mxCell>
 84          <mxCell id="e6" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#01A88D;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="bedrock" target="memory">
 85            <mxGeometry relative="1" as="geometry" />
 86          </mxCell>
 87          <!-- Runtime → Strands (straight down, labels are now ABOVE icons so no overlap) -->
 88          <mxCell id="e7" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#6c8ebf;strokeWidth=2;flowAnimation=1;dashed=1;" edge="1" parent="region" source="runtime" target="strands_box">
 89            <mxGeometry relative="1" as="geometry">
 90              <Array as="points">
 91                <mxPoint x="500" y="380" />
 92                <mxPoint x="480" y="380" />
 93              </Array>
 94            </mxGeometry>
 95          </mxCell>
 96          <!-- video_tool → TwelveLabs (route DOWN below strands, then RIGHT out of region) -->
 97          <mxCell id="e8" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#d6b656;strokeWidth=2;flowAnimation=1;" edge="1" parent="1" source="video_tool" target="twelvelabs">
 98            <mxGeometry relative="1" as="geometry">
 99              <Array as="points">
100                <mxPoint x="520" y="530" />
101                <mxPoint x="900" y="530" />
102                <mxPoint x="900" y="580" />
103              </Array>
104            </mxGeometry>
105          </mxCell>
106          <!-- SSM dashed export -->
107          <mxCell id="e9" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#E7157B;strokeWidth=2;flowAnimation=1;dashed=1;" edge="1" parent="region" source="caller" target="ssm">
108            <mxGeometry relative="1" as="geometry">
109              <Array as="points">
110                <mxPoint x="80" y="580" />
111              </Array>
112            </mxGeometry>
113          </mxCell>
114        </root>
115      </mxGraphModel>
116    </diagram>
117  </mxfile>