
Mémoire agentive pour la CTI en Python — graphes de connaissances STIX, résolution d'alias d'acteurs de menace, RAG hors ligne en priorité, serveur MCP pour Claude Code et agents LangChain
Le seul système de mémoire agentique conçu pour le renseignement sur les cybermenaces.
Lorsqu’un analyste senior quitte l’équipe, deux ou trois années de contexte disparaissent avec lui — environnements clients, enquêtes antérieures, TTPs des acteurs, schémas de faux positifs, chaque « attendez, on a déjà vu ça » durement acquis. ZettelForge est un système de mémoire agentique construit pour que le contexte reste dans l’équipe.
Il extrait les CVE, acteurs de menace, IOC et techniques ATT&CK à partir des notes d’analystes et des rapports de menace, résout les alias (APT28 = Fancy Bear = STRONTIUM = Sofacy), construit un graphe de connaissances STIX 2.1, et restitue chaque enquête passée à vos analystes — et à Claude Code via MCP — en langage naturel. Fonctionne entièrement en processus. Pas de clés API. Pas de cloud. Aucune donnée ne quitte l’hôte.
Star · pip install zettelforge · Docs · ThreatRecall (hébergé) · Changelog
v2.6.2 (2026-04-27) : L’éditeur web de configuration intègre des menus déroulants fonctionnels pour tous les champs d’énumération (fournisseur LLM/embedding, niveau de log, action PII, format de synthèse) et un bouton Appliquer fonctionnel. Nouvel extra
[crewai]expose ZettelForge en tant qu’outils CrewAI --pip install zettelforge[crewai]. Changelog complet
Si ZettelForge correspond à un workflow CTI que vous utilisez, une étoile est le signal le plus rapide que cette catégorie mérite d’être soutenue.
Chaque SOC perd des analystes. Quand ils partent, le contexte d’enquête, l’attribution des acteurs et les schémas de faux positifs spécifiques à l’environnement disparaissent avec eux. Leurs remplaçants rouvrent les mêmes tickets, relisent les mêmes rapports et reconstruisent les mêmes modèles mentaux depuis zéro.
Les systèmes de mémoire généralistes basés sur l’IA ne résolvent pas ce problème pour les équipes de sécurité. Ils ne peuvent pas distinguer APT28 de Fancy Bear, ne savent pas que CVE-2024-3094 est la backdoor XZ Utils, ne savent pas analyser Sigma ou YARA, et n’ont aucune notion des identifiants de technique MITRE ATT&CK. Quand un analyste CTI leur donne une année de rapports de renseignement, ils renvoient une recherche sémantique floue sur l’historique des conversations.
ZettelForge a été conçu pour les analystes qui pensent en graphes de menace. Il extrait automatiquement les CVE, acteurs de menace, IOC et techniques ATT&CK, résout les alias entre conventions de nommage, construit un graphe de connaissances avec relations causales, et récupère les mémoires via une recherche hybride consciente de l’intention — le tout en processus, sans dépendance API externe.
L’augmentation de mémoire comble 33 % de l’écart entre les petits et grands modèles sur les tâches CTI (CTI-REALM, Microsoft 2026, avec GPT-4 comme référence du grand modèle). Voir le rapport de benchmark complet pour la méthodologie et les comparaisons.
| Capacité | ZettelForge | Mem0 | Graphiti | Cognee |
|---|---|---|---|---|
| Extraction d’entités CTI (CVE, acteurs, IOC) | Oui | Non | Non | Non |
| Ontologie STIX 2.1 | Oui | Non | Non | Non |
| Résolution d’alias d’acteurs de menace | Oui (APT28 = Fancy Bear) | Non | Non | Non |
| Graphe de connaissances avec triplets causaux | Oui | Non | Oui | Oui |
| Récupération classée par intention (5 types) | Oui | Non | Non | Non |
| En processus / sans API externe requise | Oui | Non | Non | Non |
| Journaux d’audit au format OCSF | Oui | Non | Non | Non |
| Serveur MCP (Claude Code) | Oui | Non | Non | Non |
Extraction d’entités -- Identifie automatiquement les CVE, acteurs de menace, IOC (IP, domaines, hachages, URLs, e-mails), techniques MITRE ATT&CK, campagnes, ensembles d’intrusion, outils, personnes, lieux et organisations. Regex + NER LLM avec types STIX 2.1 tout au long.
Graphe de connaissances -- Les entités deviennent des nœuds, la cooccurrence devient des arêtes. Le LLM infère des triplets causaux (« APT28 utilise Cobalt Strike »). Les arêtes temporelles et les suppressions suivent l’évolution du renseignement.
Résolution d’alias -- APT28, Fancy Bear, Sofacy, STRONTIUM résolvent tous vers le même nœud d’acteur. Fonctionne automatiquement lors du stockage et du rappel.
Récupération hybride -- Similarité vectorielle (768-dim fastembed, ONNX) + parcours de graphe (BFS sur les arêtes du graphe de connaissances), pondéré par classification d’intention. Cinq types d’intention : factuel, temporel, relationnel, exploratoire, causal.
Évolution de la mémoire -- Avec evolve=True, le nouveau renseignement est comparé à la mémoire existante. Le LLM décide AJOUTER, METTRE À JOUR, SUPPRIMER ou NE RIEN FAIRE. Le renseignement obsolète est remplacé. Les contradictions sont résolues. Les doublons sont ignorés.
Synthèse RAG -- Synthétise des réponses à travers toutes les mémoires stockées avec le format direct_answer.
En processus par architecture -- fastembed (ONNX) pour les embeddings, llama-cpp-python pour l’inférence LLM locale facultative, SQLite + LanceDB pour le stockage, et Ollama sur localhost par défaut. Aucune clé API externe n’est requise. Un accès réseau sortant peut se produire lors de la première exécution lorsque les modèles d’embedding/LLM sont téléchargés ; une fois les modèles préchargés, il peut fonctionner entièrement hors ligne (y compris sur des hôtes isolés).