Small portfolio prototypes for telemetry analytics, monitoring, and detection-oriented signal processing.
Latest milestone: v0.6.0 — fourth demo and config-change investigation.
- telemetry-window-demo
- ai-assisted-detection-demo
- rule-evaluation-and-dedup-demo
- config-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 |
MVP 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 |
telemetry-lab is a small portfolio repository for telemetry analytics and constrained detection-oriented workflows. It is organized as four 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.
python -m pip install -e .
python -m telemetry_window_demo.cli run --config configs/default.yamlOther 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-demo
That 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
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:
timestampevent_typesourcetargetstatus
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 artifactsdocs/sample-output.mdsummarizes the committed sample artifactsdocs/roadmap.mdsketches the next demo directionsdata/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
- strengthen JSONL and CSV validation so ingestion failures are clearer
- keep reducing repeated alert noise while preserving simple rule-based behavior
- keep sample-output docs and public repo presentation aligned with the checked-in demo state
This repository is a portfolio prototype, 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
