hotwash
ActiveA Wazuh alert fires at 3am and your IR playbook is a Markdown doc nobody executes, so steps get skipped and the ticket is a guess. Hotwash makes the same playbook a live, audited run that an analyst and an AI agent can both drive step by step.
See it workrepresentative session
Representative session. Illustrative values, RFC 5737 addresses. Runs stay on your self-hosted backend; destructive tools require confirm: true.
What it does
Hotwash is a self-hosted incident-response runbook tool that parses structured Markdown or Mermaid playbooks into an interactive React Flow graph and runs them on a real FastAPI execution engine, so a SOC analyst builds a runbook once and then executes it against a live incident with per-step status, timestamps, assignees, decisions, and attached evidence. It matters because a playbook in a wiki is read-only prose that someone re-types into a ticket, while every Hotwash run is queryable state and an audit trail. What sets it apart is that the same run is drivable by an LLM: the bundled hotwash-mcp Model Context Protocol server exposes the engine as tools, and a Wazuh ingest path turns alerts into an auto-started run or a human-review suggestion, so the design is human-and-agent-in-the-loop rather than a static diagram or a black-box SOAR.
Capabilities10 MCP tools plus the run engine
Playbooks
2 toolsList the library with category/tag/search filters and fetch one playbook's full node-edge graph.
Runs
3 toolsStart a run against an incident, query live step state and timeline, and advance a single step (status, assignee, note, decision).
Suggestion queue
3 toolsList, accept, or dismiss Wazuh ingest suggestions from mode=suggest mappings; accept and dismiss are confirm-gated.
Artifacts & lifecycle
2 toolsAttach a text or base64 artifact to a step, and cancel a run into the audit log (confirm-gated).
Authoring & canvas
Parse Markdown/Mermaid into Phase, Step, Decision, Execute, and Merge nodes on an interactive React Flow canvas with 5 themes.
Wazuh ingest & SOAR
HMAC-authenticated alert webhook with auto/suggest/log mappings, plus a template action library (isolate_host, block_ioc, and friends; TheHive live).
Setup
npx -y hotwash-mcp # points at a running Hotwash backend; web app runs from source (npm run dev + uvicorn)
MCP server reads HOTWASH_URL (default http://localhost:8000), optional HOTWASH_API_KEY, and HOTWASH_TIMEOUT (default 30s).
{ "mcpServers": { "hotwash": { "command": "npx", "args": ["-y", "hotwash-mcp"], "env": { "HOTWASH_URL": "http://localhost:8000" } } } }