
Lokale KI-gestützte Threat-Intelligence-Pipeline, die Web-, RSS- und Dokumentquellen einliest, zitatverifizierte Aussagen extrahiert und Angreiferprofile MITRE ATT&CK zuordnet, mit STIX- und Sigma-Exporten.
KI-gestützte Adversary Intelligence für Purple Teams.
Argus untersucht eine Bedrohung im Web, in deinen RSS-Feeds und in den von dir bereitgestellten Dokumenten, extrahiert mit einem LLM durch Zitate belegte Aussagen, konsolidiert sie zu mit Konfidenz bewerteten Einschätzungen, die auf MITRE ATT&CK abgebildet werden, und lässt einen Menschen jeden Schritt überprüfen. Es läuft vollständig auf deiner eigenen Maschine.
Die Pipeline läuft einmal pro Dokument und schreibt atomare Aussagen samt des wörtlichen Zitats hinter jeder einzelnen sowie eine Audit-Zeile pro Stufe. Der Validator prüft jedes Zitat gegen den Text, löst Entitäten gegen den lokalen Speicher und den ATT&CK-Katalog auf und konsolidiert Aussagen aus verschiedenen Quellen zu den Einschätzungen, die die UI darstellt. Nur Triage, Analyst und der Zusammenfassungs-Schreiber berühren jemals ein Modell; der Validator ist reiner Code.
Argus liefert seine Web-UI vorgebaut aus, sodass die Installation nur Python 3.12+ benötigt (kein Node, kein Build- Schritt). Es läuft unter Windows und Linux und ist noch nicht auf PyPI verfügbar, daher installierst du es aus dem Repository oder einem Release-Wheel.
# from a clone of the repository
git clone https://github.com/Cyllex-Framework/Cyllex-Argus.git
cd Cyllex-Argus
python3 -m venv .venv
. .venv/bin/activate # Windows PowerShell: .venv\Scripts\Activate.ps1
pip install .
# ...or straight from GitHub, without cloning
pip install "git+https://github.com/Cyllex-Framework/Cyllex-Argus.git"
So oder so wird der Befehl argus in deinen PATH eingefügt. Entwickler, die an Argus selbst arbeiten, können stattdessen
uv verwenden (uv sync); siehe die
Seite Development.
argus init # creates ~/.cyllex-argus/
argus attack update # downloads the MITRE ATT&CK Enterprise bundle
export ANTHROPIC_API_KEY='sk-ant-...' # or the Claude Code CLI / Ollama; see Choosing a model below
argus investigate "Scattered Spider" --max-docs 10
argus serve # web UI at the printed URL
Beim ersten Start lädt argus serve den ATT&CK-Katalog selbst herunter (etwa eine Minute), falls Sie
argus attack update übersprungen haben; die erste Untersuchung wartet, bis dieser Vorgang abgeschlossen ist, sodass Sie nie eine starten, bevor
ATT&CK geladen ist.
Die UI öffnet sich unter http://127.0.0.1:8765 und meldet sich standardmäßig mit admin / Argus123 an.
Ändern Sie dies, bevor Sie Argus in einem Netzwerk bereitstellen (argus set-admin-password '...' oder die
Umgebungsvariable ARGUS_ADMIN_PASSWORD, die nie auf die Festplatte geschrieben wird). Übergeben Sie argus serve --host 0.0.0.0, um Clients aus Ihrem LAN zu akzeptieren.
Die Content-Pipeline von Argus (Triage, Analyst, Validator, Zusammenfassungen) läuft auf einem von vier Anbietern.
Wählen Sie in Settings → LLM provider oder bearbeiten Sie [llm] in ~/.cyllex-argus/argus.toml:
| Anbieter | Voraussetzung | Modell (Standard) | Websuche |
|---|---|---|---|
claude-code-cli | Claude Pro/Max + angemeldete claude CLI | abonnementgesteuert | Ja (integriert) |
anthropic-api | ANTHROPIC_API_KEY (eigener Schlüssel) | claude-sonnet-5-5 | Nein, mit claude-code-cli als Suchanbieter kombinieren |
openai-api | OPENAI_API_KEY | gpt-4o | Nein |
ollama | Laufendes Ollama + heruntergeladenes Modell | qwen2.5:32b-instruct | Nein |
Was getestet wurde. Entwicklung und alltägliche Tests liefen überwiegend auf Claude (
claude-code-cliundanthropic-api) und lokalem Ollama. Die Prompts sind auf Claude abgestimmt; der OpenAI-Pfad funktioniert und seine Ausgabe ist schema-erzwungen, hat aber weniger Praxis und extrahiert möglicherweise weniger Aussagen, bis die Prompts neu abgestimmt sind.
# Preferred: env wins over anything stored in argus.toml, and never touches disk
export ANTHROPIC_API_KEY='sk-ant-...'
# or:
export OPENAI_API_KEY='sk-...'
argus serve
Alternativ kannst du den Schlüssel unter Einstellungen → LLM-Anbieter → API-Schlüssel einfügen. Die UI speichert ihn unter
[llm.anthropic] api_key / [llm.openai] api_key und zeigt ihn beim Neuladen maskiert (••••••••) an, sodass er
nie im Klartext neu gerendert wird. Die Umgebungsvariable hat immer Vorrang, sodass eine Rotation per export ohne
Bearbeitung der Datei funktioniert.
Auf der Anbieterseite kannst du das Standard-model überschreiben (z. B. gpt-4o-mini für günstigeres Triage,
claude-opus-5-5 für tiefgehende Analyst-Läufe) sowie die base_url (nützlich für OpenAI-kompatible Proxys
wie OpenRouter, LocalAI, LiteLLM; der OpenAI-Adapter spricht den Chat-Completions-/Structured-
Outputs-Vertrag und funktioniert mit jedem Server, der ihn implementiert). Ein hier gesetztes model überschreibt den
Standard jedes Anbieters für jeden Agenten, daher zeigt die Seite ein Banner mit einem Ein-Klick-Zurücksetzen, wenn
eines aktiv ist.
Jeder API-Schlüssel-Anbieter hat eine Schaltfläche Verbindung testen, die GET /v1/models mit den
konfigurierten Anmeldedaten aufruft und meldet, was der Server auflistet: Sie validiert den Schlüssel, die Basis-URL und (falls
eine Modell-ID eingegeben wurde), ob dieses Modell im Konto erscheint.