Agentic SOC for Wazuh built on Strands Agents: a 13-agent swarm with 37 Wazuh-verified skills triages, investigates and plans response through the Wazuh MCP Server.
概要
An agentic SOC for Wazuh, built on Strands Agents. A 13-agent swarm triages, investigates and responds through the Wazuh MCP Server, and humans stay in control. Quick Start · Architecture · Deploy · Agents & Skills · API · Changelog Wazuh Autopilot is a self-hosted platform that works your Wazuh alerts with a swarm of Strands agents. They reach Wazuh only through the Wazuh MCP Server (v4.3.0, 55 tools). Alerts become incidents. Agents triage, correlate, investigate, enrich and plan the response, and every containment step goes through an autonomy policy you control, from "observe only" to "fully autonomous for low-risk actions". Everything runs in one container plus Postgres and ships with a web console.
README
Wazuh Autopilot is a self-hosted platform that works your Wazuh alerts with a swarm of Strands agents. They reach Wazuh only through the Wazuh MCP Server (v4.3.0, 55 tools). Alerts become incidents. Agents triage, correlate, investigate, enrich and plan the response, and every containment step goes through an autonomy policy you control, from “observe only” to “fully autonomous for low-risk actions”. Everything runs in one container plus Postgres and ships with a web console.
⚡ Minutes, not hours · 🤖 13 agents / 37 skills · 🧭 NIST · MITRE · CIS · ISO · PCI · ✅ Policy-gated response · 🔭 Full tracing · 🔒 Air-gap ready
Quick start
git clone https://github.com/gensecaihq/Wazuh-Autopilot.git && cd Wazuh-Autopilot
docker compose -f docker-compose.yml -f docker-compose.demo.yml up -d --build
open http://localhost:8480 # [email protected] / Autopilot!2026
The demo runs against a simulated Wazuh fleet (mock-wazuh/: same tools and schemas as the real MCP server, live alerts, two planted compromises) and a scripted demo model, so it needs neither Wazuh nor an LLM key. Tool calls, policy decisions, approvals, execution and verification are all real. To see real reasoning, pick a model in Settings → Models.
For production, cp .env.example .env, point it at your Wazuh MCP Server and model provider, and run docker compose up -d. The first visit opens the setup wizard. See docs/QUICKSTART.md and docs/DEPLOYMENT.md.
Before enabling active response: the MCP key needs wazuh:write scope, and isolate_host, kill_process and quarantine_file rely on active-response scripts that don’t ship with Wazuh, so deploy them on your agents first (details).
Upgrading from 1.x: 3.0 replaces the Node Runtime Service and the OpenClaw, Hermes and NemoClaw profiles with the Strands platform, and there’s no in-place migration. Deploy 3.0 next to your existing install, point it at the same Wazuh MCP Server, and retire the old one once you’re happy. Details in the changelog.
What you get
| Agent swarm | SOC Commander, Tier 1–3 analysts, CTI analyst, threat hunter, vulnerability manager, IR lead, SecOps engineer, detection engineer, GRC analyst, Wazuh platform engineer and SOC manager. Workflows run as a Strands Swarm (agents hand off to each other) or a Graph (fixed pipeline). |
| Skills | 37 Agent Skills (SKILL.md): 9 Wazuh-specific skills (MCP querying, rules and decoders, FIM, SCA, malware, Windows/Sysmon, cloud and containers, active response, platform health), 7 incident-response playbooks (brute force, lateral movement, privilege escalation, ransomware, suspicious PowerShell, data exfiltration, vulnerability spike). Agents load them on demand. Every Wazuh rule ID the skills cite is checked against the official Wazuh 4.14 ruleset in CI. |
| Standards | NIST CSF 2.0, SP 800-61r3, SP 800-53r5, MITRE ATT&CK and D3FEND, CIS v8.1, ISO/IEC 27001:2022, PCI DSS v4.0.1, SANS PICERL, CISA KEV / FIRST EPSS / SSVC, Sigma, OWASP LLM Top 10. |
| Autonomy policy | Four levels: observe, recommend, supervised, autonomous. Plus per-action rules (confidence floor, hourly budget), per-agent caps, protected targets, a two-person rule and a business-hours limit. Critical actions always need a human. |
| Safe by construction | Agents never receive state-changing Wazuh tools: the MCP tool filter and a pre-tool hook both block them. The platform runs approved actions, verifies them with wazuh_check_*, and can roll them back. |
| Console | Command center, alerts, incidents, approvals, agent roster, swarm topology, skills, workflows, agent playground/debugger, evals, run traces, metrics, agent health, policy, standards coverage, audit log, settings, users/roles/API tokens, setup wizard. |
| Models | Amazon Bedrock (with Guardrails), Anthropic, OpenAI-compatible, NVIDIA NIM (Nemotron), vLLM, LiteLLM, Ollama. Swarm-wide default with per-agent overrides. |
| Operations | RBAC (5 roles), audit log, Postgres, OpenTelemetry export, Prometheus /metrics, strands-agents-evals suites, restart recovery, trace retention. |
How it works
Wazuh ──► Wazuh MCP Server ◄──────────────── agents (read + verify tools only)
▲ │ alerts (poll or webhook)
│ ▼
│ Autopilot ── incidents ──► Strands swarm: triage → correlation → investigation → CTI → IR lead
│ │ │ propose_action
│ ▼ ▼
└── executor ◄── approved ◄── autonomy policy ── approvals queue (humans)
└── verify (wazuh_check_*) · audit · rollback
Details in docs/ARCHITECTURE.md.
Repository layout
backend/ FastAPI + Strands swarm, policy engine, executor (Python 3.12)
app/skills/ 37 SKILL.md skills
tests/ pytest suite
ui/ React + TypeScript console
mock-wazuh/ simulated Wazuh MCP server for demos and tests
litellm/ LiteLLM proxy config (compose profile)
docs/ documentation
Documentation
| QUICKSTART.md | Demo and first production install |
| DEPLOYMENT.md | Production deployment, ingestion, operations |
| ARCHITECTURE.md | Components, data flow, security boundaries |
| AGENTS_AND_SKILLS.md | Roster, skills, workflows, standards |
| AUTONOMY_AND_APPROVALS.md | Autonomy levels, action rules, approvals, execution and verification |
| MODEL_PROVIDERS.md | Bedrock, Anthropic, OpenAI-compatible, NVIDIA NIM, vLLM, LiteLLM, Ollama, air-gapped |
| MCP_INTEGRATION.md | Connecting the Wazuh MCP Server |
| TAILSCALE_MANDATORY.md | Network isolation |
| API.md | REST API (OpenAPI at /api/docs) |
| TROUBLESHOOTING.md | Common problems |
Development
cd backend && python3.12 -m venv .venv && . .venv/bin/activate
pip install -r requirements-dev.txt && pytest -q
cd ../ui && npm ci && npm run build
See CONTRIBUTING.md. The PyPI package is strands-agents: pip install strands installs an unrelated library, and strands-evals isn’t the official evals package (strands-agents-evals is).
Acknowledgments
Thanks to @idrone3d for thorough field testing on self-hosted hardware and the findings in issue #33: idle inference cost from timer-driven agents, new alerts being grouped into closed cases, and proposals surviving expiry across restarts. The platform has no heartbeat polling: agents run on incidents, and the scheduled workflows (hunts, sweeps, briefings, platform-health checks; about a dozen runs a day by default) can be disabled or rescheduled in Workflows. It groups alerts only into open incidents and stores proposal expiry in the database.
Related projects
| Project | Description |
|---|---|
| Wazuh MCP Server | MCP bridge for the Wazuh API (55 tools, RBAC, audit logging) |
| Strands Agents | Open-source agent SDK the swarm is built on |
License
MIT, see LICENSE.
推奨ツール
別のキーワードを試すか、フィルタを外してください。
インストール
npx skillfish add gensecaihq/wazuh-autopilot