AI-assisted host forensics platform for live artifact collection, risk analysis, evidence export, and analyst workflows.
- Live host scraping (process, network, registry, event logs)
- Realtime live-scan progress API (
GET /api/scrape/progress) - Risk scoring + sequence analysis + grounded chat
- Deterministic vulnerability correlation engine (VCGv1) for Windows + Linux
- Live MITRE ATT&CK mapping + Navigator-ready coverage output
- Super timeline API (process + network + persistence + event + historical)
- Optional YARA scanning (with fallback signature engine)
- Threat-intel feed matching + alert dispatch (webhook/email/SIEM HTTP)
- Lightweight fleet/multi-host ingest + hunt APIs
- Response actions (process kill/file quarantine; guarded by env flag)
- Offline forensics APIs for EVTX, PCAP, and memory-image quick scan
- Chain-of-custody aware exports (CSV/XLSX/PDF/JSON)
- Dashboard mode toggle via
WINSENTINEL_AUTH_DISABLED(demo no-login or secured auth) - Real case records from scrape history (
/api/cases/list) - Optional Supabase case-store sync/read integration
- Backend API:
http://localhost:5006 - Frontend dev server:
http://localhost:3000 - Primary persistence: SQLite (
backend/forensic_data.db,backend/audit_trail.db,backend/users_auth.db)
./start_stack.sh startIf the admin account was just created, password is written to:
backend/.winsentinel_bootstrap_admin_password
Secured mode (auth enabled):
export WS_USERNAME=admin
export WS_PASSWORD='your-password'
./scripts/smoke_test.shDemo mode (no-login UI/API auth bypass):
export WS_AUTH_DISABLED=true
./scripts/smoke_test.shOr one command (starts stack + smoke test):
export WS_USERNAME=admin
export WS_PASSWORD='your-password'
./scripts/demo_run.shcd backend
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# or: .\.venv\Scripts\activate # Windows
pip install -r requirements.txtcd frontend
npm install
npm run devCopy env template:
cd backend
cp .env.example .envSet these values before using self-service auth actions:
WINSENTINEL_AUTH_SELF_SERVICE_KEY=...(required for register/reset endpoints)WINSENTINEL_JWT_SECRET_KEY=...(recommended in non-dev)
Notes:
POST /api/auth/loginis the supported login route.- Query-string login fallback is removed.
- Register/reset endpoints require
security_keythat matchesWINSENTINEL_AUTH_SELF_SERVICE_KEY.
LLM_PROVIDER=hybrid supports:
- OpenRouter (
OPENROUTER_API_KEY,OPENROUTER_MODEL) - Bytez (
BYTEZ_API_KEY,BYTEZ_MODEL,BYTEZ_API_URL)
You can set provider order with ONLINE_PROVIDER_ORDER=openrouter,bytez.
New Unsloth pipeline for unsloth/Llama-3.2-3B-Instruct:
cd backend/training
chmod +x run_finetune_llama32.sh
./run_finetune_llama32.shWhat it does:
- Generates training dataset from local scrape history + synthetic DFIR cases
- Runs 4-bit QLoRA fine-tuning for low-VRAM GPUs
- Saves adapter output to
backend/models/winsentinel-llama32-3b-lora
Files:
backend/training/generate_unsloth_dataset.pybackend/training/train_unsloth_llama32_3b.pybackend/training/run_finetune_llama32.sh
Use the fine-tuned adapter in backend runtime:
cd backend
cat >> .env <<'EOF'
OFFLINE_PROVIDER=hf_adapter
LOCAL_ADAPTER_MODEL_PATH=./models/winsentinel-llama32-3b-lora
LOCAL_ADAPTER_BASE_MODEL=unsloth/Llama-3.2-3B-Instruct
LOCAL_ADAPTER_LOAD_IN_4BIT=true
EOFThen restart backend. In hybrid mode, WinSentinel now prefers the local fine-tuned adapter response when offline inference succeeds.
Frontend uses VITE_API_BASE when set; otherwise it uses relative /api.
Examples:
# Default local backend
VITE_API_BASE=http://localhost:5006 npm run dev
# Remote backend
VITE_API_BASE=https://your-host.example.com npm run devDev proxy target can be changed with:
VITE_API_PROXY_TARGET(default:http://localhost:5006)
WinSentinel can sync/read case summaries to/from Supabase.
Set in backend/.env:
SUPABASE_URL=https://<project-ref>.supabase.coSUPABASE_SERVICE_ROLE_KEY=...SUPABASE_CASES_TABLE=winsentinel_cases(default)SUPABASE_TIMEOUT_SECONDS=10
Integration status endpoint:
GET /api/integrations/supabase/status
Recommended table schema (minimum columns):
-
Ready-to-run SQL:
docs/supabase_cases_schema.sql -
case_id(text, primary key) -
timestamp(timestamptz/text) -
status(text) -
priority(text) -
risk_score(int) -
risk_level(text) -
title(text) -
description(text) -
summary(text) -
findings_count(int) -
warnings_count(int) -
artifact_counts(jsonb) -
findings(jsonb) -
warnings(jsonb)
WinSentinel now uses a hybrid model:
- Primary engine: deterministic Vulnerability Correlation Graph (
VCGv1) - Secondary engine: AI reasoning overlay for prioritization and analyst narrative
VCGv1 (no black-box prediction) works on both Windows and Linux artifacts:
- Extracts signals from process, network, persistence (registry/cron/systemd/startup), and event logs.
- Maps evidence to explicit vulnerability rules (execution abuse, persistence, auth weakness, defense evasion, C2).
- Correlates matched rules into attack-chain stages and computes deterministic risk score.
- Outputs evidence-linked remediation actions.
The AI layer does not replace deterministic findings; it enriches reasoning and prioritization.
New analysis endpoints:
POST /api/analysis/vulnerability-scan(deterministic + optional AI reasoning)GET /api/analysis/mitre/liveGET /api/analysis/super-timelinePOST /api/analysis/yara-scanPOST /api/analysis/offline/evtxPOST /api/analysis/pcap/inspectPOST /api/analysis/memory/quick-scan
GET /healthPOST /api/auth/loginGET /api/auth/mePOST /api/scrape/startGET /api/scrape/progressPOST /api/analysis/vulnerability-scanPOST /api/analysis/process-treePOST /api/export/forensic-reportPOST /api/chatGET /api/cases/listPOST /api/cases/assignPOST /api/cases/notes/addGET /api/cases/notesGET /api/fleet/hostsPOST /api/fleet/ingestPOST /api/fleet/huntGET /api/integrations/alerts/statusGET /api/integrations/virustotal/statusGET /api/integrations/threat-intel/statusPOST /api/integrations/threat-intel/refreshGET /api/integrations/supabase/statusPOST /api/response/kill-processPOST /api/response/quarantine-file
From repository root:
npm run buildnpm run smoke:testnpm run demo:run
Hackathon demo build, actively hardening for production.
Last updated: 2026-02-21