Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
guardd — ML-Based behavioral endpoint detection system for Linux machines | Kitploit
Tools/GitHubGitHub/benny-e/guardd
Defensive ToolsMachine LearningIntrusion DetectionAnomaly Detection
GitHubbenny-e/guardd

guardd

ML-Based behavioral endpoint detection system for Linux machines

View Repository
114 months agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

guardd

Machine learning driven behavioral anomaly detection for Linux using eBPF + Isolation Forest


Guardd collects low-level system events (process execution, network activity), aggregates them into time-windowed feature vectors, and detects anomalous behavior using a machine learning model.

Guardd is focused on detecting unknown threats



[!WARNING] This project is still in development
Features and detection accuracy are actively being improved
Feedback, suggestions, and contributions are welcome


How it works

guardd runs as a single systemd service that manages the full lifecycle of data collection, training, and detection.

On startup:

If no model exists, guardd begins collecting baseline behavioral data
It collects 1 day (default) of data to initially train on
Once training succeeds, it switches automatically into detection mode

During operation:

System activity is continuously aggregated into time windows and converted into feature vectors
Each window is scored by the trained Isolation Forest model
Anomalies are emitted as NDJSON

Ongoing:

The model is retrained automatically once per week
Detection resumes immediately after retraining with the updated model


Installation

1. Clone the repository

root@kitploit:~
git clone https://github.com/benny-e/guardd.git
cd guardd

2. Run the install script

root@kitploit:~
sudo bash install.sh

This will:

Install system dependencies
Copy the project to /opt/guardd
Create a Python virtual environment
Install the package
Build eBPF components
Install the systemd service


Usage

Start service

root@kitploit:~
sudo systemctl start guardd.service

Check status

root@kitploit:~
systemctl status guardd.service

View logs

root@kitploit:~
journalctl -u guardd.service -f

Terminal TUI

guardd includes a terminal UI for browsing recent alerts and searching anomalies

To launch: (after starting guardd.service)

root@kitploit:~
guardd tui

Running without systemd

You can run guardd directly from the command line without installing the systemd service. This can be configured to run with other init systems

Run full daemon

root@kitploit:~
sudo guardd daemon

Run individual components

Collect data:

root@kitploit:~
sudo guardd collect

Train model:

root@kitploit:~
sudo guardd train

Run Detection:

root@kitploit:~
sudo guardd detect

Configuration

guardd supports configuration via a config.toml file.

By default, the daemon looks for:

root@kitploit:~
/opt/guardd/config.toml

Example

root@kitploit:~
[daemon]
mode = "auto"
bootstrap_retry_seconds = 60
retrain_interval_seconds = 604800

[training]
min_training_rows = 1
contamination = 0.01
n_estimators = 200
threshold_percentile = 10.0

[paths]
db_path = "/opt/guardd/data/features.db"
model_path = "/opt/guardd/data/model.bundle"
guardd_path = "/opt/guardd/ebpf/guardd"

[daemon]

Controls the lifecycle of guardd.

mode
-- "auto" → full pipeline (collect → train → detect)
-- "collect" → only collect data
-- "detect" → only run detection (requires model)

bootstrap_retry_seconds
-- How often guardd attempts initial training when no model exists
-- During this phase, guardd collects data and periodically pauses to try training

retrain_interval_seconds
-- How often the model is retrained after initial bootstrap
-- Default: 7 days (default)

[train]

Controls model behavior and requirements.

min_training_rows
-- Minimum number of feature windows required to train
-- If not met, training fails and will retry later

contamination
-- Expected proportion of anomalies in the data
-- Passed directly to Isolation Forest
-- Typical values: 0.01–0.05

n_estimators
-- Number of trees in the Isolation Forest
-- Higher = more accurate, slower training

threshold_percentile
-- Determines anomaly cutoff score
-- Lower = more aggressive detection

[paths]

Controls where guardd reads/writes data.

db_path
-- SQLite database storing feature vectors and anomalies

model_path
-- Serialized model bundle used for detection

guardd_path
-- Path to the eBPF collector binary

Notes

Config values override CLI defaults
CLI arguments can still override config if explicitly provided
Model accuracy relies heavily on good training data. Longer training times will result in a more accurate detector


Dependencies

python3
python3-venv
python3-pip
clang
llvm
libbpf-dev
libelf-dev
bpftool
build-essential
pkg-config
sqlite3

Download Tool