# aws-samples/sample-network-resilience-agent architecture

> Architecture diagram of the GitHub repository aws-samples/sample-network-resilience-agent, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/aws-samples/sample-network-resilience-agent
- Repository: https://github.com/aws-samples/sample-network-resilience-agent

## Overview

Network Resilience Agent discovers AWS Direct Connect and related network resources, assesses resilience, and presents an interactive topology with recommendations. The main workflow runs from AWS connection and topology retrieval through graph construction and assessment to the visualizer. Separate capabilities provide Bedrock-based topology-aware chat, on-demand operational views, and snapshot/report export. The README documents additional discovery, resilience, and sharing capabilities beyond the sampled excerpts; links for those are included only where the tree or documentation supports them.

Main entry points: [`dx-visualizer/src/hooks/useTopology.ts`](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/hooks/useTopology.ts) (Topology workflow), [`dx-visualizer/src/store/topology-store.ts`](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/store/topology-store.ts) (Topology state), [`dx-visualizer/src/App.tsx`](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/App.tsx) (Application shell), [`dx-visualizer/src/chat/chat-service.ts`](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/chat/chat-service.ts) (Chat service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and discovery"]
  node_aws_login["AWS connection<br/>[TopBar.tsx]"]
  node_sso_ui["SSO login<br/>[SsoLoginFlow.tsx]"]
  node_sso_backend["SSO service<br/>[app.ts]"]
  node_sso_logic["SSO operations<br/>[sso-service.ts]"]
  node_topology_fetch["Topology discovery<br/>[fetch-topology.ts]"]
  node_cross_account["Account enrichment<br/>[ec2.ts]"]
end

subgraph group_analysis["Topology analysis"]
  node_topology_hook["Topology workflow<br/>[useTopology.ts]"]
  node_state[("Topology state<br/>[topology-store.ts]")]
  node_graph_builder["Graph construction"]
  node_layout["Graph layout<br/>[layout-engine.ts]"]
  node_recommendations["Resilience assessment"]
end

subgraph group_visual["Visualization"]
  node_app["Application shell<br/>[App.tsx]"]
  node_canvas["Interactive diagram<br/>[FlowCanvas.tsx]"]
  node_status["Resilience status"]
end

subgraph group_assistant["AI assistant"]
  node_chat_ui["Chat panel<br/>[ChatPanel.tsx]"]
  node_chat_service["Chat service<br/>[chat-service.ts]"]
  node_bedrock["Bedrock streaming<br/>[bedrock-client.ts]"]
  node_tool_exec["Chat tools<br/>[tool-executor.ts]"]
end

subgraph group_operations["Operations and sharing"]
  node_operations_ui["Live route overlay<br/>[dx-routes.ts]"]
  node_export_report["Report export<br/>[useExportReport.ts]"]
  node_snapshot["Snapshot import"]
  node_export_image["Image export<br/>[useExportImage.ts]"]
end

node_user(("Network engineer"))
node_aws{{"AWS APIs"}}
node_bedrock_api{{"Amazon Bedrock"}}

node_user -->|"uses"| node_app
node_app -->|"offers connection"| node_aws_login
node_user -->|"authenticates"| node_sso_ui
node_sso_ui -->|"requests SSO"| node_sso_backend
node_sso_backend -->|"invokes"| node_sso_logic
node_sso_logic -->|"calls identity APIs"| node_aws
node_aws_login -->|"provides credentials"| node_topology_hook
node_topology_hook -->|"requests discovery"| node_topology_fetch
node_topology_fetch -->|"queries network APIs"| node_aws
node_topology_hook -.->|"enriches VPCs"| node_cross_account
node_cross_account -.->|"assumes role and reads"| node_aws
node_topology_hook -->|"updates state"| node_state
node_topology_hook -->|"builds graph"| node_graph_builder
node_topology_hook -->|"assesses topology"| node_recommendations
node_topology_hook -->|"positions nodes"| node_layout
node_topology_hook -->|"stores graph"| node_state
node_app -->|"renders"| node_canvas
node_app -->|"renders"| node_status
node_canvas -->|"reads topology"| node_state
node_status -->|"reads assessment"| node_state
node_app -->|"renders"| node_chat_ui
node_chat_ui -->|"sends messages"| node_chat_service
node_chat_service -->|"reads topology context"| node_state
node_chat_service -->|"streams conversation"| node_bedrock
node_bedrock -->|"converses"| node_bedrock_api
node_bedrock -->|"dispatches tools"| node_tool_exec
node_tool_exec -.->|"queries live data"| node_aws
node_user -->|"requests routes"| node_operations_ui
node_operations_ui -->|"fetches BGP routes"| node_aws
node_user -->|"exports report"| node_export_report
node_export_report -->|"reads topology and findings"| node_state
node_user -->|"imports snapshot"| node_snapshot
node_snapshot -->|"loads topology"| node_state
node_user -->|"exports image"| node_export_image
node_export_image -->|"captures diagram"| node_canvas

click node_app "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/App.tsx"
click node_aws_login "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/components/TopBar.tsx"
click node_sso_ui "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/components/SsoLoginFlow.tsx"
click node_sso_backend "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/backend/src/app.ts"
click node_sso_logic "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/backend/src/sso-service.ts"
click node_topology_fetch "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/api/fetch-topology.ts"
click node_cross_account "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/api/ec2.ts"
click node_topology_hook "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/hooks/useTopology.ts"
click node_state "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/store/topology-store.ts"
click node_graph_builder "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/engine/topology-builder.ts"
click node_layout "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/engine/layout-engine.ts"
click node_recommendations "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/engine/recommendation-engine.ts"
click node_canvas "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/components/FlowCanvas.tsx"
click node_status "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/components/ResiliencyScoreCard.tsx"
click node_chat_ui "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/components/ChatPanel.tsx"
click node_chat_service "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/chat/chat-service.ts"
click node_bedrock "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/chat/bedrock-client.ts"
click node_tool_exec "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/chat/tool-executor.ts"
click node_operations_ui "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/api/dx-routes.ts"
click node_export_report "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/hooks/useExportReport.ts"
click node_snapshot "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/hooks/useImportSnapshot.ts"
click node_export_image "https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/hooks/useExportImage.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_aws_login,node_sso_ui,node_sso_backend,node_sso_logic,node_topology_fetch,node_cross_account toneBlue
class node_topology_hook,node_state,node_graph_builder,node_layout,node_recommendations toneAmber
class node_app,node_canvas,node_status,node_aws toneMint
class node_chat_ui,node_chat_service,node_bedrock,node_tool_exec toneRose
class node_operations_ui,node_export_report,node_snapshot,node_export_image,node_user,node_bedrock_api toneIndigo
```

## Components

### Access and discovery

- [AWS connection](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/components/TopBar.tsx): `dx-visualizer/src/components/TopBar.tsx`
- [SSO login](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/components/SsoLoginFlow.tsx): `dx-visualizer/src/components/SsoLoginFlow.tsx`
- [SSO service](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/backend/src/app.ts): `backend/src/app.ts`
- [SSO operations](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/backend/src/sso-service.ts): `backend/src/sso-service.ts`
- [Topology discovery](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/api/fetch-topology.ts): `dx-visualizer/src/api/fetch-topology.ts`
- [Account enrichment](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/api/ec2.ts): `dx-visualizer/src/api/ec2.ts`

### Topology analysis

- [Topology workflow](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/hooks/useTopology.ts): `dx-visualizer/src/hooks/useTopology.ts`
- [Topology state](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/store/topology-store.ts): `dx-visualizer/src/store/topology-store.ts`
- [Graph construction](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/engine/topology-builder.ts): `dx-visualizer/src/engine/topology-builder.ts`
- [Graph layout](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/engine/layout-engine.ts): `dx-visualizer/src/engine/layout-engine.ts`
- [Resilience assessment](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/engine/recommendation-engine.ts): `dx-visualizer/src/engine/recommendation-engine.ts`

### Visualization

- [Application shell](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/App.tsx): `dx-visualizer/src/App.tsx`
- [Interactive diagram](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/components/FlowCanvas.tsx): `dx-visualizer/src/components/FlowCanvas.tsx`
- [Resilience status](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/components/ResiliencyScoreCard.tsx): `dx-visualizer/src/components/ResiliencyScoreCard.tsx`

### AI assistant

- [Chat panel](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/components/ChatPanel.tsx): `dx-visualizer/src/components/ChatPanel.tsx`
- [Chat service](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/chat/chat-service.ts): `dx-visualizer/src/chat/chat-service.ts`
- [Bedrock streaming](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/chat/bedrock-client.ts): `dx-visualizer/src/chat/bedrock-client.ts`
- [Chat tools](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/chat/tool-executor.ts): `dx-visualizer/src/chat/tool-executor.ts`

### Operations and sharing

- [Live route overlay](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/api/dx-routes.ts): `dx-visualizer/src/api/dx-routes.ts`
- [Report export](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/hooks/useExportReport.ts): `dx-visualizer/src/hooks/useExportReport.ts`
- [Snapshot import](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/hooks/useImportSnapshot.ts): `dx-visualizer/src/hooks/useImportSnapshot.ts`
- [Image export](https://github.com/aws-samples/sample-network-resilience-agent/blob/main/dx-visualizer/src/hooks/useExportImage.ts): `dx-visualizer/src/hooks/useExportImage.ts`

### Other components

- **Network engineer**
- **AWS APIs**
- **Amazon Bedrock**

## Connections

- Network engineer → Application shell: uses
- Application shell → AWS connection: offers connection
- Network engineer → SSO login: authenticates
- SSO login → SSO service: requests SSO
- SSO service → SSO operations: invokes
- SSO operations → AWS APIs: calls identity APIs
- AWS connection → Topology workflow: provides credentials
- Topology workflow → Topology discovery: requests discovery
- Topology discovery → AWS APIs: queries network APIs
- Topology workflow → Account enrichment: enriches VPCs
- Account enrichment → AWS APIs: assumes role and reads
- Topology workflow → Topology state: updates state
- Topology workflow → Graph construction: builds graph
- Topology workflow → Resilience assessment: assesses topology
- Topology workflow → Graph layout: positions nodes
- Topology workflow → Topology state: stores graph
- Application shell → Interactive diagram: renders
- Application shell → Resilience status: renders
- Interactive diagram → Topology state: reads topology
- Resilience status → Topology state: reads assessment
- Application shell → Chat panel: renders
- Chat panel → Chat service: sends messages
- Chat service → Topology state: reads topology context
- Chat service → Bedrock streaming: streams conversation
- Bedrock streaming → Amazon Bedrock: converses
- Bedrock streaming → Chat tools: dispatches tools
- Chat tools → AWS APIs: queries live data
- Network engineer → Live route overlay: requests routes
- Live route overlay → AWS APIs: fetches BGP routes
- Network engineer → Report export: exports report
- Report export → Topology state: reads topology and findings
- Network engineer → Snapshot import: imports snapshot
- Snapshot import → Topology state: loads topology
- Network engineer → Image export: exports image
- Image export → Interactive diagram: captures diagram
