A small endpoint detection and response system. One server, a handful of agents, rules you can actually read.
An agent watches each machine. The server decides what matters. You get told, and you can do something about it.
Deliberately boring. Agents report to a single service that stores events, runs them past your rules, and pushes anything interesting to the dashboard in real time.
| Layer | Choice | Why this one |
|---|---|---|
| server | FastAPI | Async ingestion, typed at every boundary. |
| storage | PostgreSQL | Relational where we query, JSONB where events vary. One dependency. |
| dashboard | React | Live event stream over WebSockets. |
| agent | Python | Start simple. Rewrite in Go if it ever needs to be smaller. |
| rules | YAML | An open format. Detection knowledge should be legible, not locked in an engine. |
| deploy | Docker Compose | It runs on hardware you already own. |
Built in the open. The commit history is the documentation — you can watch it come together, sharp edges and all. Expect breaking changes and TODO comments that mean it.
Scope: nullWarden is for machines you own or administer. A homelab, your own VMs, a small team's laptops — up to around ten devices. It is not an enterprise platform and it isn't trying to become one.
It's a learning project, made properly.