A local, file-based detection workflow lab for reviewer-verifiable telemetry and detection demos.
Current focus: v1 reviewer contract stabilization for the five-demo matrix.
Latest tagged release: v0.6.0 — fourth demo and config-change investigation.
docs/reviewer-brief.md: scope, value, evidence, and boundariesdocs/reviewer-path.md: choose the right demo by review questiondocs/reviewer-pack.md: demo matrix, artifact contract, and v1 readiness gatedocs/README.md: current route, supporting docs, and historical release evidence
- telemetry-window-demo
- ai-assisted-detection-demo
- rule-evaluation-and-dedup-demo
- config-change-investigation-demo
- cloud-iam-change-investigation-demo
| Demo | Input | Deterministic core | LLM role | Main artifacts | Guardrails / non-goals |
|---|---|---|---|---|---|
| telemetry-window-demo | JSONL / CSV events | Windows Features Alert thresholds |
None | features.csvalerts.csvsummary.json3 PNG plots |
Local demo only No realtime No case management |
| ai-assisted-detection-demo | JSONL auth / web / process | Normalize Rules Grouping ATT&CK mapping |
JSON-only case drafting | rule_hits.jsoncase_bundles.jsoncase_summaries.jsoncase_report.mdaudit_traces.jsonl |
Human verification required No autonomous response No final verdict |
| rule-evaluation-and-dedup-demo | JSON raw rule hits | Scope resolution Cooldown grouping Suppression reasoning |
None | rule_hits_before_dedup.jsonrule_hits_after_dedup.jsondedup_explanations.jsondedup_report.md |
No realtime No dashboard No AI stage |
| config-change-investigation-demo | JSONL config changes Policy denials Follow-on events |
Normalize Risky-change rules Bounded correlation |
None | change_events_normalized.jsoninvestigation_hits.jsoninvestigation_summary.jsoninvestigation_report.md |
No realtime No dashboard No AI stage |
| cloud-iam-change-investigation-demo | Synthetic CloudTrail-like JSONL | Validate IAM rules Bounded correlation ATT&CK mapping |
None | normalized_cloudtrail_events.jsoninvestigation_signals.jsoninvestigation_summary.jsoninvestigation_report.md |
Synthetic only No live AWS No final verdict |
telemetry-lab is a small portfolio repository for constrained detection workflows. It is not a SIEM, dashboard, or monitoring platform; it is organized as five local, file-based demos that are reproducible from committed sample data and intentionally scoped for public review rather than production use.
telemetry-window-demo turns timestamped event streams into sliding-window feature tables, cooldown-reduced rule-based alerts, PNG timeline plots, and machine-readable run summaries.
ai-assisted-detection-demo uses deterministic normalization, detection, case grouping, and ATT&CK mapping, then limits the LLM to JSON-only case summarization. Human verification is required, there is no autonomous response, and the demo does not produce a final incident verdict.
rule-evaluation-and-dedup-demo starts from raw rule hits and makes cooldown behavior legible. It shows which hits were kept, which were suppressed, how scope was resolved, and why repeated hits collapsed into fewer retained alerts.
config-change-investigation-demo follows risky configuration changes into bounded follow-on evidence such as policy denials and service signals. It stays deterministic, file-based, and review-oriented, with no added AI stage.
cloud-iam-change-investigation-demo uses synthetic CloudTrail-like events to review IAM changes, failed console logins, CloudTrail logging changes, and security group ingress changes with bounded deterministic rules. It has no live AWS account, no real account ID, no production detection claim, and no final incident verdict.
python -m pip install -e .
python -m telemetry_window_demo.cli run --config configs/default.yamlUse the same Python interpreter for install, tests, and demo commands. On machines with multiple Python installs, replace python with the intended interpreter path.
To run the test suite in a fresh environment, install the dev extra with python -m pip install -e ".[dev]".
Other demo entrypoints:
python -m telemetry_window_demo.cli run-ai-demopython -m telemetry_window_demo.cli run-rule-dedup-demopython -m telemetry_window_demo.cli run-config-change-demopython -m telemetry_window_demo.cli run-cloud-iam-change-demo
Useful inspection commands:
python -m telemetry_window_demo.cli summarize --input data/raw/sample_events.jsonl
For CSV inputs, pass a .csv file to --input; use --timestamp-col when the timestamp column is not named timestamp.
The run --config configs/default.yaml command reads data/raw/sample_events.jsonl and regenerates:
data/processed/features.csvdata/processed/alerts.csvdata/processed/summary.jsondata/processed/event_count_timeline.pngdata/processed/error_rate_timeline.pngdata/processed/alerts_timeline.png
With the bundled default sample, the current repo state produces:
41normalized events24windows12alerts after a60second cooldown
Why it is worth a quick look:
- it shows a full telemetry path from raw events to operator-facing outputs
- the sample inputs and outputs are reproducible in-repo
- a second bundled scenario gives a slightly richer walkthrough without changing the basic CLI flow
For a quick coherence pass across the demos:
- Run
python -m telemetry_window_demo.cli run --config configs/default.yamland confirmdata/processed/summary.jsonreports41events,24windows, and12alerts. - Run
python -m telemetry_window_demo.cli run-rule-dedup-demoand confirmdemos/rule-evaluation-and-dedup-demo/artifacts/dedup_report.mdshows10raw hits reduced to6retained alerts with4suppressions. - Run
python -m telemetry_window_demo.cli run-config-change-demoand confirmdemos/config-change-investigation-demo/artifacts/investigation_report.mdshows4normalized changes,3risky changes, and3investigations. - Run
python -m telemetry_window_demo.cli run-cloud-iam-change-demoand confirmdemos/cloud-iam-change-investigation-demo/artifacts/investigation_report.mdshows14CloudTrail-like events and5investigation signals. - Run
python -m telemetry_window_demo.cli run-ai-demoand confirmdemos/ai-assisted-detection-demo/artifacts/case_report.mdshows3deterministic cases with human verification and no final incident verdict.
Default sample:
- config:
configs/default.yaml - input:
data/raw/sample_events.jsonl - outputs:
data/processed/ - current summary:
41events,24windows,12alerts,summary.jsonincluded
Richer sample:
- config:
configs/richer_sample.yaml - input:
data/raw/richer_sample_events.jsonl - outputs:
data/processed/richer_sample/ - current summary:
28events,24windows,8alerts,summary.jsonincluded
Runtime input support:
.jsonl.csv
Required fields for both formats on every row or record:
timestampby default, or the column named bytime.timestamp_colin a run configevent_typesourcetargetstatus
Input and output validation:
- run configs reject unknown top-level, time, feature, and rule fields to catch typos
- config paths, event inputs, and plot CSV inputs must point to files
- required event fields must be present and non-empty
- custom timestamp columns cannot reuse required event field names
- plot input tables validate required columns, datetime values, numeric ranges, and window bounds
Cooldown behavior:
- repeated alerts are keyed by
(rule_name, scope) - scope prefers the first available entity-like field in this order:
entity,source,target,host - when no entity-like field is present, cooldown falls back to per-
rule_namebehavior
demos/rule-evaluation-and-dedup-demo/README.mdexplains the third demo and links its committed before/after dedup artifactsdemos/config-change-investigation-demo/README.mdexplains the config-change investigation demo and its committed artifactsdemos/cloud-iam-change-investigation-demo/README.mdexplains the synthetic CloudTrail-like IAM investigation demo and its committed artifactsdocs/README.mdindexes current reviewer docs, supporting design notes, and historical release evidencedocs/reviewer-pack.mdis the top-level no-guessing reviewer pack and artifact naming contractdocs/reviewer-brief.mdgives the short problem, value, evidence, and boundary summarydocs/reviewer-path.mdmaps common review questions to the right demo and artifactsdocs/architecture.mddiagrams the local file-based detection workflowdocs/event-time-model.mddefines event, observed, window, and artifact time semanticsdocs/sample-output.mdsummarizes the committed sample artifactsdocs/roadmap.mddefines the v1 reviewer contract stabilization phasedata/processed/summary.jsoncaptures the default run in machine-readable formdata/processed/richer_sample/summary.jsoncaptures the richer scenario packtests/keeps regression coverage close to the CLI behavior and windowing logic
- demo expansion is closed
- stabilize the five-demo matrix and avoid broad platform expansion
- freeze reviewer-visible artifact names unless a rename is intentionally coordinated across docs, tests, and sample outputs
- use
docs/reviewer-pack.mdanddocs/architecture.mdas the consolidation entrypoints - use the
v1 readiness gatebefore treating the repo as consolidated - avoid additional demo expansion during v1 reviewer contract stabilization
This repository is a local, reviewer-oriented detection workflow lab, not a production monitoring system.
- No real-time ingestion
- No streaming state management
- No alert routing or case management
- No dashboard or service deployment
- Sample-data driven only
