Skip to main content

Talus โ€” eBPF Endpoint Security Agent

eBPF endpoint security agent for Linux โ€” detect ransomware behaviour, respond at the kernel edge. Kernel-side tracepoint programs, per-CPU perf buffers, sliding-window heuristic, automated SIGKILL response, FrankenTUI.

What It Doesโ€‹

Talus hooks into the Linux kernel at the tracepoint level โ€” capturing every execve, openat, connect, accept, sendto and recvfrom without polling, without /proc parsing, without library dependencies. Events stream through lock-free per-CPU perf buffers into a userspace detection engine that visualizes process trees, network connections, and file operations in real time, automatically terminating offending processes.

Key Featuresโ€‹

๐Ÿ”ฌ Kernel-Level Telemetryโ€‹

eBPF tracepoint programs capture execve and openat at the syscall boundary. No polling, no /proc parsing, no library version dependencies. Works on any Linux 5.8+ kernel.

๐Ÿ“Š Per-CPU Perf Buffersโ€‹

Lock-free per-CPU event streaming ensures zero contention between cores. Events are batched and flushed to userspace with minimal overhead โ€” the kernel does the heavy lifting.

๐Ÿ›ก๏ธ Ransomware Detectionโ€‹

Sliding-window heuristic monitors file rename velocity and entropy changes. When a process exhibits ransomware-like behavior (mass opens + high entropy), Talus flags it in real time and sends SIGKILL with full process tree context.

๐Ÿ–ฅ๏ธ FrankenTUI Dashboardโ€‹

7-panel cyberpunk terminal UI โ€” events, process tree, network connections, top files, extensions, alerts, heatmap. Keyboard-driven, zero mouse dependency.

โšก Zero Dependenciesโ€‹

No userspace eBPF library required โ€” the kernel does everything. Talus loads the compiled eBPF object directly via aya::Ebpf::load_file. The userspace side is pure Rust stable.

๐Ÿ”’ Security-Firstโ€‹

Designed for production security monitoring. Input validation, rate limiting, and graceful degradation under load. No data leaves the machine.

โ—† Commercial Licensingโ€‹

Enterprise features are unlocked by Ed25519-signed license keys. The binary embeds only the public key; a Cloudflare Worker + D1 activation backend (free tier) enforces expiry, revocation and seat limits server-side.

Architectureโ€‹

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Linux Kernel โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ execve tracepoint โ”‚ โ”‚ openat tracepoint โ”‚ โ”‚
โ”‚ โ”‚ (process create) โ”‚ โ”‚ (file open/creat) โ”‚ โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”‚ โ”‚ โ”‚ โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”‚ โ–ผ โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ EVENTS map โ”‚ (PerfEventArray, per-CPU) โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚ lock-free
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Userspace โ”‚
โ”‚ perf reader โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ–ผ โ–ผ โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Process โ”‚ โ”‚ File Op โ”‚ โ”‚ Ransom โ”‚
โ”‚ Tracker โ”‚ โ”‚ History โ”‚ โ”‚ Heuristicโ”‚
โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜
โ”‚ โ”‚ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ FrankenTUI โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Tech Stackโ€‹

ComponentTechnology
Kernel programsRust #![no_std], aya-ebpf
Build (kernel)Rust nightly, -Z build-std
UserspaceRust stable, aya
TUIFrankenTUI (ftui)
Perf readeraya-ebpf perf buffer API
LicensingEd25519 (ed25519-dalek), Cloudflare Workers + D1 activation backend
TargetLinux 5.8+ (eBPF + tracepoint support)

Requirementsโ€‹

  • Linux kernel 5.8+ (eBPF + tracepoint support)
  • root (CAP_BPF / CAP_SYS_ADMIN) to load eBPF programs
  • Rust nightly + rust-src for the eBPF crate
  • Rust stable for the userspace TUI

Licensing & Editionsโ€‹

Talus ships in two editions. Community is free and MIT-licensed; Enterprise (auto-kill, web dashboard, Kafka, ClickHouse, MemGraph, C FFI) is unlocked by a paid license key.

talus-keygen issue โ”€โ”€โ–บ signed key (Ed25519) โ”€โ”€โ–บ customer
โ”‚
talus license activate <KEY>
โ–ผ
Cloudflare Worker + D1 (free tier) โ”€โ”€ signature check,
expiry, revocation, seat limits โ”€โ”€โ–บ activation token
  • The binary embeds the Ed25519 public key only; the signing key never leaves the owner's machine
  • The activation server verifies signatures server-side, enforces expiry, revocation and seat limits, and rate-limits activation attempts
  • The local license cache is re-verified against the signed key on every start โ€” local edits to tier/expiry/features fail closed
  • 30-day Enterprise trial on first run; 30-day offline grace afterwards
talus license activate <KEY> # one key = one machine
talus license show # tier, expiry, seats, features

Pricing amounts are set per sale and never published in the repos โ€” the structure lives in the repo's docs/pricing-tiers.md.


See also: Architecture ยท eBPF Program ยท Userspace ยท Performance