
eBPF पर सिंगल-होस्ट रनटाइम-सुरक्षा डैशबोर्ड — Go एजेंट + SvelteKit. सादे Linux होस्ट्स के लिए लाइव प्रोसेस ट्री, नेटवर्क मैप और नियम-आधारित अलर्ट.
Falco की कर्नेल-स्तरीय दृश्यता, उस लाइव UI के साथ जो कर्नेल-नेटिव टूल्स साथ नहीं देते।
त्वरित शुरुआत · स्पेक · दृश्य · रोडमैप
Kestrel कर्नेल इवेंट्स (प्रोसेस exec, फ़ाइल एक्सेस, नेटवर्क कनेक्शन) को एक eBPF एजेंट के ज़रिए ट्रेस करता है और उन्हें एक SvelteKit वेब ऐप पर स्ट्रीम करता है, जो लाइव गतिविधि फ़ीड, प्रोसेस ट्री, होस्ट ओवरव्यू और एक नियम-आधारित अलर्ट इंजन प्रस्तुत करता है। पूरा उत्पाद/आर्किटेक्चर दस्तावेज़ SPEC.md में और परिचालन मार्गदर्शिका AGENTS.md में देखें।
eBPF इकोसिस्टम बैकएंड/CLI/Kubernetes-ऑपरेटर के आकार का है। Falco — CNCF-ग्रेजुएटेड मानक — प्रसिद्ध रूप से अपना कोई UI शिप नहीं करता। "कर्नेल समृद्ध डेटा उत्सर्जित करता है" और "एक इंसान वास्तव में उसे पढ़ सकता है" के बीच का अंतर वह फुल-स्टैक स्वीट स्पॉट है जिसमें यह प्रोजेक्ट रहता है। v1 में जानबूझकर सिंगल-होस्ट (Kubernetes नहीं) और केवल-निरीक्षण (कोई एन्फोर्समेंट नहीं)।
flowchart TB
subgraph host["Linux host · VM in dev, VPS in prod · kernel ≥ 5.8"]
direction TB
probes["eBPF probes (C)<br/>execve · openat · connect"]
agent["Go agent — cilium/ebpf<br/>decode · enrich · batch"]
ingest["/api/ingest<br/>Zod-validated at the boundary"]
rules["rule engine"]
hub["live hub"]
db[("Postgres<br/>events · rules · alerts")]
dash["SvelteKit dashboard<br/>live feed · tree · overview"]
probes -- "ring buffer" --> agent
agent -- "HTTP POST · JSON (Zod contract)" --> ingest
ingest --> db
ingest --> rules
ingest --> hub
hub -- "SSE" --> dash
end
मुख्य डिप्लॉयमेंट बाधा: एजेंट को एक वास्तविक कर्नेल चाहिए, इसलिए यह Cloudflare Workers (V8 isolates, कोई कर्नेल नहीं) पर नहीं चल सकता। v1 एजेंट + ऐप + Postgres को एक ही होस्ट पर co-locate करता है। SPEC.md §2 देखें।
चरण 3 — प्रगति पर है। चरण 2 की अनिवार्य चीज़ें (लाइव फ़ीड, प्रोसेस ट्री, होस्ट ओवरव्यू) पूरी हैं और VM में लाइव सत्यापित हैं: eBPF एजेंट (execve + exit, cilium/ebpf) एक वास्तविक कर्नेल को ट्रेस करता है और इवेंट्स को ऐप पर स्ट्रीम करता है, स्टार्टअप पर /proc स्नैपशॉट के साथ ट्री को सीड करता है। अब तक चरण 3: एजेंट ने फ़ाइल-ओपन (openat) और आउटबाउंड-कनेक्शन (security_socket_connect) प्रोब जोड़े हैं (कम्पाइल-सत्यापित; VM में लोड-टेस्ट बाकी), और नेटवर्क मैप (8.3) बन चुका है — एक D3 फ़ोर्स-डायरेक्टेड प्रोसेस↔डेस्टिनेशन ग्राफ। आगे: सेंसिटिव-फ़ाइल मॉनिटर (8.4) और रूल इंजन + अलर्ट्स (8.5)। प्रोब का काम डेव VM में ही रहता है, कभी होस्ट पर नहीं।
कुछ दृश्यों पर गहराई, सतही चौड़ाई से बेहतर है — छह स्पष्ट दृश्य, प्राथमिकता क्रम में बनाए गए (पहले अनिवार्य चीज़ें)।
execve प्रोब → रिंग बफर → cilium/ebpf → /api/ingest (VM में)exit प्रोब + /proc स्नैपशॉट · प्रोसेस ट्री · होस्ट ओवरव्यूnixosTest कर्नेल इंटीग्रेशन टेस्ट · GitHub Actions CIcd app
pnpm install
pnpm dev # http://localhost:5173
ऐप होस्ट पर चलता है; एजेंट डेव VM में चलता है और इवेंट्स उसे भेजता है। एजेंट के बिना भरी हुई फ़ीड देखने के लिए, सिंथेटिक जनरेटर ऑप्ट-इन करें: KESTREL_SYNTHETIC=1 pnpm dev।
pnpm check # svelte-check (types)
pnpm test # vitest — schema + ingest unit tests
pnpm build # production build (adapter-node)
डेव/टेस्ट डेटाबेस PGlite है (Postgres WASM में कम्पाइल): कोई नेटिव बिल्ड नहीं, कोई अलग सर्वर नहीं, prod Postgres जैसा ही SQL डायलेक्ट। यह app/kestrel-pgdata/ में पर्सिस्ट करता है (gitignored); टेस्ट एक अस्थायी इन-मेमोरी DB इस्तेमाल करते हैं।
# stream events (leave running in one terminal)
curl -N http://localhost:5173/api/stream
# post an event (in another) — appears live in the stream and the browser
curl -X POST http://localhost:5173/api/ingest -H 'content-type: application/json' \
-d '[{"host":"demo","type":"exec","pid":42,"comm":"bash","cmdline":"bash -i"}]'
तीन स्तर, प्रत्येक श्रेणी के बग के स्थान से मेल खाते हुए (पूरा विवरण SPEC.md §6–§7 में):
fast-check Zod इवेंट कॉन्ट्रैक्ट को adversarial/मैलफॉर्म्ड इवेंट्स के साथ चलाता है और रूल-इंजन इनवेरिएंट्स की पुष्टि करता है: कोई फ़ॉल्स मैच नहीं, निर्धारक वर्डिक्ट्स, मैलफॉर्म्ड इनपुट बाउंड्री पर रिजेक्ट।वर्तमान में: Vitest यूनिट्स (स्कीमा, इन्जेस्ट, ओवरव्यू, प्रोसेस ट्री, नेटवर्क ग्राफ़) + एजेंट के procscan पार्सर और इवेंट decode हेल्पर्स। /app में pnpm test चलाएँ, /agent में go test ./...।
SPEC.md §8.11)।SPEC.md §8.10)।cilium/ebpf बनाम libbpfgo — शुद्ध Go, CGO_ENABLED=0, bpf2go वर्कफ़्लो।SPEC.md §10)।SPEC.md §6)।| पथ | क्या है |
|---|
/app | SvelteKit ऐप — इवेंट स्कीमा, इन्जेस्ट, SSE हब, डैशबोर्ड दृश्य। बना हुआ व चलाने योग्य। |
/agent | Go यूज़रस्पेस एजेंट + eBPF C प्रोब (execve/exit/openat/connect) + /proc स्नैपशॉट। बना हुआ; केवल VM में चलता है। |
/infra | Nix डेव VM (निर्मित) + nixosTest, Terraform/libvirt प्राविज़निंग (चरण 4)। |
SPEC.md | आधिकारिक उत्पाद व आर्किटेक्चर स्पेक। |
| दृश्य | यह किस प्रश्न का उत्तर देता है | स्थिति |
|---|
| लाइव गतिविधि फ़ीड (8.1) | अभी क्या हो रहा है? | ✅ बन चुका है |
| प्रोसेस ट्री (8.2) | किसने किसको स्पॉन किया? | ✅ बन चुका है |
| होस्ट ओवरव्यू (8.6) | एक स्क्रीन पर स्थिति? | ✅ बन चुका है |
| नेटवर्क मैप (8.3) | यह होस्ट किससे बात कर रहा है? | ✅ बन चुका है |
| सेंसिटिव-फ़ाइल मॉनिटर (8.4) | क्या कुछ भी उन फ़ाइलों को छू पाया जो मायने रखती हैं? | ◻️ नियोजित |
| अलर्ट्स और नियम (8.5) | जब कुछ संदिग्ध लगे तो मुझे बताओ। | ◻️ नियोजित |