glantheman/Mini-SIEM

GitHub: glantheman/Mini-SIEM

Stars: 0 | Forks: 0

# Mini-SIEM Local and friendly log triage and threat hunting in the browser. Upload **NDJSON**, **JSON**, **CSV/TSV**, or line-based **.txt/.log** files; explore events with filters, lenses, timelines, and a detail panel. ## Features - **Ingest**: NDJSON (incl. Elasticsearch-style `_source`), JSON arrays, CSV/TSV with ECS-like column aliases, plain text one-event-per-line - **Investigation**: Smart column lens, field pivots, include/exclude filters, IOC paste, free-text search (default columns or all fields) - **UI**: Event stream + optional details panel, overview/timeline (multi-keyword OR filter, deduplicated counts), Investigation tab (signals, entities, case notes) - **Charts**: Altair timelines with **time** and **date** on two axis lines ## Requirements - Python **3.10+** - Dependencies: see [`requirements.txt`](requirements.txt) ## Setup python -m venv .venv **Windows (PowerShell)** .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt **macOS / Linux** source .venv/bin/activate pip install -r requirements.txt ## Run streamlit run app.py Then open the URL shown in the terminal (usually `http://localhost:8501`). ## Configuration - **Theme**: [`.streamlit/config.toml`](.streamlit/config.toml) — dark theme and accent colors - **Streamlit secrets**: if you add `st.secrets`, create `.streamlit/secrets.toml` locally — it is **gitignored**; do not commit secrets ## Repository layout | Path | Purpose | |------|--------| | `app.py` | Streamlit entrypoint | | `siem/` | Parsing, filters, flattening, lenses, charts | | `.streamlit/config.toml` | App/theme defaults (safe to commit) | | `sample_logs.ndjson` | Tiny sample for smoke testing | ## Security & privacy - **This repository** is intended to contain only generic UI/theme settings and **fictional** sample data (`sample_logs.ndjson` uses [RFC 5737 documentation IPs](https://datatracker.ietf.org/doc/html/rfc5737) and placeholder host/user names). - Do not commit real incident exports, credentials, customer data, or `.streamlit/secrets.toml`. - Optional settings belong in **environment variables** or **local** `secrets.toml` (both are gitignored via `.gitignore` / `.env`). - Before pushing to GitHub, run a quick search for accidental secrets, e.g. `git grep -i password` or use your org’s secret scanner. ## License [MIT](LICENSE)