
Centre d'opérations de sécurité (SOC) open-source propulsé par l'IA — fusion d'alertes, exercices purple team, tri assisté par agent, investigation MITRE ATT&CK. Sous licence MIT, auto-hébergeable.
Un SOC IA open source et auto-hébergeable. Les prompts, appels d'outils et raisonnements de l'agent sont journalisés étape par étape et rejouables. Sous licence MIT.
La démo maintenue par la communauté sur tryaisoc.com tourne sur Fly.io et peut devenir hors ligne ; voir docs/operations/live-demo-runbook.md et utilisez Codespaces comme solution de repli toujours disponible.
Visite guidée de 90 secondes — l'agent enquête de bout en bout sur le cas LockBit 3.0 préchargé. Le .mp4 et le hero.gif rendus arrivent avec la v8.0 ; le brief se trouve dans docs/demo/SCREENCAST_SHOTLIST.md.
Une seule commande — pas de clone, pas de Docker, pas de clés (npx aisoc arrive sur npm avec la v8.0 ; aujourd'hui il se construit depuis packages/aisoc-lite/) :```bash
npx aisoc triage --demo
L'interface CLI `wedge` évalue un lot d'alertes et attribue des verdicts (escalate / review / suppress) à l'aide d'un moteur déterministe porté depuis le système de triage de production — aucune clé LLM requise. Ou choisissez le chemin qui correspond à ce que vous avez déjà sur votre machine :
| Si vous avez… | Exécutez ceci | Ce que vous obtenez |
|---------------------------------------|----------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|
| **Python 3.10+** (sans Docker) | `pip install -e packages/aisoc-sandbox && aisoc-sandbox demo` | Investigation d'agent hors ligne déroulant Detect → Triage → Hunt → Respond et imprimée sur stdout. **< 5 s.** Aucune clé API, aucun réseau. |
| **Un navigateur** (zéro installation) | [Open in Codespaces](https://codespaces.new/beenuar/AiSOC?quickstart=1) | IDE navigateur → `pnpm aisoc:demo --no-open` → cliquez sur le port transféré `3000`. ~5 min à froid. |
| **Docker + pnpm** | `git clone https://github.com/beenuar/AiSOC && cd AiSOC && pnpm aisoc:demo` | Stack locale sur Postgres + Redis + Kafka + api + agents + web. Le navigateur s'ouvre sur `INC-RT-001`. |
| **Rien** (Linux/macOS/Windows propre) | `curl -fsSL https://raw.githubusercontent.com/beenuar/AiSOC/main/install.sh \| bash` | Installe Docker, Node, pnpm et git pour vous, puis exécute `pnpm aisoc:demo`. |
La première ligne est nouvelle : [`aisoc-sandbox`](https://github.com/beenuar/aisoc/blob/HEAD/packages/aisoc-sandbox/) est un simulateur en mémoire, sans dépendance, de l'entonnoir de l'agent. Choisissez un [scénario inclus](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`) ou fournissez votre propre JSON via `--file`. Les trois autres lignes démarrent la véritable stack et vous amènent sur `/cases/INC-RT-001?tab=ledger` — un cas de ransomware LockBit 3.0 en cours d'investigation, avec les invites, les appels d'outils et le raisonnement de l'agent IA diffusés en continu dans l'[Investigation Ledger](https://github.com/beenuar/aisoc/blob/HEAD/apps/docs/docs/console/investigation-rail.md). Arrêtez la stack réelle avec `pnpm aisoc:demo:down`.
> **La démo démarre-t-elle toujours sur `main` ?** Chaque push exécute [`compose-smoke`](https://github.com/beenuar/AiSOC/actions/workflows/compose-smoke.yml) (le même chemin `pnpm aisoc:demo` que vous exécuteriez localement) et [`e2e`](https://github.com/beenuar/AiSOC/actions/workflows/e2e.yml) contre la console préremplie ; la tâche nocturne [`compose-smoke-nightly`](https://github.com/beenuar/AiSOC/actions/workflows/compose-smoke-nightly.yml) répète le tout avec des caches froids. Un badge rouge ci-dessous bloque toute mise en production.
>
> [&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)
Le guide complet de déploiement multi-plateformes se trouve dans [`apps/docs/docs/installation.md`](https://github.com/beenuar/aisoc/blob/HEAD/apps/docs/docs/installation.md) (Render, Fly.io, Docker Compose, Kubernetes, Terraform). Une installation de niveau production avec couche de stockage complète : [`infra/helm/`](https://github.com/beenuar/aisoc/blob/HEAD/infra/helm/) ou [`infra/terraform/`](https://github.com/beenuar/aisoc/blob/HEAD/infra/terraform/).
---
## Ce qu'est AiSOC
AiSOC est une stack unique auto-hébergeable qui ingère les événements de sécurité, les corrèle, mène une investigation pilotée par IA et affiche le résultat dans une console SOC. L'agent et le substrat sont sous licence MIT, vous pouvez donc les lire, les forker ou les remplacer.
Trois propriétés le distinguent des fournisseurs de SOC IA propriétaires :
1. **Les décisions de l'agent sont journalisées.** L'Investigation Ledger stocke l'invite LLM, la réponse, les preuves citées et les appels d'outils en aval pour chaque étape de chaque exécution. Un rejeu est possible ultérieurement.
2. **Le substrat dispose d'un harnais d'évaluation public dans l'IC.** Cinq suites contrôlent chaque PR visant `main` / `develop` — la réduction d'alertes est une mesure réelle sur un flux fixe de 1 000 alertes ; trois suites fondées sur des rubriques sont des contrôles d'auto-cohérence du substrat sur un jeu de données déterministe de 200 incidents (55 modèles) avec des macros par modèle ; une cinquième validation contrôle le corpus de télémétrie sous-jacent. La [page de benchmark](https://github.com/beenuar/aisoc/blob/HEAD/apps/docs/docs/benchmark.md) documente exactement ce que chaque suite mesure et ce qu'elle ne mesure pas.
3. **Vous contrôlez ce qui sort de votre périmètre.** Aucun rappel vers un cloud fournisseur et aucune télémétrie d'« amélioration du modèle ». Avec un LLM hébergé, les preuves sont pseudonymisées par défaut (IP internes, noms d'hôtes, e-mails, chemins, secrets, noms d'utilisateur deviennent des jetons opaques) ; exécutez un modèle local (Ollama/vLLM) pour un chemin entièrement isolé du réseau. Ce qui sort exactement dans chaque mode : [`docs/trust/data-flows.md`](https://github.com/beenuar/aisoc/blob/HEAD/docs/trust/data-flows.md).
L'orchestrateur est un LangGraph d'environ 600 lignes dans [`services/agents/`](https://github.com/beenuar/aisoc/blob/HEAD/services/agents/). Il est assez petit pour être lu de bout en bout, pour échanger les modèles et pour être patché.
---
## Comment AiSOC se compare
| Capacité | AiSOC | Wazuh | Splunk ES | SOC IA propriétaire |
|---|---|---|---|---|
| Licence open-source | MIT | GPL-2 | propriétaire | propriétaire |
| Auto-hébergeable | oui | oui | entreprise uniquement | cloud uniquement |
| Investigation IA autonome | LangGraph | non | partielle (Splunk AI) | oui |
| Piste d'audit des décisions de l'agent | Investigation Ledger public | n/a | n/a | non publiée |
| Harnais d'évaluation public du substrat | contrôlé par CI, reproductible, avec corpus de télémétrie synthétique + macros par modèle | n/a | n/a | non publié |
| Contenu de détection | 947 exécutables (869 natifs) déclenchés sur le flux en direct + bibliothèque importée de 6 000 règles avec provenance tracée ([table de vérité](https://github.com/beenuar/aisoc/blob/HEAD/docs/detections/truth-table.md)) | 1 200+ règles | 1 000+ applications | sélectionné |
| SDK de plugins | Python / TypeScript / Go | règles YAML uniquement | applications | propriétaire |
| Résidence des données | votre infrastructure | votre infrastructure | partielle | cloud du fournisseur |
| Tarification | $0 (auto-hébergé) | $0 (auto-hébergé) | par Go ingéré | entreprise |
Les fournisseurs de SOC IA propriétaires livrent des produits fonctionnels. La contribution d'AiSOC est de rendre l'agent lui-même ouvert, la trace de décision étape par étape lisible, et le substrat contrôlé par un harnais d'évaluation public sur chaque PR visant `main` / `develop`.
---
## Ce que vous verrez dans la 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="File d'alertes avec compte à rebours 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 avec récit de corrélation déterministe" width="100%" /></a> |
|:---:|:---:|
| **File d'alertes** — comptes à rebours SLA ancrés côté serveur, prise en charge atomique, triage en un clic. [Docs](https://github.com/beenuar/aisoc/blob/HEAD/apps/docs/docs/console/queue.md) | **Investigation Rail** — récit, pastilles d'entités par chemin de pivot, chronologie de 6 événements, actions recommandées. [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 en langage naturel" 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 de plugins et de détections" width="100%" /></a> |
| **Workbench `/hunt`** — saisissez une hypothèse en anglais, obtenez ES|QL / SPL / KQL, enregistrez et planifiez. [Docs](https://github.com/beenuar/aisoc/blob/HEAD/apps/docs/docs/console/rule-tuning.md) | **Marketplace** — plugins, playbooks, détections avec installation en un clic par locataire. [Docs](https://github.com/beenuar/aisoc/blob/HEAD/apps/docs/docs/plugins/overview.md) |
<sub><em>Les quatre vignettes ci-dessus sont des espaces réservés SVG. De vraies captures d'écran PNG arriveront avec le prochain regroupement visuel de la phase 2 ; la [vidéo de démonstration](https://github.com/beenuar/aisoc/blob/HEAD/apps/web/public/demo/) en haut de ce README est la référence canonique d'ici là.</em></sub>
</div>
---```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'architecture complète (chaque service, chaque rôle de stockage, le poste de travail console v1.5 et le contrat Investigation Ledger) se trouve dans apps/docs/docs/architecture.md. La documentation approfondie de conception système — y compris la fusion ML, le schéma Neo4j à l'ingestion et le pipeline threat-intel — se trouve dans docs/architecture/SYSTEM_DESIGN.md. La disposition complète du monorepo se trouve dans apps/docs/docs/architecture/overview.md.
Quelques capacités phares — le reste est répertorié dans apps/docs/docs/features/ et indexé en haut de apps/docs/docs/intro.md :
Maturité (v7.7.0 — version entièrement opérationnelle). La colonne vertébrale de bout en bout est câblée et validée par CI : ingestion → lake ClickHouse → détection en direct → alerte fusionnée → auto-tri → réponse gouvernée. Les connecteurs, Investigation Rail + Ledger, Hunt-as-Code, la détection en flux continu et l'auto-tri copilote sont en GA. La réponse autonome est par défaut en mode copilote/essai à blanc (une politique d'autonomie régit chaque exécution réelle). Le benchmark LLM de l'agent en direct est en aperçu (le tableau de bord du niveau déterministe est validé par CI à chaque PR) ; les suites d'évaluation du substrat sont en GA. Chaque affirmation produit est étayée par un test qui échoue — matrice claim-to-gate : 46 GATED / 9 PARTIAL / 0 NO GATE. Statut complet par revendication :
docs/audit/REALITY_REPORT.md. La v7.7.0 ajoute trois modes de création de détections (framework Python + générateur IA + no-code), le cloisonnement des identités d'invocation à privilèges minimaux pour les actions de réponse, le cycle de vie des données en libre-service (rétention + un DSL de transformation résistant aux ReDoS + analyseurs personnalisés), un scanner CSPM sans agent avec preuve de conformité automatique et destinations Opsgenie/e-mail/SOAR, ainsi qu'un générateur de rapports personnalisable — le tout testé, le tout livré surmain.
Test connection en direct et secrets chiffrés dans le coffre — ajoutant récemment Qualys, GreyNoise, JumpCloud, Darktrace et Imperva aux côtés d'IBM QRadar, Netskope, NDR Zeek/Suricata et bien d'autres. Une seule requête exécute une recherche fédérée indépendante du SIEM sur Splunk SPL / Sentinel KQL / Elastic ES|QL / QRadar AQL. Procédure pas à pas : apps/docs/docs/connectors/index.md.docker compose up à froid ingère les données des connecteurs → les dépose dans le lake d'événements ClickHouse → le corpus de détections exécutable (947 règles) se déclenche sur le flux en direct → une alerte fusionnée est créée, le tout vérifié par une passerelle d'intégration étendue. L'enrichissement threat-intel au moment de la fusion + CISA-KEV alimente désormais le score de confiance et le boost « exploit-in-the-wild », et les détections avec état/fenêtrées (force brute, password-spray, port-scan) s'exécutent parallèlement au corpus. apps/docs/docs/architecture.md.AiSOC est fourni avec un serveur MCP (services/mcp/) afin que les analystes puissent interroger les alertes, lancer des investigations d'agent et rejouer chaque étape franchie par l'agent sans quitter l'IDE ou le chat. Le serveur expose 13 outils — découverte, analyse approfondie, requête gouvernée sur le lake, et l'ensemble action/relecture qui parcourt le registre de décisions de l'agent étape par étape.
Statut — build source monorepo aujourd'hui ; publication npm prévue en v8.0. La configuration complète se trouve dans
apps/docs/docs/integrations/mcp.md, qui présente les invocations d'aujourd'hui et de la v8.0 côte à côte.
Trois surfaces de contribution ; chacune est un fichier plus des fixtures facultatives, et la CI valide chaque PR.
detections/ avec une fixture positive / négative dans detections/fixtures/. Le workflow validate-detections le teste à chaque PR. Spécification : docs/connectors/.BaseConnector dans services/connectors/app/connectors/, enregistrez-le dans _CONNECTOR_CLASSES et ajoutez un manifeste plugins/<id>/plugin.yaml. La place de marché le détecte automatiquement. Procédure pas à pas : apps/docs/docs/connectors/.playbooks/ ; valide la PR. Schéma : .SDK de plugins et de détection (Python · TypeScript · Go) — voir apps/docs/docs/plugins/overview.md. La CLI (aisoc-cli) se trouve dans packages/aisoc-cli/ ; la publication PyPI est prévue pour la v8.0.
Dans votre CI : ajoutez - uses: beenuar/aisoc-action@v1 pour trier les alertes Dependabot / CodeQL / secret-scanning de votre dépôt à chaque PR (déterministe, rien ne quitte votre runner ; dogfoodé sur ce dépôt, la publication sur Marketplace arrive avec la v8.0). Docs.
RELEASES.md (reflète ce qui se trouvait auparavant dans ce README)CHANGELOG.md[~] éléments) : docs/roadmap/v8-progress.mdROADMAP.mdLes PR de toutes tailles sont les bienvenues. Lisez CONTRIBUTING.md pour le flux de travail et le Code de conduite avant d'ouvrir une PR.
Premiers contributeurs : choisissez une good first issue. Besoin d'aide ? Ouvrez une discussion Q&A.
AiSOC est construit et amélioré par une communauté grandissante de contributeurs, chercheurs en sécurité et opérateurs. L'attribution complète — y compris les rapporteurs de bugs et les chercheurs en sécurité — se trouve dans .github/CREDITS.md. Le graphe de contributions de code toujours à jour se trouve sur la page des contributeurs GitHub.
Pour les problèmes de sécurité, veuillez ne pas ouvrir de problème public. Utilisez le signalement de vulnérabilité privé de GitHub. Politique complète dans SECURITY.md. AiSOC suit la divulgation coordonnée.
MIT — © 2024–présent contributeurs AiSOC.
apps/docs/docs/concepts/automation-maturity.md/explore.apps/docs/docs/console/investigation-rail.md.apps/docs/docs/concepts/detections.md — et les 869 règles natives se trouvent dans detections/.services/agents/app/routing/./hunt en langage naturel. hunts/ + apps/docs/docs/console/rule-tuning.md. Plus des outils navigateur gratuits sans connexion : un traducteur de règles Sigma/SPL/KQL/ES|QL, un évaluateur de couverture ATT&CK, NL→Sigma et un calculateur de bruit.apps/docs/docs/benchmark-scoreboard.mdx.