
Security Operations Center open source basato sull'AI — fusione degli alert, esercitazioni purple team, triage assistito da agenti, indagine MITRE ATT&CK. Con licenza MIT, auto-ospitabile.
Un SOC AI open-source e auto-ospitabile. I prompt, le chiamate agli strumenti e il ragionamento dell'agente vengono registrati passo dopo passo e sono riproducibili. Con licenza MIT.
La demo mantenuta dalla community su tryaisoc.com gira su Fly.io e può andare offline; vedi docs/operations/live-demo-runbook.md e usa Codespaces come ripiego sempre attivo.
Walkthrough di 90 secondi — l'agente esamina il caso LockBit 3.0 preinstallato dall'inizio alla fine. Il .mp4 e la hero.gif renderizzati arriveranno con il lancio della v8.0; la scaletta è in docs/demo/SCREENCAST_SHOTLIST.md.
Un solo comando — nessun clone, nessun Docker, nessuna chiave (npx aisoc arriva su npm con il lancio della v8.0; oggi viene compilato da packages/aisoc-lite/):```bash
npx aisoc triage --demo
La CLI `wedge` valuta un lotto di alert assegnando verdetti (escalate / review / suppress) con un motore deterministico importato dallo scorer di triage in produzione — zero chiavi LLM richieste. Oppure scegli il percorso che corrisponde a ciò che hai già sulla tua macchina:
| Se hai… | Esegui questo | Cosa ottieni |
|---------------------------------------|----------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|
| **Python 3.10+** (senza Docker) | `pip install -e packages/aisoc-sandbox && aisoc-sandbox demo` | Indagine agent offline guidata attraverso Detect → Triage → Hunt → Respond e stampata su stdout. **< 5 s.** Nessuna chiave API, nessuna rete. |
| **Un browser** (zero installazioni) | [Apri in Codespaces](https://codespaces.new/beenuar/AiSOC?quickstart=1) | IDE nel browser → `pnpm aisoc:demo --no-open` → clicca sulla porta inoltrata `3000`. ~5 min a freddo. |
| **Docker + pnpm** | `git clone https://github.com/beenuar/AiSOC && cd AiSOC && pnpm aisoc:demo` | Stack locale su Postgres + Redis + Kafka + api + agents + web. Il browser si apre su `INC-RT-001`. |
| **Niente** (Linux/macOS/Win puliti) | `curl -fsSL https://raw.githubusercontent.com/beenuar/AiSOC/main/install.sh \| bash` | Installa Docker, Node, pnpm, git al posto tuo; poi esegue `pnpm aisoc:demo`. |
La prima riga è nuova: [`aisoc-sandbox`](https://github.com/beenuar/aisoc/blob/HEAD/packages/aisoc-sandbox/) è un simulatore in-memory, a zero dipendenze, del funnel dell'agente. Scegli uno [scenario incluso](https://github.com/beenuar/aisoc/blob/HEAD/packages/aisoc-sandbox/README.md#bundled-scenarios) (`lateral-movement`, `aws-credential-exfil`, `phishing-payload`, `kubernetes-privesc`, `github-token-theft`) oppure carica il tuo JSON con `--file`. Le altre tre righe avviano lo stack reale e ti portano su `/cases/INC-RT-001?tab=ledger` — un caso di ransomware LockBit 3.0 a metà indagine, con i prompt dell'agente AI, le chiamate agli strumenti e il ragionamento trasmessi in streaming nel [Investigation Ledger](https://github.com/beenuar/aisoc/blob/HEAD/apps/docs/docs/console/investigation-rail.md). Ferma lo stack reale con `pnpm aisoc:demo:down`.
> **La demo si avvia ancora su `main`?** Ogni push esegue [`compose-smoke`](https://github.com/beenuar/AiSOC/actions/workflows/compose-smoke.yml) (lo stesso percorso `pnpm aisoc:demo` che eseguiresti in locale) e [`e2e`](https://github.com/beenuar/AiSOC/actions/workflows/e2e.yml) contro la console pre-caricata; il nightly [`compose-smoke-nightly`](https://github.com/beenuar/AiSOC/actions/workflows/compose-smoke-nightly.yml) lo ripete con cache fredde. Un badge rosso qui sotto blocca la release.
>
> [&style=flat-square)](https://github.com/beenuar/AiSOC/actions/workflows/compose-smoke.yml)
> [&style=flat-square)](https://github.com/beenuar/AiSOC/actions/workflows/compose-smoke-nightly.yml)
> [&style=flat-square)](https://github.com/beenuar/AiSOC/actions/workflows/e2e.yml)
La guida completa al deploy multi-piattaforma è in [`apps/docs/docs/installation.md`](https://github.com/beenuar/aisoc/blob/HEAD/apps/docs/docs/installation.md) (Render, Fly.io, Docker Compose, Kubernetes, Terraform). Installazione di livello produzione con storage tier completo: [`infra/helm/`](https://github.com/beenuar/aisoc/blob/HEAD/infra/helm/) o [`infra/terraform/`](https://github.com/beenuar/aisoc/blob/HEAD/infra/terraform/).
---
## Cos'è AiSOC
AiSOC è un singolo stack auto-hostable che acquisisce eventi di sicurezza, li correla, esegue indagini guidate dall'AI e mostra il risultato in una console SOC. L'agente e il substrato sono sotto licenza MIT, quindi puoi leggere, fare fork o sostituire entrambi.
Tre proprietà lo distinguono dai vendor AI SOC closed-source:
1. **Le decisioni dell'agente sono registrate.** L'Investigation Ledger memorizza il prompt LLM, la risposta, le prove citate e le chiamate a strumenti a valle per ogni passaggio di ogni esecuzione. Le replay sono disponibili in seguito.
2. **Il substrato ha un eval harness pubblico nella CI.** Cinque suite bloccano ogni PR verso `main` / `develop` — la riduzione degli alert è una misura reale su uno stream fisso di 1 000 alert; tre suite basate su rubric sono gate di auto-consistenza del substrato su un dataset deterministico di 200 incidenti (55 template) con macro per template; una quinta suite valida il corpus di telemetria di supporto. La [pagina benchmark](https://github.com/beenuar/aisoc/blob/HEAD/apps/docs/docs/benchmark.md) documenta esattamente cosa misura ogni suite e cosa non misura.
3. **Controlli tu cosa esce dal tuo perimetro.** Nessun callback verso un cloud del vendor e nessuna telemetria di "miglioramento del modello". Con un LLM hosted, le prove sono pseudonimizzate per impostazione predefinita (IP interni, hostname, email, percorsi, segreti, username diventano token opachi); esegui un modello locale (Ollama/vLLM) per un percorso completamente air-gapped. Esattamente cosa esce in ogni modalità: [`docs/trust/data-flows.md`](https://github.com/beenuar/aisoc/blob/HEAD/docs/trust/data-flows.md).
L'orchestratore è un LangGraph di ~600 righe in [`services/agents/`](https://github.com/beenuar/aisoc/blob/HEAD/services/agents/). È abbastanza piccolo da essere letto per intero, con modelli sostituibili e patchabile.
---
## Confronto con AiSOC
| Capacità | AiSOC | Wazuh | Splunk ES | AI SOC closed-source |
|---|---|---|---|---|
| Licenza open-source | MIT | GPL-2 | proprietaria | proprietaria |
| Auto-hostable | sì | sì | solo enterprise | solo cloud |
| Indagine AI autonoma | LangGraph | no | parziale (Splunk AI) | sì |
| Audit trail delle decisioni dell'agente | Investigation Ledger pubblico | n/d | n/d | non pubblicato |
| Eval harness pubblico del substrato | gated dalla CI, riproducibile, con corpus di telemetria sintetico + macro per template | n/d | n/d | non pubblicato |
| Contenuti di detection | 947 eseguibili (869 nativi) che scattano sullo stream live + libreria importata di 6 000 regole con tracciamento della provenienza ([truth table](https://github.com/beenuar/aisoc/blob/HEAD/docs/detections/truth-table.md)) | 1 200+ regole | 1 000+ app | curati |
| Plugin SDK | Python / TypeScript / Go | solo regole YAML | app | proprietario |
| Residenza dei dati | la tua infrastruttura | la tua infrastruttura | parziale | cloud del vendor |
| Prezzo | $0 (self-host) | $0 (self-host) | per GB ingerito | enterprise |
I vendor AI SOC closed-source spediscono prodotti funzionanti. Il contributo di AiSOC è rendere l'agente stesso aperto, il trail delle decisioni passo-passo leggibile e il substrato gated da un eval harness pubblico su ogni PR verso `main` / `develop`.
---
## Cosa vedrai nella console
<div align="center">
| <a href="apps/docs/docs/console/queue.md"><img src="https://raw.githubusercontent.com/beenuar/aisoc/HEAD/apps/web/public/screenshots/01-alerts-queue.svg" alt="Coda alert con countdown SLA" width="100%" /></a> | <a href="apps/docs/docs/console/investigation-rail.md"><img src="https://raw.githubusercontent.com/beenuar/aisoc/HEAD/apps/web/public/screenshots/02-investigation-rail.svg" alt="Investigation Rail con narrative di correlazione deterministica" width="100%" /></a> |
|:---:|:---:|
| **Coda alert** — countdown SLA ancorati al server, claim atomico, triage in un clic. [Docs](https://github.com/beenuar/aisoc/blob/HEAD/apps/docs/docs/console/queue.md) | **Investigation Rail** — narrative, chip di entità sul percorso di pivot, timeline a 6 eventi, azioni raccomandate. [Docs](https://github.com/beenuar/aisoc/blob/HEAD/apps/docs/docs/console/investigation-rail.md) |
| <a href="apps/docs/docs/console/rule-tuning.md"><img src="https://raw.githubusercontent.com/beenuar/aisoc/HEAD/apps/web/public/screenshots/03-hunt-workbench.svg" alt="Workbench /hunt in linguaggio naturale" width="100%" /></a> | <a href="apps/docs/docs/plugins/overview.md"><img src="https://raw.githubusercontent.com/beenuar/aisoc/HEAD/apps/web/public/screenshots/04-marketplace.svg" alt="Marketplace di plugin e detection" width="100%" /></a> |
| **Workbench `/hunt`** — scrivi un'ipotesi in inglese, ottieni ES|QL / SPL / KQL, salva e pianifica. [Docs](https://github.com/beenuar/aisoc/blob/HEAD/apps/docs/docs/console/rule-tuning.md) | **Marketplace** — plugin, playbook, detection con installazione tenant in un clic. [Docs](https://github.com/beenuar/aisoc/blob/HEAD/apps/docs/docs/plugins/overview.md) |
<sub><em>I quattro riquadri sopra sono segnaposto SVG. Gli screenshot PNG reali arriveranno con il prossimo rollup visual della Fase 2; il [video walkthrough](https://github.com/beenuar/aisoc/blob/HEAD/apps/web/public/demo/) in cima a questo README è il riferimento canonico fino ad allora.</em></sub>
</div>
---
## Architettura```mermaid
flowchart LR
subgraph Sources["Sources"]
EDR["EDR / XDR"]
SIEM["SIEM"]
Cloud["Cloud APIs"]
IDP["Identity"]
Net["Network"]
end
subgraph Ingest["Ingest & Normalize"]
Connectors["Connectors\n(Python · 78 vendors)"]
OsqueryTLS["osquery-tls\n(Python · host telemetry)"]
IngestSvc["Ingest worker\n(Go · OCSF)"]
Enrich["Enrichment\n(Go · IOC + Shodan)"]
end
subgraph Spine["Event Spine"]
Kafka[("Apache Kafka")]
end
subgraph Detect["Detect & Reason"]
Fusion["Fusion\n(Python · ML)"]
UEBA["UEBA\n(Python · baseline)"]
Rules["Rule engine\n(Sigma · YARA · KQL)"]
Agents["AI Agents\n(LangGraph)"]
end
subgraph Storage["Storage Tier"]
PG[("PostgreSQL")]
CH[("ClickHouse")]
OS[("OpenSearch")]
QD[("Qdrant")]
N4[("Neo4j")]
RD[("Redis")]
end
subgraph Surface["Surface"]
API["Core API\n(FastAPI)"]
Web["Web Console + Responder PWA\n(Next.js)"]
MCP["MCP Server\n(TS · stdio)"]
end
Sources --> Connectors --> IngestSvc --> Kafka
OsqueryTLS --> IngestSvc
IngestSvc --> Enrich --> Kafka
Kafka --> Fusion --> Storage
Kafka --> UEBA --> Kafka
Kafka --> Rules --> Kafka
Agents --> Storage
API --> Storage
Web --> API
MCP --> API
L'architettura completa (ogni servizio, ogni ruolo di storage, il workbench della console v1.5 e il contratto Investigation Ledger) è in apps/docs/docs/architecture.md. Il documento di progettazione di sistema più approfondito — inclusi il fusion ML, lo schema Neo4j-at-ingest e la pipeline di threat-intel — si trova in docs/architecture/SYSTEM_DESIGN.md. Il layout completo del monorepo è in apps/docs/docs/architecture/overview.md.
Una manciata di funzionalità di punta — le altre sono catalogate in apps/docs/docs/features/ e indicizzate all'inizio di apps/docs/docs/intro.md:
Maturità (v7.7.0 — release completamente operativa). La spina dorsale end-to-end è cablata e gated dalla CI: ingest → ClickHouse lake → rilevamento live → alert fuso → auto-triage → risposta governata. Connettori, Investigation Rail + Ledger, Hunt-as-Code, rilevamento in live-stream e auto-triage del copilot sono GA. La risposta autonoma è impostata in modalità copilot/dry-run di default (una policy di autonomia governa ogni esecuzione reale). Il benchmark LLM dell'agente live è in anteprima (la classifica del tier deterministico è gated dalla CI per ogni PR); le suite di eval del substrato sono GA. Ogni claim di prodotto è supportato da un test fallimentare — matrice claim-to-gate: 46 GATED / 9 PARTIAL / 0 NO GATE. Stato completo per claim:
docs/audit/REALITY_REPORT.md. La v7.7.0 aggiunge tre modalità di authoring delle detection (framework Python + builder AI + no-code), scoping dell'identità del chiamante con privilegi minimi per le azioni di risposta, data lifecycle self-service (retention + un DSL di trasformazione a prova di ReDoS + parser personalizzati), uno scanner CSPM agentless con auto-evidence di conformità e destinazioni Opsgenie/email/SOAR, e un report builder personalizzabile — tutto testato, tutto sumain.
Test connection live e segreti crittografati nel vault — aggiunti di recente Qualys, GreyNoise, JumpCloud, Darktrace e Imperva insieme a IBM QRadar, Netskope, Zeek/Suricata NDR e altri. Una singola query esegue una ricerca federata indipendente dal SIEM tra Splunk SPL / Sentinel KQL / Elastic ES|QL / QRadar AQL. Walkthrough: apps/docs/docs/connectors/index.md.docker compose up da freddo acquisisce i dati dei connettori → li deposita nel ClickHouse event lake → il corpus di detection eseguibili (947 regole) scatta sul live stream → viene creato un alert fuso, il tutto verificato da un'integration gate estesa. L'arricchimento threat-intel al momento del fuse + CISA-KEV ora alimenta il punteggio di confidenza e il boost exploit-in-the-wild, e le detection stateful/a finestra (brute-force, password-spray, port-scan) vengono eseguite insieme al corpus. apps/docs/docs/architecture.md.apps/docs/docs/concepts/automation-maturity.md.AiSOC include un server MCP (services/mcp/) così gli analisti possono interrogare gli alert, eseguire indagini dell'agente e riprodurre ogni passaggio dell'agente senza lasciare l'IDE o la chat. Il server espone 13 strumenti — discovery, deep-dive, query governata sul lake e il set azione/replay che scorre passo passo il ledger delle decisioni dell'agente.
Stato — build dal sorgente del monorepo oggi; la pubblicazione npm arriva nella v8.0. La configurazione completa è in
apps/docs/docs/integrations/mcp.md, che mostra le invocazioni di oggi contro quelle della v8.0 affiancate.
Tre superfici di contribuzione; ognuna è un file più fixture opzionali, e la CI valida ogni PR.
detections/ con una fixture positiva / negativa in detections/fixtures/. Il workflow validate-detections lo testa su ogni PR. Spec: docs/connectors/.BaseConnector in services/connectors/app/connectors/, registrala in _CONNECTOR_CLASSES e aggiungi un manifest plugins/<id>/plugin.yaml. Il marketplace la rileva automaticamente. Walkthrough: apps/docs/docs/connectors/.playbooks/; fa da gate alla PR. Schema: .SDK per plugin e detection (Python · TypeScript · Go) — vedi apps/docs/docs/plugins/overview.md. La CLI (aisoc-cli) si trova in packages/aisoc-cli/; la pubblicazione PyPI arriva nella v8.0.
Nella tua CI: aggiungi - uses: beenuar/aisoc-action@v1 per fare triage degli alert Dependabot / CodeQL / secret-scanning del tuo repo a ogni PR (deterministico, nulla lascia il tuo runner; usato internamente su questo repo, la pubblicazione sul Marketplace arriva con la v8.0). Docs.
RELEASES.md (rispecchia ciò che viveva in questo README)CHANGELOG.md[~]): docs/roadmap/v8-progress.mdROADMAP.mdPR di ogni dimensione sono benvenute. Leggi CONTRIBUTING.md per il workflow e il Codice di Condotta prima di aprire una PR.
Chi contribuisce per la prima volta: scegli una good first issue. Serve aiuto? Apri una discussione Q&A.
AiSOC è costruito e migliorato da una community crescente di contributori, ricercatori di sicurezza e operatori. L'attribuzione completa — inclusi i reporter di bug e i ricercatori di sicurezza — è in .github/CREDITS.md. Il grafico sempre aggiornato dei contributi al codice è nella pagina dei contributori GitHub.
Per i problemi di sicurezza, non aprire un issue pubblico. Usa la segnalazione privata delle vulnerabilità di GitHub. La policy completa è in SECURITY.md. AiSOC segue la divulgazione coordinata.
MIT — © 2024–presente contributori di AiSOC.
/explore.apps/docs/docs/console/investigation-rail.md.apps/docs/docs/concepts/detections.md — e le 869 regole native si trovano in detections/.services/agents/app/routing/./hunt in linguaggio naturale. hunts/ + apps/docs/docs/console/rule-tuning.md. In più strumenti browser gratuiti e senza login: un traduttore di regole Sigma/SPL/KQL/ES|QL, un classificatore della copertura ATT&CK, NL→Sigma e un calcolatore del rumore.apps/docs/docs/benchmark-scoreboard.mdx.