Get warmor running in under 5 minutes.
Deploy as a DaemonSet in audit-only mode — nothing is blocked, safe to try on any cluster.
Prerequisites:
- Kubernetes 1.25+ cluster with Linux nodes (kernel 5.8+)
helmv3.10+ (OCI support requires 3.8+)kubectlconfigured for your cluster
helm install warmor oci://ghcr.io/yasindce1998/warmor/charts/warmor \
--version 0.2.0 \
--namespace warmor-system --create-namespace \
--set daemon.auditMode=trueOr from a local clone:
git clone https://github.com/yasindce1998/warmor.git
helm install warmor ./warmor/deploy/helm/warmor \
--namespace warmor-system --create-namespace \
--set daemon.auditMode=trueRun directly on a Linux host (bare-metal, VM, or for local testing).
Prerequisites:
- Linux kernel 5.8+ (x86_64 or arm64)
- Root access (required for eBPF)
# Download latest release
curl -LO https://github.com/yasindce1998/warmor/releases/latest/download/warmor-daemon-linux-amd64
chmod +x warmor-daemon-linux-amd64
sudo mv warmor-daemon-linux-amd64 /usr/local/bin/warmor-daemon
# Verify
warmor-daemon --versionFor ARM64 (AWS Graviton, Raspberry Pi):
curl -LO https://github.com/yasindce1998/warmor/releases/latest/download/warmor-daemon-linux-arm64
chmod +x warmor-daemon-linux-arm64
sudo mv warmor-daemon-linux-arm64 /usr/local/bin/warmor-daemonVerify checksum:
curl -LO https://github.com/yasindce1998/warmor/releases/latest/download/warmor-daemon-linux-amd64.sha256
sha256sum -c warmor-daemon-linux-amd64.sha256Run with a policy:
sudo warmor-daemon --policy examples/policies/kubernetes-hardening.yamlRun as a systemd service:
sudo tee /etc/systemd/system/warmor.service <<EOF
[Unit]
Description=Warmor eBPF Security Daemon
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/warmor-daemon --policy /etc/warmor/policy.yaml
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now warmorhelm install warmor oci://ghcr.io/yasindce1998/warmor/charts/warmor \
--version 0.2.0 \
--namespace warmor-system --create-namespace \
--set daemon.auditMode=trueThat's it. Warmor is now observing process executions, file access, and network connections without blocking anything.
# Check pods are running
kubectl -n warmor-system get pods -l app.kubernetes.io/name=warmor
# Check logs for events
kubectl -n warmor-system logs -l app.kubernetes.io/name=warmor --tail=20
# Check metrics endpoint
kubectl -n warmor-system port-forward ds/warmor 9090:9090 &
curl -s http://localhost:9090/metrics | grep warmor_events_totalCopy one of the example policies into your values:
helm upgrade warmor oci://ghcr.io/yasindce1998/warmor/charts/warmor \
--version 0.2.0 \
--namespace warmor-system \
--set daemon.auditMode=true \
--set-file policy.yaml=examples/policies/block-crypto-miners.yamlReview the audit logs — denied events are logged but not enforced in audit mode.
Once you're confident the policy won't disrupt workloads:
helm upgrade warmor oci://ghcr.io/yasindce1998/warmor/charts/warmor \
--version 0.2.0 \
--namespace warmor-system \
--set daemon.auditMode=falseFor synchronous kernel-level blocking (denied operations never execute):
helm upgrade warmor oci://ghcr.io/yasindce1998/warmor/charts/warmor \
--version 0.2.0 \
--namespace warmor-system \
--set daemon.auditMode=false \
--set daemon.lsmEnforce=trueRequirements: Linux kernel 5.7+ with CONFIG_BPF_LSM=y. If your kernel doesn't support LSM-BPF, warmor automatically falls back to tracepoint-only mode.
Standalone:
sudo warmor-daemon --policy policy.yaml --lsm-enforcewarmorctl is a terminal UI for managing warmor fleets, policies, and certificates.
go install github.com/yasindce1998/warmor/cmd/warmorctl@latest# Launch interactive TUI dashboard
warmorctl
# Connect to a specific server
warmorctl --server https://warmor-server:8443 --cert agent.crt --key agent.keyThe TUI provides tabs for:
- Dashboard — Real-time event stream and summary stats
- Agents — Connected agents, heartbeat status, assigned policies
- Policies — List/create/update/delete policies
- Rollouts — A/B testing rollout management
- Certs — Generate mTLS certificates for agents
# Generate CA + server + agent certificates
warmorctl certs generate --ca --out ./certs/
warmorctl certs generate --server --ca-cert ./certs/ca.crt --ca-key ./certs/ca.key --out ./certs/
warmorctl certs generate --agent --ca-cert ./certs/ca.crt --ca-key ./certs/ca.key --name agent-01 --out ./certs/Enable mutual TLS between agents and the policy server:
# Start server with mTLS
warmor-server \
--listen :8443 \
--tls-cert ./certs/server.crt \
--tls-key ./certs/server.key \
--tls-ca ./certs/ca.crt \
--policy-dir ./policies
# Start agent with mTLS
warmor-daemon \
--policy policy.yaml \
--server https://warmor-server:8443 \
--tls-cert ./certs/agent-01.crt \
--tls-key ./certs/agent-01.key \
--tls-ca ./certs/ca.crtDeploy Prometheus + Grafana alongside warmor for full observability:
cd deploy/
docker compose -f docker-compose.monitoring.yml up -dThis starts:
- Prometheus on
http://localhost:9091— scrapes warmor metrics - Grafana on
http://localhost:3000— pre-provisioned dashboard (login: admin/warmor)
The Grafana dashboard shows:
- LSM hook decisions (allow/deny/audit) by type
- Decision latency histogram (P50/P95/P99)
- Policy load success/failure rates
- Agent heartbeat status
Alert rules fire on:
- Deny rate exceeding threshold (possible attack)
- Agent heartbeat missing > 5 minutes
- Policy load failures
Warmor integrates as a containerd shim plugin to receive container lifecycle events and scope policies per-container:
warmor-daemon \
--policy policy.yaml \
--containerd-socket /run/containerd/containerd.sock \
--per-container-policyInstall the OCI hook configuration:
sudo cp deploy/crio/warmor-hook.json /etc/containers/oci/hooks.d/The Helm chart deploys warmor with container runtime integration automatically:
helm install warmor oci://ghcr.io/yasindce1998/warmor/charts/warmor \
--version 0.2.0 \
--namespace warmor-system --create-namespace \
--set daemon.containerRuntime=containerd \
--set daemon.perContainerPolicy=true| Goal | Guide |
|---|---|
| Auto-generate policies from audit logs | Policy Generation |
| Enforce SBOM-declared binaries only | SBOM Enforcement |
| Merge multiple policies into one | Policy Merge |
| Compare two policies (SBOM vs audit) | Policy Diff |
| Push/pull compiled policies to OCI registries | Policy Bundle |
| Write custom policies | Policy Authoring |
| Manage fleet with warmorctl | Run warmorctl for interactive TUI |
| Set up mTLS | See mTLS Setup above |
| Monitor with Grafana | docker compose -f deploy/docker-compose.monitoring.yml up |
| Enable alerting | Set alerting.enabled=true — see values.yaml |
| Restrict to specific containers | Use daemon.cgroupFilter or --per-container-policy |
| Deploy per-namespace policies | Install the WarmorPolicy CRD — see CRD guide |
| Advanced features (Phase 7+8) | PRD — Phase 7 & 8 |
# Check what warmor is seeing (top denied events)
kubectl -n warmor-system logs -l app.kubernetes.io/name=warmor | grep DENY
# View real-time dashboard
warmorctl
# List connected agents
warmorctl agents list
# Temporarily disable enforcement on a node
kubectl -n warmor-system delete pod <pod-name> # respawns in audit mode if set
# Rollback
helm rollback warmor -n warmor-system
# Uninstall
helm uninstall warmor -n warmor-system| Cluster Size | CPU Request | Memory Request | Notes |
|---|---|---|---|
| < 50 nodes | 100m | 128Mi | Default values |
| 50-200 nodes | 200m | 256Mi | Increase if high event rate |
| 200+ nodes | 500m | 512Mi | Consider per-namespace policies |
Warmor runs as a DaemonSet — one pod per node. Resource usage scales with event rate, not cluster size.