/ architecture.drawio
architecture.drawio
1 <mxfile host="app.diagrams.net" version="24.0.0"> 2 <diagram name="Architecture Overview" id="overview"> 3 <mxGraphModel dx="2400" dy="1600" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> 4 <root> 5 <mxCell id="0" /> 6 <mxCell id="1" parent="0" /> 7 8 <!-- ============================================================ --> 9 <!-- DESCRIPTION TEXT BLOCK --> 10 <!-- ============================================================ --> 11 <mxCell id="desc" value="<h2 style="margin-top: 0px;">WhatsApp AI Agent - Architecture Overview</h2><p>Three independent CDK stacks sharing configuration via AWS Systems Manager Parameter Store:</p><ul><li><b>Stack 00</b>: AgentCore Runtime + Memory with Strands multimodal agent, Claude Sonnet, and TwelveLabs video analysis.</li><li><b>Stack 01</b>: WhatsApp via AWS End User Messaging Social - SNS triggers receiver Lambda, DynamoDB Stream tumbling window buffers messages, processor invokes AgentCore.</li><li><b>Stack 02</b>: WhatsApp + Instagram via Meta Cloud API - API Gateway webhook, dual-channel receiver, DynamoDB buffering, unified user identity, processor invokes AgentCore.</li></ul><p>Both Stack 01 and 02 use a <b>tumbling window</b> (3s) to aggregate rapid-fire messages into a single agent invocation, reducing token usage and costs.</p>" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;spacing=9;fontSize=11;" vertex="1" parent="1"> 12 <mxGeometry x="120" y="-180" width="1300" height="200" as="geometry" /> 13 </mxCell> 14 15 <!-- ============================================================ --> 16 <!-- WHATSAPP USERS (outside region) --> 17 <!-- ============================================================ --> 18 <mxCell id="user" value="WhatsApp Users" style="dashed=0;outlineConnect=0;html=1;align=center;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.weblogos.whatsapp;fillColor=#00E676;strokeColor=none;fontSize=11;fontStyle=0;" vertex="1" parent="1"> 19 <mxGeometry x="-30" y="340" width="60" height="60" as="geometry" /> 20 </mxCell> 21 22 <!-- External: Instagram Users (below WhatsApp, connects to Stack 02) --> 23 <mxCell id="ig_user" value="Instagram Users" style="shape=image;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;imageAspect=0;image=https://cdn.simpleicons.org/instagram/E4405F;" vertex="1" parent="1"> 24 <mxGeometry x="-30" y="520" width="60" height="60" as="geometry" /> 25 </mxCell> 26 27 <!-- Instagram Users -> API GW (green, route to Stack 02) --> 28 <mxCell id="e_ig_apigw" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;" edge="1" parent="1" source="ig_user" target="apigw"> 29 <mxGeometry relative="1" as="geometry"> 30 <Array as="points"> 31 <mxPoint x="70" y="550" /> 32 <mxPoint x="70" y="545" /> 33 </Array> 34 </mxGeometry> 35 </mxCell> 36 37 <!-- ============================================================ --> 38 <!-- TWELVELABS API (outside region, right side) --> 39 <!-- ============================================================ --> 40 <mxCell id="twelvelabs" value="TwelveLabs API<div>(External)</div>" 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"> 41 <mxGeometry x="1520" y="500" width="60" height="60" as="geometry" /> 42 </mxCell> 43 44 <!-- ============================================================ --> 45 <!-- AWS REGION CONTAINER --> 46 <!-- ============================================================ --> 47 <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;verticalAlign=top;align=left;spacingLeft=30;fontColor=#147EBA;dashed=1;" vertex="1" parent="1"> 48 <mxGeometry x="120" y="50" width="1340" height="830" as="geometry" /> 49 </mxCell> 50 51 <!-- ============================================================ --> 52 <!-- STACK 01 BOX (blue) - top left --> 53 <!-- ============================================================ --> 54 <mxCell id="stack01_box" value="Stack 01: End User Messaging (WhatsApp)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#147EBA;strokeWidth=2;dashed=1;fontSize=13;fontStyle=1;fontColor=#147EBA;verticalAlign=top;align=right;spacingRight=10;spacingTop=5;container=0;" vertex="1" parent="region"> 55 <mxGeometry x="20" y="30" width="720" height="330" as="geometry" /> 56 </mxCell> 57 58 <!-- ============================================================ --> 59 <!-- STACK 02 BOX (purple) - bottom left --> 60 <!-- ============================================================ --> 61 <mxCell id="stack02_box" value="Stack 02: Multichannel (WhatsApp + Instagram)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#8C4FFF;strokeWidth=2;dashed=1;fontSize=13;fontStyle=1;fontColor=#8C4FFF;verticalAlign=top;align=right;spacingRight=10;spacingTop=5;container=0;" vertex="1" parent="region"> 62 <mxGeometry x="20" y="410" width="720" height="380" as="geometry" /> 63 </mxCell> 64 65 <!-- ============================================================ --> 66 <!-- STACK 00 BOX (orange) - right side --> 67 <!-- ============================================================ --> 68 <mxCell id="stack00_box" value="Stack 00: AgentCore" style="rounded=1;whiteSpace=wrap;html=1;fillColor=none;strokeColor=#FF8000;strokeWidth=2;dashed=1;fontSize=13;fontStyle=1;fontColor=#FF8000;verticalAlign=top;align=right;spacingRight=10;spacingTop=5;container=0;" vertex="1" parent="region"> 69 <mxGeometry x="790" y="30" width="520" height="760" as="geometry" /> 70 </mxCell> 71 72 <!-- ============================================================ --> 73 <!-- STACK 01 ICONS (Row 1: EUM -> SNS -> Receiver -> DDB -> Stream -> Processor) --> 74 <!-- ============================================================ --> 75 76 <!-- End User Messaging --> 77 <mxCell id="eum" value="AWS End User<div>Messaging</div>" 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=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.end_user_messaging;" vertex="1" parent="region"> 78 <mxGeometry x="40" y="85" width="60" height="60" as="geometry" /> 79 </mxCell> 80 81 <!-- SNS Topic (native shape, exception) --> 82 <mxCell id="sns01" value="Amazon SNS" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#E7157B;strokeColor=none;dashed=0;verticalLabelPosition=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.topic;" vertex="1" parent="region"> 83 <mxGeometry x="155" y="89" width="60" height="52" as="geometry" /> 84 </mxCell> 85 86 <!-- Receiver Lambda 01 --> 87 <mxCell id="receiver01" value="Lambda<div>Receiver</div>" 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"> 88 <mxGeometry x="275" y="85" width="60" height="60" as="geometry" /> 89 </mxCell> 90 91 <!-- DynamoDB 01 --> 92 <mxCell id="ddb01" value="Amazon<div>DynamoDB</div>" 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=#C925D1;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.dynamodb;" vertex="1" parent="region"> 93 <mxGeometry x="395" y="85" width="60" height="60" as="geometry" /> 94 </mxCell> 95 96 <!-- DynamoDB Stream 01 --> 97 <mxCell id="stream01" value="DynamoDB<div>Stream</div>" 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=#C925D1;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.dynamodb_stream;" vertex="1" parent="region"> 98 <mxGeometry x="515" y="85" width="60" height="60" as="geometry" /> 99 </mxCell> 100 101 <!-- Processor Lambda 01 --> 102 <mxCell id="processor01" value="Lambda<div>Processor</div>" 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"> 103 <mxGeometry x="635" y="85" width="60" height="60" as="geometry" /> 104 </mxCell> 105 106 <!-- Stack 01 Row 2: S3 below Receiver, Transcribe below Processor --> 107 <mxCell id="s3_01" value="Amazon S3<div>Media</div>" 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"> 108 <mxGeometry x="275" y="230" width="60" height="60" as="geometry" /> 109 </mxCell> 110 111 <mxCell id="transcribe01" value="Amazon<div>Transcribe</div>" 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.transcribe;" vertex="1" parent="region"> 112 <mxGeometry x="635" y="230" width="60" height="60" as="geometry" /> 113 </mxCell> 114 115 <!-- ============================================================ --> 116 <!-- STACK 02 ICONS (Row 1: API GW -> Receiver -> DDB -> Stream -> Processor) --> 117 <!-- ============================================================ --> 118 119 <!-- API Gateway --> 120 <mxCell id="apigw" value="Amazon API<div>Gateway</div>" 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=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.api_gateway;" vertex="1" parent="region"> 121 <mxGeometry x="40" y="465" width="60" height="60" as="geometry" /> 122 </mxCell> 123 124 <!-- Receiver Lambda 02 --> 125 <mxCell id="receiver02" value="Lambda<div>Receiver</div>" 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"> 126 <mxGeometry x="195" y="465" width="60" height="60" as="geometry" /> 127 </mxCell> 128 129 <!-- DynamoDB 02 --> 130 <mxCell id="ddb02" value="Amazon<div>DynamoDB</div>" 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=#C925D1;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.dynamodb;" vertex="1" parent="region"> 131 <mxGeometry x="355" y="465" width="60" height="60" as="geometry" /> 132 </mxCell> 133 134 <!-- DynamoDB Stream 02 --> 135 <mxCell id="stream02" value="DynamoDB<div>Stream</div>" 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=#C925D1;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.dynamodb_stream;" vertex="1" parent="region"> 136 <mxGeometry x="475" y="465" width="60" height="60" as="geometry" /> 137 </mxCell> 138 139 <!-- Processor Lambda 02 --> 140 <mxCell id="processor02" value="Lambda<div>Processor</div>" 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"> 141 <mxGeometry x="635" y="465" width="60" height="60" as="geometry" /> 142 </mxCell> 143 144 <!-- Stack 02 Row 2: Secrets below API GW, S3 below DDB, Transcribe below Processor --> 145 <mxCell id="secrets02" value="Secrets<div>Manager</div>" 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.secrets_manager;" vertex="1" parent="region"> 146 <mxGeometry x="40" y="620" width="60" height="60" as="geometry" /> 147 </mxCell> 148 149 <mxCell id="s3_02" value="Amazon S3<div>Media</div>" 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"> 150 <mxGeometry x="355" y="620" width="60" height="60" as="geometry" /> 151 </mxCell> 152 153 <mxCell id="transcribe02" value="Amazon<div>Transcribe</div>" 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.transcribe;" vertex="1" parent="region"> 154 <mxGeometry x="635" y="620" width="60" height="60" as="geometry" /> 155 </mxCell> 156 157 <!-- ============================================================ --> 158 <!-- STACK 00 ICONS --> 159 <!-- ============================================================ --> 160 161 <!-- SSM Parameter Store (top) --> 162 <mxCell id="ssm" value="Parameter<div>Store</div>" 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=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.parameter_store;" vertex="1" parent="region"> 163 <mxGeometry x="830" y="75" width="60" height="60" as="geometry" /> 164 </mxCell> 165 166 <!-- S3 Agent Code (below SSM) --> 167 <mxCell id="s3_agent" value="Amazon S3<div>Agent Code</div>" 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=top;verticalAlign=bottom;align=center;html=1;fontSize=11;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;" vertex="1" parent="region"> 168 <mxGeometry x="830" y="230" width="60" height="60" as="geometry" /> 169 </mxCell> 170 171 <!-- AgentCore Runtime Endpoint (center) --> 172 <mxCell id="endpoint" value="AgentCore<div>Endpoint</div>" 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"> 173 <mxGeometry x="930" y="400" width="60" height="60" as="geometry" /> 174 </mxCell> 175 176 <!-- AgentCore Runtime (right of Endpoint) --> 177 <mxCell id="runtime" value="AgentCore<div>Runtime</div>" 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"> 178 <mxGeometry x="1100" y="400" width="60" height="60" as="geometry" /> 179 </mxCell> 180 181 <!-- AgentCore Memory (below Runtime) --> 182 <mxCell id="memory" value="AgentCore<div>Memory</div>" 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"> 183 <mxGeometry x="1100" y="580" width="60" height="60" as="geometry" /> 184 </mxCell> 185 186 <!-- Amazon Bedrock (top-right) --> 187 <mxCell id="bedrock" value="Amazon Bedrock<div>Claude Sonnet</div>" 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"> 188 <mxGeometry x="1200" y="230" width="60" height="60" as="geometry" /> 189 </mxCell> 190 191 <!-- ============================================================ --> 192 <!-- STACK 01 MAIN FLOW EDGES --> 193 <!-- ============================================================ --> 194 195 <!-- EUM -> SNS (green) --> 196 <mxCell id="e_eum_sns" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="eum" target="sns01"> 197 <mxGeometry relative="1" as="geometry" /> 198 </mxCell> 199 200 <!-- SNS -> Receiver 01 (green) --> 201 <mxCell id="e_sns_r01" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="sns01" target="receiver01"> 202 <mxGeometry relative="1" as="geometry" /> 203 </mxCell> 204 205 <!-- Receiver 01 -> DDB 01 (green) --> 206 <mxCell id="e_r01_ddb01" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="receiver01" target="ddb01"> 207 <mxGeometry relative="1" as="geometry" /> 208 </mxCell> 209 210 <!-- DDB 01 -> Stream 01 (red) --> 211 <mxCell id="e_ddb01_s01" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF0000;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="ddb01" target="stream01"> 212 <mxGeometry relative="1" as="geometry" /> 213 </mxCell> 214 215 <!-- Stream 01 -> Processor 01 (red) --> 216 <mxCell id="e_s01_p01" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF0000;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="stream01" target="processor01"> 217 <mxGeometry relative="1" as="geometry" /> 218 </mxCell> 219 220 <!-- Receiver 01 -> S3 01 (green, down) --> 221 <mxCell id="e_r01_s3" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="receiver01" target="s3_01"> 222 <mxGeometry relative="1" as="geometry" /> 223 </mxCell> 224 225 <!-- Processor 01 -> Transcribe 01 (orange, down) --> 226 <mxCell id="e_p01_t01" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF8000;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="processor01" target="transcribe01"> 227 <mxGeometry relative="1" as="geometry" /> 228 </mxCell> 229 230 <!-- Processor 01 -> S3 01 (orange, down-left with waypoints) --> 231 <mxCell id="e_p01_s3" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF8000;strokeWidth=2;flowAnimation=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="region" source="processor01" target="s3_01"> 232 <mxGeometry relative="1" as="geometry"> 233 <Array as="points"> 234 <mxPoint x="665" y="190" /> 235 <mxPoint x="390" y="190" /> 236 <mxPoint x="390" y="260" /> 237 </Array> 238 </mxGeometry> 239 </mxCell> 240 241 <!-- Processor 01 -> Endpoint (orange, right then down) --> 242 <mxCell id="e_p01_endpoint" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF8000;strokeWidth=2;flowAnimation=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="region" source="processor01" target="endpoint"> 243 <mxGeometry relative="1" as="geometry"> 244 <Array as="points"> 245 <mxPoint x="760" y="115" /> 246 <mxPoint x="760" y="415" /> 247 </Array> 248 </mxGeometry> 249 </mxCell> 250 251 <!-- ============================================================ --> 252 <!-- STACK 02 MAIN FLOW EDGES --> 253 <!-- ============================================================ --> 254 255 <!-- API GW -> Receiver 02 (green) --> 256 <mxCell id="e_apigw_r02" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="apigw" target="receiver02"> 257 <mxGeometry relative="1" as="geometry" /> 258 </mxCell> 259 260 <!-- Receiver 02 -> DDB 02 (green) --> 261 <mxCell id="e_r02_ddb02" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="receiver02" target="ddb02"> 262 <mxGeometry relative="1" as="geometry" /> 263 </mxCell> 264 265 <!-- DDB 02 -> Stream 02 (red) --> 266 <mxCell id="e_ddb02_s02" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF0000;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="ddb02" target="stream02"> 267 <mxGeometry relative="1" as="geometry" /> 268 </mxCell> 269 270 <!-- Stream 02 -> Processor 02 (red) --> 271 <mxCell id="e_s02_p02" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF0000;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="stream02" target="processor02"> 272 <mxGeometry relative="1" as="geometry" /> 273 </mxCell> 274 275 <!-- Receiver 02 -> S3 02 (green, down-right with waypoints) --> 276 <mxCell id="e_r02_s302" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="region" source="receiver02" target="s3_02"> 277 <mxGeometry relative="1" as="geometry"> 278 <Array as="points"> 279 <mxPoint x="225" y="570" /> 280 <mxPoint x="300" y="570" /> 281 <mxPoint x="300" y="650" /> 282 </Array> 283 </mxGeometry> 284 </mxCell> 285 286 <!-- Receiver 02 -> Secrets 02 (dashed, down-left) --> 287 <mxCell id="e_r02_secrets" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeWidth=2;dashed=1;flowAnimation=1;strokeColor=#DD344C;exitX=0;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="region" source="receiver02" target="secrets02"> 288 <mxGeometry relative="1" as="geometry"> 289 <Array as="points"> 290 <mxPoint x="195" y="560" /> 291 <mxPoint x="70" y="560" /> 292 </Array> 293 </mxGeometry> 294 </mxCell> 295 296 <!-- Processor 02 -> Transcribe 02 (orange, down) --> 297 <mxCell id="e_p02_t02" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF8000;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="processor02" target="transcribe02"> 298 <mxGeometry relative="1" as="geometry" /> 299 </mxCell> 300 301 <!-- Processor 02 -> S3 02 (orange, down-left with waypoints) --> 302 <mxCell id="e_p02_s3" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF8000;strokeWidth=2;flowAnimation=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="region" source="processor02" target="s3_02"> 303 <mxGeometry relative="1" as="geometry"> 304 <Array as="points"> 305 <mxPoint x="665" y="575" /> 306 <mxPoint x="470" y="575" /> 307 <mxPoint x="470" y="650" /> 308 </Array> 309 </mxGeometry> 310 </mxCell> 311 312 <!-- Processor 02 -> Endpoint (orange, right then up) --> 313 <mxCell id="e_p02_endpoint" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#FF8000;strokeWidth=2;flowAnimation=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="region" source="processor02" target="endpoint"> 314 <mxGeometry relative="1" as="geometry"> 315 <Array as="points"> 316 <mxPoint x="760" y="495" /> 317 <mxPoint x="760" y="445" /> 318 </Array> 319 </mxGeometry> 320 </mxCell> 321 322 <!-- ============================================================ --> 323 <!-- STACK 00 INTERNAL EDGES (teal) --> 324 <!-- ============================================================ --> 325 326 <!-- S3 Agent -> Endpoint (teal) --> 327 <mxCell id="e_s3_endpoint" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#01A88D;strokeWidth=2;flowAnimation=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="region" source="s3_agent" target="endpoint"> 328 <mxGeometry relative="1" as="geometry"> 329 <Array as="points"> 330 <mxPoint x="860" y="350" /> 331 <mxPoint x="930" y="350" /> 332 </Array> 333 </mxGeometry> 334 </mxCell> 335 336 <!-- Endpoint -> Runtime (teal) --> 337 <mxCell id="e_endpoint_runtime" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#01A88D;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="endpoint" target="runtime"> 338 <mxGeometry relative="1" as="geometry" /> 339 </mxCell> 340 341 <!-- Runtime -> Memory (teal) --> 342 <mxCell id="e_runtime_memory" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#01A88D;strokeWidth=2;flowAnimation=1;" edge="1" parent="region" source="runtime" target="memory"> 343 <mxGeometry relative="1" as="geometry" /> 344 </mxCell> 345 346 <!-- Runtime -> Bedrock (teal, up-right) --> 347 <mxCell id="e_runtime_bedrock" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#01A88D;strokeWidth=2;flowAnimation=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="region" source="runtime" target="bedrock"> 348 <mxGeometry relative="1" as="geometry"> 349 <Array as="points"> 350 <mxPoint x="1230" y="415" /> 351 <mxPoint x="1230" y="290" /> 352 </Array> 353 </mxGeometry> 354 </mxCell> 355 356 <!-- Runtime -> TwelveLabs (teal, exits region) --> 357 <mxCell id="e_runtime_tl" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#01A88D;strokeWidth=2;flowAnimation=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;" edge="1" parent="1" source="runtime" target="twelvelabs"> 358 <mxGeometry relative="1" as="geometry"> 359 <Array as="points"> 360 <mxPoint x="1480" y="495" /> 361 <mxPoint x="1480" y="530" /> 362 </Array> 363 </mxGeometry> 364 </mxCell> 365 366 <!-- ============================================================ --> 367 <!-- SSM DASHED EXPORT EDGES --> 368 <!-- ============================================================ --> 369 370 <!-- SSM -> Processor 01 (dashed, orange) --> 371 <mxCell id="e_ssm_p01" value="exports ARN" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeWidth=2;dashed=1;flowAnimation=1;strokeColor=#FF8000;fontColor=#FF8000;fontSize=10;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="region" source="ssm" target="processor01"> 372 <mxGeometry relative="1" as="geometry"> 373 <Array as="points"> 374 <mxPoint x="780" y="105" /> 375 <mxPoint x="780" y="55" /> 376 <mxPoint x="665" y="55" /> 377 </Array> 378 </mxGeometry> 379 </mxCell> 380 381 <!-- SSM -> Processor 02 (dashed, purple) --> 382 <mxCell id="e_ssm_p02" value="exports ARN" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeWidth=2;dashed=1;flowAnimation=1;strokeColor=#8C4FFF;fontColor=#8C4FFF;fontSize=10;exitX=0;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="region" source="ssm" target="processor02"> 383 <mxGeometry relative="1" as="geometry"> 384 <Array as="points"> 385 <mxPoint x="780" y="135" /> 386 <mxPoint x="780" y="435" /> 387 <mxPoint x="665" y="435" /> 388 </Array> 389 </mxGeometry> 390 </mxCell> 391 392 <!-- ============================================================ --> 393 <!-- USER -> STACKS EDGES (outside region, parent="1") --> 394 <!-- ============================================================ --> 395 396 <!-- User -> EUM (green, route up) --> 397 <mxCell id="e_user_eum" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;" edge="1" parent="1" source="user" target="eum"> 398 <mxGeometry relative="1" as="geometry"> 399 <Array as="points"> 400 <mxPoint x="70" y="370" /> 401 <mxPoint x="70" y="165" /> 402 </Array> 403 </mxGeometry> 404 </mxCell> 405 406 <!-- User -> API GW (green, route down) --> 407 <mxCell id="e_user_apigw" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;" edge="1" parent="1" source="user" target="apigw"> 408 <mxGeometry relative="1" as="geometry"> 409 <Array as="points"> 410 <mxPoint x="70" y="370" /> 411 <mxPoint x="70" y="545" /> 412 </Array> 413 </mxGeometry> 414 </mxCell> 415 416 <!-- ============================================================ --> 417 <!-- LEGEND (bottom) --> 418 <!-- ============================================================ --> 419 <mxCell id="legend_box" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;strokeWidth=1;" vertex="1" parent="1"> 420 <mxGeometry x="120" y="920" width="1100" height="50" as="geometry" /> 421 </mxCell> 422 423 <mxCell id="legend_title" value="Legend:" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=13;fontStyle=1;" vertex="1" parent="1"> 424 <mxGeometry x="130" y="930" width="70" height="30" as="geometry" /> 425 </mxCell> 426 427 <!-- Green line legend --> 428 <mxCell id="leg1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#009900;strokeWidth=2;flowAnimation=1;endArrow=none;endFill=0;" edge="1" parent="1"> 429 <mxGeometry relative="1" as="geometry"> 430 <mxPoint x="210" y="945" as="sourcePoint" /> 431 <mxPoint x="270" y="945" as="targetPoint" /> 432 </mxGeometry> 433 </mxCell> 434 <mxCell id="leg1t" value="Raw messages" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;rounded=0;fontSize=11;fontStyle=0;" vertex="1" parent="1"> 435 <mxGeometry x="275" y="932" width="110" height="25" as="geometry" /> 436 </mxCell> 437 438 <!-- Red line legend --> 439 <mxCell id="leg2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#FF0000;strokeWidth=2;flowAnimation=1;endArrow=none;endFill=0;" edge="1" parent="1"> 440 <mxGeometry relative="1" as="geometry"> 441 <mxPoint x="400" y="945" as="sourcePoint" /> 442 <mxPoint x="460" y="945" as="targetPoint" /> 443 </mxGeometry> 444 </mxCell> 445 <mxCell id="leg2t" value="Buffered (tumbling window)" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;rounded=0;fontSize=11;fontStyle=0;" vertex="1" parent="1"> 446 <mxGeometry x="465" y="932" width="180" height="25" as="geometry" /> 447 </mxCell> 448 449 <!-- Orange line legend --> 450 <mxCell id="leg3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#FF8000;strokeWidth=2;flowAnimation=1;endArrow=none;endFill=0;" edge="1" parent="1"> 451 <mxGeometry relative="1" as="geometry"> 452 <mxPoint x="660" y="945" as="sourcePoint" /> 453 <mxPoint x="720" y="945" as="targetPoint" /> 454 </mxGeometry> 455 </mxCell> 456 <mxCell id="leg3t" value="Processed (AgentCore)" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;rounded=0;fontSize=11;fontStyle=0;" vertex="1" parent="1"> 457 <mxGeometry x="725" y="932" width="160" height="25" as="geometry" /> 458 </mxCell> 459 460 <!-- Teal line legend --> 461 <mxCell id="leg4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeColor=#01A88D;strokeWidth=2;flowAnimation=1;endArrow=none;endFill=0;" edge="1" parent="1"> 462 <mxGeometry relative="1" as="geometry"> 463 <mxPoint x="900" y="945" as="sourcePoint" /> 464 <mxPoint x="960" y="945" as="targetPoint" /> 465 </mxGeometry> 466 </mxCell> 467 <mxCell id="leg4t" value="AgentCore internal" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;rounded=0;fontSize=11;fontStyle=0;" vertex="1" parent="1"> 468 <mxGeometry x="965" y="932" width="140" height="25" as="geometry" /> 469 </mxCell> 470 471 <!-- Dashed line legend --> 472 <mxCell id="leg5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;html=1;strokeWidth=2;dashed=1;flowAnimation=1;endArrow=none;endFill=0;strokeColor=#666666;" edge="1" parent="1"> 473 <mxGeometry relative="1" as="geometry"> 474 <mxPoint x="1110" y="945" as="sourcePoint" /> 475 <mxPoint x="1170" y="945" as="targetPoint" /> 476 </mxGeometry> 477 </mxCell> 478 <mxCell id="leg5t" value="Config export" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;rounded=0;fontSize=11;fontStyle=0;" vertex="1" parent="1"> 479 <mxGeometry x="1175" y="932" width="100" height="25" as="geometry" /> 480 </mxCell> 481 482 </root> 483 </mxGraphModel> 484 </diagram> 485 </mxfile>