An agentic, modular Network Operations Center (NOC) triage system designed to analyze large-scale network telemetry and generate structured, production-grade incident reports.
This system implements a two-agent A2A (Agent-to-Agent) architecture using LangGraph:
- An Analyst Agent performs structured root-cause analysis from preprocessed telemetry.
- A Reporter Agent transforms validated findings into compliant, professional reports.
The design emphasizes:
- Separation of concerns
- Fail-fast evaluation
- Deterministic validation over LLM outputs
- Tech Stack
- Key Features
- System Architecture
- In-Depth Agent Workflow
- Evaluation & Retry Mechanism
- File Structure
- Screenshots
- Getting Started
- Contact & License
This project is built with a modern, robust AI + data processing stack:
- Core Runtime: Python 3.9+
- Workflow Orchestration: LangGraph (stateful multi-agent pipelines)
- LLM Layer: LangChain + Groq API (
llama-3.3-70b-versatile) - Schema Enforcement: Pydantic (strict typed outputs)
- Frontend: Streamlit (interactive operations dashboard)
- Synthetic Data Generation: Faker
- Report Rendering: Markdown + FPDF
- Massive-Scale Log Simulation: Generate up to 10,000 realistic synthetic syslog events (BGP route flaps, hardware faults, DDoS-like congestion, etc.).
- Intelligent Preprocessing: Condense thousands of raw events into anomaly summaries to stay within LLM context constraints.
- Multi-Agent Orchestration: Pipeline nodes (Preprocessor, Analyst, Guardrails, Reporter, Evaluator) operate as specialized agents.
- Deterministic QA: Programmatically validate report grounding against extracted router entities.
- Interactive Triage UI: Live pipeline trace visibility in Streamlit ("AI Thinking Process").
- Export-Ready Reporting: Download validated Incident, Advisory, and Operational reports in PDF format.
The architecture is organized into three phases:
- Log Generation & Scenario Setup
- Multi-Agent Triage Pipeline
- Rendering & Export
The core pipeline (NetOpsPipeline) passes a strictly typed TriageState through LangGraph nodes:
-
Preprocessor Node (Python)
- Aggregates raw logs by
router_id + status - Computes occurrence counts, average latency, affected protocols
- Produces condensed anomaly summaries for LLM-efficient analysis
- Aggregates raw logs by
-
Analyst Node (LLM + Structured Output)
- Uses
with_structured_output(AnalystOutput) - Classifies
system_status(CRITICAL,ADVISORY,OK) - Extracts
critical_routers,warning_routers, and likely causes
- Uses
-
Guardrails Node (Deterministic Validation)
- Enforces logical consistency between status and router lists
- Example: if critical routers exist, status cannot remain
OK
-
Reporter Node (LLM + Structured Output)
- Uses
with_structured_output(ReporterOutput) - Produces one or more markdown outputs:
incident_reportadvisory_reportoperational_report
- Supports regeneration with evaluator feedback if grounding fails
- Uses
-
Evaluator Node + Conditional Routing
- Scores output completeness and grounding
- Routes back to Reporter if score
< 1.0and retry budget remains - Finalizes when score is acceptable or retry limit is reached
To reduce hallucination risk and improve output reliability, the pipeline uses deterministic post-generation checks:
- Validation Rule: Every router ID extracted by Analyst must appear in the corresponding final report.
- Scoring Logic: Starts at
1.0; penalties are applied for missing critical/warning entities. - Feedback Loop: On failure, evaluator appends precise correction feedback.
- Retry Policy: Conditional re-route to Reporter (max retries configured as
2). - Outcome: Either fully grounded output or bounded failure with explicit evaluation reason.
Incident-Triage/
├── Documentation/
│ ├── Incident Triage Architecture.pdf
│ └── Incident Triage Architecture.png
├── screenshots/
│ ├── agentic thinking and pipeline.png
│ ├── log generation.png
│ └── output_export.png
├── .env # Environment variables (Groq API Key)
├── .gitignore
├── app.py # Main Streamlit + LangGraph application
├── LICENSE
├── README.md
└── requirements.txt
- Python 3.9+
- A valid Groq API Key
-
Clone the repository
git clone https://github.com/shib1111111/Incident-Triage.git cd Incident-Triage -
Create and activate virtual environment
python -m venv venv # Windows venv\Scripts\activate # macOS/Linux source venv/bin/activate
-
Install dependencies
pip install -r requirements.txt
Create .env in the project root:
GROQ_API_KEY=your_groq_api_key_herestreamlit run app.pyApp URL (default): http://localhost:8501
- Configure scenario (log volume, error/warning injection, fault type)
- Generate synthetic logs
- Initialize AI triage pipeline
- Review reports, evaluation score, and export PDFs
Developed by Shib Kumar Saraf
For enterprise inquiries, feature requests, or contributions, reach out via GitHub or email.
📧 Email: shibkumarsaraf05@gmail.com
🐙 GitHub: github.com/shib1111111
License: MIT License
See LICENSE for details.



