Roadmap

Where pisentry goes next.

Built from GitHub milestones and issues each time they change. Nothing here is a promise until it ships in a release.

5 milestones ahead8 of 25 issues closedLatest release v0.2.0Updated 2026-11-07 13:15 UTC
v0.1.0 shipped

Released 2026-10-15

  • Ten detection categories, PS01 to PS10
  • Detectors for journald and classic syslog files, /proc polling, /proc/1/net listeners, file integrity...
  • Learning period, persistent baselines, alert-once-then-adopt, per-key cooldown, and one sanitizer for every...
  • Outputs: ranked Top 10 terminal report, JSON events on stdout or to a file, Prometheus metrics on :9817, a...
  • Commands: run, report, audit, baseline reset, test-alert, categories
  • Hardened systemd unit and an installer for Raspberry Pi OS, Ubuntu, Debian and RHEL-family hosts
  • Distroless multi-arch image (arm64, armv7, amd64) with provenance and SBOM
  • Flux-ready Kubernetes manifests
  • And 1 more changes and fixes
v0.2.0 shipped

Rule engine and detection foundations

  • Every event follows Event Schema v1
  • Signed releases with Sigstore cosign
  • Your own detection rules
  • Built-in rules embedded in the binary
  • Operator rule bundles in rules.d
  • Rules reload without a restart (#13)
  • Rule validation with pisentry check
  • Process rules beyond cryptominers
  • And 24 more changes and fixes
main unreleased

On main, in the next release

  • Kubernetes base pins the v0.2.0 image
v0.2.1 open

Rule packs, signed updates and benchmarks

The first curated rule packs (75+ rules with fixtures and MITRE IDs), signed rule bundle updates with rollback protection, and a performance budget enforced in CI.

0 of 3 done0%
Milestone on GitHub
  • #14FEAT'pisentry update-patterns' with Ed25519 signatures, version and expiry checksP1rule-engine

    Fetch rule bundles over HTTPS and install them only if signed. A signature alone does not stop a rollback: anyone who can serve an old, validly signed bundle can remove a newer rule. The bundle needs a version and an expiry the agent enforces.

    Open #14 on GitHub

  • #15RULESCurate initial v0.2.0 Attack Pattern Library (IoT Botnets, GTFOBins, Reverse Shells, Miners)P1detect

    Ship default rule packs mapped to MITRE ATT&CK for real Linux and ARM threats.

    Open #15 on GitHub

  • #33PERFBenchmarks and a performance budget for the event path in CIP2

    Decide #12 with data, catch regressions on every PR, and feed the hardware numbers in #28.

    Open #33 on GitHub

v0.3.0 open

Real-time telemetry and fileless detection

A decision record on exec telemetry privileges, real-time exec events (audit on Pi kernels, proc connector elsewhere, polling fallback), inotify FIM, and PS11 fileless execution.

0 of 4 done0%
Milestone on GitHub
  • #16FEATReal-time exec events: audit on Pi kernels, proc connector elsewhere, polling fallback (internal/execsrc)P0telemetry

    /proc polling every 15 seconds misses short-lived processes. The first plan used the Netlink Process Connector. That does not work on stock Raspberry Pi OS: - Pi kernels (6.12 rpi-v8 and rpi-2712) build CONFIG_CONNECTOR=m. PROC_EVENTS depends on CONNECTOR=y, so proc events are not compiled in. - Where it...

    Open #16 on GitHub

  • #34ADRReal-time exec telemetry: source, privileges and deployment costP0telemetry

    Real-time exec events need a kernel feed. On stock Pi kernels only audit is built in; proc events are not (CONFIG_CONNECTOR=m). Both netlink feeds deliver only to sockets in the initial network namespace. Audit also needs CAP_AUDIT_READ, and CAP_AUDIT_CONTROL to add rules. Today the DaemonSet has no hostNetwork...

    Open #34 on GitHub

  • #17FEATAdd real-time File Integrity Monitoring (FIM) using pure-Go Linux inotifyP1telemetrydetect

    Move PS03 (FIM) and PS10 (persistence) from hashing on an interval to event-driven checks with syscall.InotifyInit1 and syscall.InotifyAddWatch. This closes the README limitation where a file changed and restored inside 60 seconds is missed.

    Open #17 on GitHub

  • #18FEATImplement PS11 Dedicated Fileless & Shared-Memory Execution Detector (memfd_create & /dev/shm)P1detect

    Split fileless execution out of PS06 into a dedicated detector, PS11, for reflective ELF loaders (memfd_create) and execution from tmpfs (/dev/shm, /run/shm).

    Open #18 on GitHub

v0.4.0 open

Persistent windows and correlation

Detector windows persisted in state.json, low-and-slow and spray SSH analytics, multi-stage correlation (PS99), and CIDR threat feeds.

0 of 4 done0%
Milestone on GitHub
  • #19ARCHPersist detector windows and add an integrity check to state.json (internal/state)P1state-correlation

    internal/state already persists baselines and history. It writes JSON to a temp file, fsyncs it, renames it and fsyncs the directory, every 30 seconds when dirty and on SIGTERM. Because baselines persist, an offline edit to a watched file is already caught on the first FIM scan after start. What is missing: the SSH...

    Open #19 on GitHub

  • #20FEATUpgrade PS01 with 24-hour Low-and-Slow & Distributed SSH Brute-Force AnalyticsP1detectstate-correlation

    Catch attackers who space SSH attempts over hours, or spread one username across many source IPs.

    Open #20 on GitHub

  • #21FEATImplement Multi-Stage Attack Chain Correlator in Event Bus (internal/engine)P1state-correlation

    Link detections on one host inside a time window and raise one incident, PS99_MULTI_STAGE_COMPROMISE.

    Open #21 on GitHub

  • #22FEATAdd IP & CIDR Threat Intelligence Blocklist Matcher for PS02/PS05/PS09P2rule-enginedetect

    Check active sockets against IP and CIDR feeds.

    Open #22 on GitHub

v0.5.0 open

k3s edge, ARM benchmarks and admission policy

PS12 k3s posture and container escape, an admission policy for signed images, and benchmarks on real ARM boards.

0 of 4 done0%
Milestone on GitHub
  • #25FEATImplement PS12 k3s / Kubernetes Edge Security & Container Escape DetectorP1detectk3s

    Detector PS12 checks k3s node posture and catches container breakout attempts on edge clusters.

    Open #25 on GitHub

  • #28DOCS/TESTARM Hardware Benchmark Suite & v0.2.0 Documentation OverhaulP1ARM verified

    Benchmark v0.5.0 under load on real ARM boards and publish the rule authoring guide.

    Open #28 on GitHub

  • #12PERFLiteral prefilter for rule matching (Aho-Corasick), only if benchmarks need itP2rule-engine

    With 75 to 500 rules, RE2 regexps plus strings.Contains may already be fast enough: 100 execs a second at 50 microseconds each is half a percent of one core. Build an automaton when the benchmarks (#33) show the matcher is the bottleneck, not before.

    Open #12 on GitHub

  • #27K8SAdmission policy that verifies the pisentry image signatureP2k3s

    Release signing is done (PR #7). The release workflow signs the image and SHA256SUMS keyless with cosign. What remains is enforcing it in the cluster. The first signed release will be the first tag after v0.1.0.

    Open #27 on GitHub

v0.6.0 open

Active response, opt-in

Process tree stop and kill, and firewall quarantine with TTL. Off by default. Triggered only from trusted sources.

0 of 2 done0%
Milestone on GitHub
  • #23FEATBuild Active Response Engine with Process Tree Termination (internal/response)P1response

    Optional automated response that stops malicious process trees for high-confidence rules. A wrong kill on a cluster node is an outage, and anyone who can forge a triggering input owns that outage. The guardrails are the feature.

    Open #23 on GitHub

  • #24FEATFirewall quarantine in a dedicated nftables table with TTL and a safe ignore listP2response

    Quarantine attacking source IPs with automatic expiry. Three things make this harder on these nodes than it looks: - k3s, flannel and kube-proxy own iptables and nftables rules. pisentry must never touch them. - Traffic through Cloudflare Tunnel arrives from cloudflared, so banning by source IP does nothing for it. -...

    Open #24 on GitHub

Want to help? Rules and detection gaps make the best first contributions. Read the contributing guide.