22
33Kernel-level ** eBPF observability — and optional intervention — for AI agents.** It turns
44syscalls and network events into agent-semantic telemetry (which agent ran which tool, made
5- which LLM call, touched which files, reached which endpoint) with ** zero changes to the agent
5+ which LLM call, touched which files, reached which endpoint, escalated privileges ) with ** zero changes to the agent
66and no per-language instrumentation** — and the same kernel vantage point can ** intervene** :
77deny an agent's egress, file access, or process execution from an external policy.
88
@@ -19,12 +19,12 @@ can never break observability.
1919```
2020 AI agent + its tool subprocesses unmodified · any language
2121 │
22- │ execve · connect · TLS ClientHello · DNS · openat · read/recv · SSL_*
22+ │ execve · do_exit · connect · TLS ClientHello · DNS · openat · setuid/ptrace/bind · SSL_*
2323 ══════════╪═══════════════════════════════════════════════ KERNEL (eBPF + fanotify)
2424 ▼
2525 OBSERVE (passive, always-on) INTERVENE (opt-in, external policy)
26- exec connect sni dns enforce → cgroup/connect4: deny egress
27- llm-metrics file* ssl-content* fileguard → fanotify: deny open + exec
26+ exec exit connect sni dns enforce → cgroup/connect4: deny egress
27+ security llm-metrics file* ssl* fileguard → fanotify: deny open + exec
2828 │
2929 │ ring buffers
3030 ══════════╪═══════════════════════════════════════════════ USERSPACE
@@ -198,16 +198,21 @@ Rust + [Aya](https://aya-rs.dev). Validated on Linux 6.8.
198198
199199## Tested
200200
201- Soak-tested under sustained load — observe on a production host, intervene in an isolated VM:
201+ Soak-tested under sustained load — observe on real hosts (including a ** 24-min large-scale soak
202+ across an 8-node Kubernetes cluster** , observe-only DaemonSet: flat RSS, zero drops, zero
203+ restarts, non-disruptive), intervene in an isolated VM:
202204
203205| path | cases (all leak-free + correct under load) |
204206| ---| ---|
205- | ** observe** | steady 20 min · edge-input · ** a real a3s-code agent** · throughput 110k ev/60s · memory-bound (256 Mi) · restart ×8 · idle + heartbeat · SIGTERM · concurrent collectors · backpressure · connection-churn |
207+ | ** observe** | steady 20 min · edge-input · ** a real a3s-code agent** · throughput 110k ev/60s · memory-bound (256 Mi) · restart ×8 · idle + heartbeat · SIGTERM · concurrent collectors · backpressure · connection-churn · ** 8-node cluster ** |
206208| ** intervene** | egress · file/exec · SSL-content guards — and all three running alongside the collector |
207209
208- Two robustness bugs surfaced and were fixed this way: NDJSON stdout pollution (v0.9.1) and an
210+ Every new signal is validated live (correct payload, verifier loads clean) and reviewed by an
211+ adversarial multi-agent pass before release — which has ** twice** caught a per-thread event
212+ duplication (multithreaded ` do_exit ` / ` setuid ` ) that single-threaded tests missed. Soak also
213+ surfaced two robustness bugs, since fixed: NDJSON stdout pollution (v0.9.1) and an
209214output-backpressure event-loop stall (v0.9.2). Lib line coverage ** 79.6%** (` cargo llvm-cov ` ) —
210- the untrusted SNI / DNS / cgroup parsers and the full 14 -provider classifier are unit-tested.
215+ the untrusted SNI / DNS / cgroup parsers and the full 15 -provider classifier are unit-tested.
211216
212217## Security
213218
0 commit comments