Runtime
- ~/FastAPI
- ~/Python 3.11
- ~/Redis
- ~/Docker Compose
▸ navigation
Available/encrypted-handshake · Agadir, Morocco
main@8b793beLocal-first, plugin-driven, production-ready. Triage, correlate, learn, respond — without the alert payload ever leaving your network.
◆ kill-chain · last incident
contained @ C2
Each layer owns a single responsibility and a single failure mode. No god-modules. No shared singletons.
L01 → L06
Every analyzed case embedded with nomic-embed-text and stored in pgvector. Similar past cases retrieved at decision time. EMA(α=0.15) confidence updates from analyst feedback close the loop.
Wazuh, Elastic, Splunk, QRadar, generic webhook — every source normalized into one AlertSchema.
Primary + fallback across Ollama, OpenAI, Anthropic. No alert payload leaves the network unless cloud LLM is opted in.
Enrichment, notification (Discord, Slack, Teams), and export plugins toggled by env vars.
Kill-chain tracking, automated response actions, incident workflow, status transitions.
JWT auth + RBAC, audit log middleware, rate limiting, SSRF guards, security headers, DLQ, non-root containers.
Detection layer (any SIEM) Wazuh · Suricata · Arkime · Zeek · Elastic · Splunk · QRadar · generic │ webhook ▼ POST /ingest/{connector_name} │ normalize → AlertSchema ▼ ┌───────────────────────────────────────────────┐ │ NexusSOC API │ │ FastAPI · JWT auth · RBAC │ │ Connectors Plugins Worker │ │ (5 SIEMs) enrich/notif retry + DLQ │ │ │ │ LLM Router │ │ primary + fallback (Ollama / OpenAI / Anthropic) │ │ │ pgvector memory · skills · incidents · DLQ │ │ Postgres 15 + Alembic migrations │ └───────────────────────────────────────────────┘ │ │ │ ▼ ▼ ▼ React UI Prometheus + Grafana Discord / Slack / Teams
▸ Ingest p95
< 80ms
normalize → enqueue
▸ Router fallback
2 hops
ollama → cloud
▸ Memory recall
top-k 5
cosine · pgvector
▸ DLQ retry
exp · 5×
audit on every fail
Each screen is a real view from the running app. Click anywhere to scroll to the next step.

Operator HUD. SOC health, TP/FP rate, DLQ depth, and the live activity stream — all on one pane.
route/dashboard

Status workflow open → triaging → contained → closed, with kill-chain progression mapped per case.
route/incidents

Every analyzed case embedded with nomic-embed-text and stored in pgvector. Top-k=5 similar cases retrieved at decision time.
route/memory

Detection patterns the agent has learned. EMA(α=0.15) confidence updates from analyst feedback close the loop.
route/skills

Single alert or batch ingestion. Returns classification, confidence, MITRE ATT&CK mapping, and the chosen playbook.
route/analyze

Wazuh, Elastic, Splunk, QRadar, generic webhook. Every source is normalized into one AlertSchema before the router runs.
route/connectors

Enrichment (VirusTotal, AbuseIPDB), notification (Discord, Slack, Teams), export. Toggled by env vars, hot-reloadable.
route/plugins

JWT auth, role-scoped permissions, audit log middleware on every mutation. Non-root containers, SSRF guards, security headers.
route/users
Product surfaces
SIEM connectors
LLM providers
Local-first capable
Sovereignty
No alert payload leaves the network unless cloud LLM is opted in.
Self-improving
EMA(α=0.15) skill confidence learns from analyst feedback.
Production hygiene
JWT + RBAC, audit log, rate limiting, SSRF guards, DLQ, non-root containers.
I design and ship local-first agent systems, SIEM tooling, and production-grade .NET / FastAPI services. Tell me what you're defending — I'll come back with a plan.