Autonomous SOC Agent Platform for SIEM Alert Triage & Response
An agentic AI platform that sits behind a SIEM and turns the firehose of raw security alarms into autonomous, end-to-end incident handling. A chain of specialized LLM agents — detect → triage → contain — classifies each alert, validates whether it is a real threat, groups related alerts, and dispatches the response (email notification + Jira ticket) on its own, with a human-facing analytics dashboard and a natural-language copilot over the whole case history.
What it does. A SOC drowns in SIEM alarms — most of them false positives, duplicates, or already-handled noise — and every one still has to be read, classified, validated, and either dismissed or escalated by a human analyst. GATRA automates that loop. It continuously pulls new alarms from the SIEM data lake, and for each one runs a pipeline of cooperating AI agents that (1) classify the alert and decide whether it is even worth pursuing, (2) triage it by actively validating the suspicious artifact (a leaked credential, a malicious IP, a brute-force login) against real evidence, and (3) contain/respond by grouping related alerts, opening a Jira ticket, and sending a templated notification email to the right responders. Analysts supervise through a Streamlit dashboard — overview metrics, per-agent activity, and a true-/false-positive feedback loop — and can interrogate the entire case history in plain language through a built-in LLM analytics copilot.
Manual SOC triage didn't scale, and the pain points were concrete:
A pipeline of cooperating agents, fed by a poller and supervised through a dashboard.
alarmId, and skips anything already processed (no duplicate
work). Each alarm is POSTed to the orchestrator.valid=False) it stops; if TAA finds it not a real threat it stops before any action. Tracks an
agent_state row per alarm with status (in_progress, stopped_ada_invalid,
completed_no_action, completed_with_action, completed_with_action_grouped,
awaiting_group_dispatch, error).bad_ip,
credential_leak, credential_access, other) and extracts the variable of importance (the
artifact to check). It then queries existing records: if the artifact already exists in records →
it was handled before → false positive (valid=False); if not → genuine, escalate
(valid=True). Implemented as a DSPy ReAct agent with analyzer + record-check tools.valid, severity, and confidence with reasoning. credential_access and other
are assessed from context without an external tool. Tool/API failures degrade safely to
valid=False with an explanation.bad_ip.html, cred_leak.html,
cred_access.html) to the responders and, for groupable classes, creates a Jira ticket. It
accepts a pre-built email payload (grouped path) or constructs one itself (single path).LIMITs so the LLM can only run safe, read-only analytical queries.| Layer | Technologies |
|---|---|
| Agent frameworks | CrewAI (Agent/Task/Crew), DSPy (ReAct, Signatures, Tools) |
| LLM | Vertex AI — Gemini (tool-calling, reasoning) |
| Orchestration | Custom orchestrator (sequential ADA→TAA→CRA with early-exit gates), group manager + dispatch policy |
| Ingestion / middleware | Python poller, requests, BigQuery client (events+alarms join, de-dup against agent_state) |
| Tools / actions | Bad-IP reputation check, credential-leak validator, record-existence lookups, Jira ticket creation, templated email notifications (HTML per case class) |
| Data store | Google BigQuery (siem_events, siem_alarms, ada_state, taa_state, cra_state, agent_state) |
| Backend API | FastAPI (orchestrator + per-agent routes, health/model endpoints, model preload) |
| Dashboard | Streamlit (overview · agent activity · feedback · use-case views), pandas, Altair/plotting |
| Analytics copilot | LLM text-to-SQL over BigQuery + an LLM-boundaries layer (dangerous-SQL / injection / out-of-context blocking, auto safety limits) |
| Infra | Docker / docker-compose, GitLab CI, service-account auth, .env/secrets |
The story in one glance: SIEM alarms are polled in, a chain of agents detects → triages → responds, and analysts supervise through a dashboard and a natural-language copilot.
Disclaimer: sample visuals may contain anonymized, simulated, or non-production values for presentation purposes.