-
Notifications
You must be signed in to change notification settings - Fork 5
dart playbook
The agent's playbook. A YAML file that encodes "what should a senior analyst look at next, given the current state of the case?" — without writing imperative Python.
The whole point of architecture-first, not prompt-first is that operator-tunable rules don't live in the model's prompt. They live in YAML the operator can read and edit.
A Python playbook would couple the rules to the agent's release cycle. A YAML playbook is data: an analyst can fork the playbook, tune for their specific case class (web-app breach vs insider threat vs ransomware), and commit it to their own runbook repo.
case_class: insider_threat_remote_hands
initial_hypothesis: |
An authorized user with legitimate credentials has used an out-of-band
channel (IP-KVM, console, USB) to access systems outside their normal
pattern. Need: process tree, USB history, login records.
next_call_decisions:
- when_state: "no process tree yet"
call: get_process_tree
confidence_gain: 0.10
- when_state: "no USB history yet AND case_class includes physical access"
call: analyze_usb_history
confidence_gain: 0.20
- when_state: "credential dump suspected AND no detect_credential_access yet"
call: detect_credential_access
confidence_gain: 0.25
contradiction_triggers:
- source_a: auth_events
source_b: mft_timestomp
threshold_seconds: 30
rule: "If timestomp ts < auth ts, persistence pre-existed credential use"
stop_conditions:
- confidence >= 0.90
- iterations >= 25
- no_new_calls_possibleThe agent reads this at startup. Each iteration, it queries the YAML to decide the next move. The deterministic-mode policy is essentially "execute this YAML"; the live mode lets the model deviate, but every call still goes through the typed dart-mcp surface.
| File | Case class |
|---|---|
senior-analyst-v1.yaml |
Insider threat / remote-hands (the IP-KVM bundled case) |
Phase 2 will add:
-
coverage-gap-analyst-v1.yaml— for detection-engineering work (different reasoning, same surface)
- Copy
senior-analyst-v1.yamlto<your-name>-v1.yaml - Edit
case_class,initial_hypothesis,next_call_decisions - Run with
--playbook <your-name>-v1.yaml - The agent will follow your sequencing while the architecture (read-only, audit-chained, contradiction-aware) is unchanged.
A playbook cannot loosen architectural guarantees. It can only choose what to call from the surface, never expand the surface.
dart_playbook/
├── README.md
└── senior-analyst-v1.yaml
- dart-agent — how the playbook gets executed
- Architecture deep dive
-
dart_playbook/senior-analyst-v1.yaml— the actual file
Agentic-DART — autonomous DFIR agent · architecture-first, not prompt-first · MIT license · github.com/Juwon1405/agentic-dart
- The Memex bet ⭐ Why this design
- About the name
- Architecture-first vs prompt-first
- Architecture deep dive
- Threat model
- Glossary
- dart-mcp — typed surface (native + SIFT adapters)
- dart-agent — senior-analyst loop
- dart-corr — cross-artifact correlation
- dart-audit — SHA-256 chained log
- dart-playbook — senior-analyst sequencing rules (v3 default)
- MCP function catalog (native + SIFT adapters)
- Comparison with adjacent tools
- FAQ
- Operator guide — distro-agnostic
- Running on SIFT
- Live mode
- Accuracy report
-
Roadmap ⭐ Phase 1 ~95% complete
- Phase 1 — Agentic DFIR ⭐ dedicated page · SANS submission
-
Phase 2 — Detection engineering
- The self-learning loop ⭐ design note
- Phase 3 — Agentic SOC
- Phase 4 — Broader agentic security