Four optional integrations extend APTWatcher beyond core triage. Each one maps to a tier; each is opt-in; each degrades gracefully when its credentials are absent.
| Integration | Tier | Role | Ships with APTWatcher? |
|---|---|---|---|
| APT Watch | 1 | Threat intel (IOC lookup, submissions) | No — API client only |
| MS Threat Analytics | 1 | Microsoft Defender XDR + Graph intel | No — upstream MCP |
| GLPI | 2 | Ticketing + IR knowledge base | No — upstream MCP |
| cnc_disruptor | 3/4 | Defensive/offensive containment | No — wrapped scripts |
"Ships with APTWatcher?" is intentional. None of the four are vendored. APTWatcher is the orchestrator; the integrations are the orchestrated. This keeps the clean-room discipline intact and avoids license-compatibility issues.
All four integrations follow the same architectural shape:
- Adapter in
src/core/adapters/<name>.pyimplements the minimum contract (IOCVerdictfor Tier 1,TicketRecordfor Tier 2,ContainmentResultfor Tier 3/4). - Config block in
config.yamldeclares the endpoint, auth mode, and tier enablement. - Credential loading from environment variables by preference, secrets file as fallback. The config never carries credentials.
- Graceful degradation when credentials are missing: the adapter is skipped, not errored. A missing Tier 1 provider leaves Tier 0 findings intact.
- Audit entries for every call. Every outbound request is logged with its parameters (redacted), latency, and result verdict.
Tier 1 adapters are read-mostly. They query, receive, and hand back normalized verdicts. Idempotency is the provider's problem. Rate limiting is APTWatcher's problem (see Tier 1 intel lookup pattern).
Tier 2 adds write operations — filing tickets, updating GLPI records.
The integration layer enforces one ticket per incident per host to
prevent runaway ticket creation if the agent loops. Ticket updates are
idempotent on the reference_id the adapter assigns.
Tier 3/4 add state-changing operations against the compromised host (Tier 3) or adversary infrastructure (Tier 4). The architectural guardrails for these are covered in evidence integrity and cnc_disruptor integration.
| Integration | Credentials / setup |
|---|---|
| APT Watch | API key (env var APTWATCH_API_KEY), base URL |
| MS Threat Analytics | Azure AD app registration with 6 Graph scopes; client_credentials / az_cli / device_code |
| GLPI | GLPI instance URL + app token + user token; config file glpi-mcp/config.json |
| cnc_disruptor | Host-local scripts (PowerShell + Python); no credentials; runtime confirmation flag |
Links to each integration's full page spell out the exact environment variables, config entries, and expected responses.
Judges without credentials for any of these can still evaluate APTWatcher end-to-end using Tier 0 + the synthetic datasets. The integrations demonstrate architectural extensibility; they are not required for the core accuracy measurement.
- Tier model
- Shared brain — types (
IOCVerdict,TicketRecord) the adapters return