# hackathon-project-spec/incident-pilot architecture

> Architecture diagram of the GitHub repository hackathon-project-spec/incident-pilot, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/hackathon-project-spec/incident-pilot
- Repository: https://github.com/hackathon-project-spec/incident-pilot

## Overview

IncidentPilot is an incident-response assistant that augments live incident analysis with remembered causes, successful fixes, and failed approaches. Engineers submit incident details through the React interface or REST API; the backend recalls related memory, asks an LLM for a structured diagnosis, and returns guidance. A second workflow records postmortems and reflects over those learnings. The product also exposes memory comparison and demo controls. The graph follows documented API and service ownership; frontend-to-backend wiring is inferred only from the documented connected frontend and API client, while unsampled implementation details are omitted.

Main entry points: [`src/main/java/com/incidentpilot/service/IncidentService.java`](https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/service/IncidentService.java) (Incident orchestration), [`frontend/src/api/api.ts`](https://github.com/hackathon-project-spec/incident-pilot/blob/main/frontend/src/api/api.ts) (HTTP API client), [`src/main/java/com/incidentpilot/client/HindsightClient.java`](https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/client/HindsightClient.java) (Hindsight operations), [`frontend/src/App.tsx`](https://github.com/hackathon-project-spec/incident-pilot/blob/main/frontend/src/App.tsx) (Route application)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["React interface"]
  node_app["Route application<br/>[App.tsx]"]
  node_incident_ui["Incident analysis"]
  node_comparison_ui["Memory comparison<br/>[ComparisonPage.tsx]"]
  node_postmortem_ui["Postmortem entry<br/>[PostmortemPage.tsx]"]
  node_demo_ui["Demo controls"]
  node_api_client["HTTP API client<br/>[api.ts]"]
end

subgraph group_api["REST entrypoints"]
  node_incident_controller["Incident endpoints"]
  node_postmortem_controller["Postmortem endpoint"]
  node_demo_controller["Demo endpoints"]
end

subgraph group_workflow["Incident workflows"]
  node_incident_service["Incident orchestration"]
  node_postmortem_service["Postmortem lifecycle"]
  node_diagnosis["Structured diagnosis"]
  node_postmortem_result["Lifecycle result"]
  node_comparison_result["Side-by-side result"]
end

subgraph group_integrations["Memory and reasoning"]
  node_hindsight_client["Hindsight operations"]
  node_local_memory[("Local fallback memory")]
  node_hindsight["Hindsight service"]
  node_llm_client["LLM reasoning client<br/>[LLMClient.java]"]
  node_llm_provider["LLM provider"]
end

node_engineer(("SRE / engineer"))

node_engineer -->|"uses"| node_app
node_app -->|"routes"| node_incident_ui
node_app -->|"routes"| node_comparison_ui
node_app -->|"routes"| node_postmortem_ui
node_app -->|"routes"| node_demo_ui
node_incident_ui -.->|"submits incident"| node_api_client
node_comparison_ui -.->|"requests comparison"| node_api_client
node_postmortem_ui -.->|"submits learning"| node_api_client
node_demo_ui -.->|"controls demo"| node_api_client
node_api_client -.->|"calls API"| node_incident_controller
node_api_client -.->|"calls API"| node_postmortem_controller
node_api_client -.->|"calls API"| node_demo_controller
node_incident_controller -->|"delegates"| node_incident_service
node_postmortem_controller -->|"delegates"| node_postmortem_service
node_demo_controller -->|"seeds postmortems"| node_postmortem_service
node_demo_controller -->|"runs analysis"| node_incident_service
node_demo_controller -->|"resets memory"| node_hindsight_client
node_incident_service -->|"recalls incidents"| node_hindsight_client
node_incident_service -->|"analyzes incident"| node_llm_client
node_llm_client -->|"builds response"| node_diagnosis
node_incident_service -->|"returns diagnosis"| node_diagnosis
node_incident_service -->|"returns comparison"| node_comparison_result
node_postmortem_service -->|"retains learning"| node_hindsight_client
node_postmortem_service -->|"reflects memory"| node_hindsight_client
node_postmortem_service -->|"returns status"| node_postmortem_result
node_hindsight_client -->|"reads and writes"| node_local_memory
node_hindsight_client -.->|"recalls, retains, reflects"| node_hindsight
node_incident_service -->|"generates legacy diagnosis"| node_llm_client
node_llm_client -.->|"requests reasoning"| node_llm_provider

click node_app "https://github.com/hackathon-project-spec/incident-pilot/blob/main/frontend/src/App.tsx"
click node_incident_ui "https://github.com/hackathon-project-spec/incident-pilot/blob/main/frontend/src/pages/IncidentAnalysisPage.tsx"
click node_comparison_ui "https://github.com/hackathon-project-spec/incident-pilot/blob/main/frontend/src/pages/ComparisonPage.tsx"
click node_postmortem_ui "https://github.com/hackathon-project-spec/incident-pilot/blob/main/frontend/src/pages/PostmortemPage.tsx"
click node_demo_ui "https://github.com/hackathon-project-spec/incident-pilot/blob/main/frontend/src/pages/DemoControlCenter.tsx"
click node_api_client "https://github.com/hackathon-project-spec/incident-pilot/blob/main/frontend/src/api/api.ts"
click node_incident_controller "https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/controller/IncidentController.java"
click node_postmortem_controller "https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/controller/PostmortemController.java"
click node_demo_controller "https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/controller/DemoController.java"
click node_incident_service "https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/service/IncidentService.java"
click node_postmortem_service "https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/service/PostmortemService.java"
click node_hindsight_client "https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/client/HindsightClient.java"
click node_local_memory "https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/client/HindsightClient.java"
click node_llm_client "https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/client/LLMClient.java"
click node_diagnosis "https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/dto/IncidentAnalysisResponse.java"
click node_postmortem_result "https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/dto/PostmortemResponse.java"
click node_comparison_result "https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/dto/IncidentComparisonResponse.java"

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_app,node_incident_ui,node_comparison_ui,node_postmortem_ui,node_demo_ui,node_api_client toneBlue
class node_incident_controller,node_postmortem_controller,node_demo_controller toneAmber
class node_incident_service,node_postmortem_service,node_diagnosis,node_postmortem_result,node_comparison_result toneMint
class node_hindsight_client,node_local_memory,node_hindsight,node_llm_client,node_llm_provider toneRose
class node_engineer toneIndigo
```

## Components

### React interface

- [Route application](https://github.com/hackathon-project-spec/incident-pilot/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Incident analysis](https://github.com/hackathon-project-spec/incident-pilot/blob/main/frontend/src/pages/IncidentAnalysisPage.tsx): `frontend/src/pages/IncidentAnalysisPage.tsx`
- [Memory comparison](https://github.com/hackathon-project-spec/incident-pilot/blob/main/frontend/src/pages/ComparisonPage.tsx): `frontend/src/pages/ComparisonPage.tsx`
- [Postmortem entry](https://github.com/hackathon-project-spec/incident-pilot/blob/main/frontend/src/pages/PostmortemPage.tsx): `frontend/src/pages/PostmortemPage.tsx`
- [Demo controls](https://github.com/hackathon-project-spec/incident-pilot/blob/main/frontend/src/pages/DemoControlCenter.tsx): `frontend/src/pages/DemoControlCenter.tsx`
- [HTTP API client](https://github.com/hackathon-project-spec/incident-pilot/blob/main/frontend/src/api/api.ts): `frontend/src/api/api.ts`

### REST entrypoints

- [Incident endpoints](https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/controller/IncidentController.java): `src/main/java/com/incidentpilot/controller/IncidentController.java`
- [Postmortem endpoint](https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/controller/PostmortemController.java): `src/main/java/com/incidentpilot/controller/PostmortemController.java`
- [Demo endpoints](https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/controller/DemoController.java): `src/main/java/com/incidentpilot/controller/DemoController.java`

### Incident workflows

- [Incident orchestration](https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/service/IncidentService.java): `src/main/java/com/incidentpilot/service/IncidentService.java`
- [Postmortem lifecycle](https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/service/PostmortemService.java): `src/main/java/com/incidentpilot/service/PostmortemService.java`
- [Structured diagnosis](https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/dto/IncidentAnalysisResponse.java): `src/main/java/com/incidentpilot/dto/IncidentAnalysisResponse.java`
- [Lifecycle result](https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/dto/PostmortemResponse.java): `src/main/java/com/incidentpilot/dto/PostmortemResponse.java`
- [Side-by-side result](https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/dto/IncidentComparisonResponse.java): `src/main/java/com/incidentpilot/dto/IncidentComparisonResponse.java`

### Memory and reasoning

- [Hindsight operations](https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/client/HindsightClient.java): `src/main/java/com/incidentpilot/client/HindsightClient.java`
- [Local fallback memory](https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/client/HindsightClient.java): `src/main/java/com/incidentpilot/client/HindsightClient.java`
- **Hindsight service**
- [LLM reasoning client](https://github.com/hackathon-project-spec/incident-pilot/blob/main/src/main/java/com/incidentpilot/client/LLMClient.java): `src/main/java/com/incidentpilot/client/LLMClient.java`
- **LLM provider**

### Other components

- **SRE / engineer**

## Connections

- SRE / engineer → Route application: uses
- Route application → Incident analysis: routes
- Route application → Memory comparison: routes
- Route application → Postmortem entry: routes
- Route application → Demo controls: routes
- Incident analysis → HTTP API client: submits incident
- Memory comparison → HTTP API client: requests comparison
- Postmortem entry → HTTP API client: submits learning
- Demo controls → HTTP API client: controls demo
- HTTP API client → Incident endpoints: calls API
- HTTP API client → Postmortem endpoint: calls API
- HTTP API client → Demo endpoints: calls API
- Incident endpoints → Incident orchestration: delegates
- Postmortem endpoint → Postmortem lifecycle: delegates
- Demo endpoints → Postmortem lifecycle: seeds postmortems
- Demo endpoints → Incident orchestration: runs analysis
- Demo endpoints → Hindsight operations: resets memory
- Incident orchestration → Hindsight operations: recalls incidents
- Incident orchestration → LLM reasoning client: analyzes incident
- LLM reasoning client → Structured diagnosis: builds response
- Incident orchestration → Structured diagnosis: returns diagnosis
- Incident orchestration → Side-by-side result: returns comparison
- Postmortem lifecycle → Hindsight operations: retains learning
- Postmortem lifecycle → Hindsight operations: reflects memory
- Postmortem lifecycle → Lifecycle result: returns status
- Hindsight operations → Local fallback memory: reads and writes
- Hindsight operations → Hindsight service: recalls, retains, reflects
- Incident orchestration → LLM reasoning client: generates legacy diagnosis
- LLM reasoning client → LLM provider: requests reasoning
