Core concepts
How Argus works
Argus investigates the way a good analyst does: it forms hypotheses, queries for evidence, reads what comes back, and decides the next move. There is no fixed query tree — the path is chosen at every step from real results.
The loop
For each investigation Argus runs a plan → act → observe → re-plan loop:
- Plan. It takes the alert, recalls prior cases and the active blocklist, and declares the leading hypotheses it will test.
- Act. It writes SPL and runs it through the Splunk MCP Server (
splunk_run_queryand friends). This is the only way Argus reads Splunk. - Observe. It reads the result rows, confirms or refutes each hypothesis, and enriches any external indicators with live threat intel.
- Re-plan. Based on what it learned, it chooses the next pivot — and loops until it is confident or hits
--max-turns.
A synthesizer then assembles the grounded report, with every timeline step linked
to the tool_use query that evidences it.
The hypothesis ledger
Argus maintains an explicit ledger of hypotheses and marks each confirmed or refuted as evidence arrives. This keeps the investigation honest: a verdict is the result of resolved hypotheses, not a vibe. Benign outcomes are first-class — if the evidence says benign, that is a successful investigation, not a failure to find something.
Deterministic enrichment
The trustworthy parts of the report are computed by code, not the model, so they can't be hallucinated:
- MITRE ATT&CK technique ids are validated against a pinned ATT&CK catalog and rendered as an ordered kill-chain.
- The risk score (0–100) is a deterministic composite of verdict, confidence, severity, kill-chain breadth, threat-intel signal, and case-memory history.
Multi-agent mode
With --multi, four specialist sub-agents — auth, network, endpoint, and intel —
investigate their domains concurrently. A synthesizer correlates their findings into a
single narrative. Use it for broad or noisy incidents where parallel coverage helps.
uv run argus investigate "Triage the spike in failed logins and outbound traffic" --multi
Then it closes the loop
Investigation is only half the job. With --respond, Argus contains the threat and,
on a confirmed true positive, installs a detection so Splunk catches the recurrence.
See Grounding & evidence for why every step stays auditable, and the
CLI reference for the response flags.