Source -> Processor -> Generator -> Sink
Static module registration keeps runtime behavior inspectable and testable.
Rust + eBPF runtime observability
E-Navigator collects node-local runtime observations, attributes them to workloads, derives bounded metrics and spans, and keeps every public claim tied to explicit proof.
Capabilities
The current foundation captures process, network, DNS, HTTP/1,
HTTP/2, extension-free WebSocket metadata, and gRPC-Web metadata at
runtime, optionally discovers uniquely identifiable supported
plaintext protocols on arbitrary TCP ports, correlation-matches
Kafka and MongoDB, and matches MySQL, NATS,
PostgreSQL, Redis, and gRPC requests to their responses for real
latency and status, reads TLS plaintext at the
userspace library boundary through OpenSSL, GnuTLS, and
version-gated unstripped Linux/amd64 Go crypto/tls
uprobes (interception, not on-the-wire decryption), accounts for TCP
retransmits, resets, and state transitions, samples and symbolizes
periodic CPU, scheduler off-CPU, and futex-wait lock profiles with
bounded Alloy-compatible C++ demangling,
with separately bounded opt-in kernel frames that retain user and
interpreter frames, and turns resource, trace, peer-aware
directional L4 bytes, and security observations
into bounded native E-Navigator signals. A disabled-by-default
plaintext HTTP/1 path can inject a child W3C
traceparent, preserve valid inbound
tracestate, and handle bounded exact
Content-Length, or chunked framing only when every byte
in the current syscall is captured, when complete headers fit one
contiguous captured prefix. It length-accounts as many as 40
iovecs while capturing only the first three 96-byte prefixes. TLS,
HTTP/2, HTTP/3, headers segmented across syscalls, multiple
pipelined requests, pre-existing connections, and async continuation
remain explicit non-claims. An optional capture filter
scopes which workloads are probed by Kubernetes namespace and label
on unified cgroup v2 nodes. Bounded inotify discovery wakes the
controller for new cgroups, while a 2-second polling reconciliation
remains as a recovery path. Five homelab runs per mode measured a
0.463 ms event-driven median versus 1,148.131 ms with polling for
the scoped new-Pod exec workload. Legacy and hybrid layouts force deny
before probe attachment instead of guessing a hierarchy.
Supported kernels use BPF ring buffers with explicit producer-loss
accounting; a separately built perf-event path remains for older
kernels and strict diagnostics. BTF-capable kernels also use
preflighted fexit hooks for scalar network read/write accounting,
with syscall tracepoints retained as the strict compatibility path.
An opt-in Linux 6.6 reduced-capability profile removes
SYS_ADMIN, retaining only BPF,
PERFMON, and SYS_PTRACE for the complete
source set proven on the homelab.
Static module registration keeps runtime behavior inspectable and testable.
Signals carry context when evidence exists and warnings when it does not.
JSON stdout is the default. Prometheus, OTLP, and a local pprof profile endpoint are opt-in, bounded, and family-selectable.
Opt-in cgroup-id filtering uses bounded event-driven discovery on unified cgroup v2 nodes; homelab p95 fell from 1,216.842 ms with polling to 0.487 ms for the scoped new-Pod exec workload.
Feature-probed RingBuf delivery and the old-kernel perf path expose one aggregate loss surface without claiming an unmeasured speedup.
Scalar network read/write accounting uses preflighted fexit where supported; a homelab A/B measured 7.971% more operations per second than tracepoints for that narrow workload.
Opt-in kernel stacks use an independent frame budget, address-free restricted-symbol fallback, and explicit pprof and OTLP frame domains. A local aarch64 Linux VM smoke passed; production-target portability and overhead proof remain pending.
Linux 6.6 homelab proof removed SYS_ADMIN: core Aya sources used BPF and PERFMON, TLS and cross-UID CPU symbols added SYS_PTRACE, and host resources used none.
Storage, UI, broad collector compatibility, rootless and cross-kernel privilege portability stay non-claims. The scoped homelab head-to-head measured higher E-Navigator CPU and RSS, so no lower-overhead claim is made.
Runtime intelligence
E-Navigator converts Linux and Kubernetes runtime activity into workload-aware metrics, traces, profiles, dependency topology, and security signals, without application SDKs or source-code changes.
Correlate HTTP/1, HTTP/2, gRPC, extension-free WebSocket frame metadata, gRPC-Web, Kafka, MongoDB, MySQL, NATS, PostgreSQL, and Redis requests with responses within the bounded wire forms documented for each protocol, surfacing latency, status, errors, and service dependencies. Disabled-by-default arbitrary-port discovery classifies only unique bounded plaintext signatures; explicit port mappings remain authoritative and ambiguous traffic fails closed. Kafka uses bounded wire correlation keys. MongoDB also handles out-of-order replies, no-response requests, moreToCome/exhaust continuations, and write outcomes without exporting reply documents. MySQL uses sequence-checked logical-packet state for result sets, prepares, cursors, LOCAL INFILE, and 16 MiB continuations; protocol-v10 negotiation enables exact bounded zlib decoding only after authentication succeeds and both server/client capability messages were observed, while client-only evidence, zstd, and ambiguous state fail closed. PostgreSQL owns startup/authentication as one private connection operation, retains multi-message SQLSTATE outcomes through readiness, and preserves the initiating query across extended-pipeline and COPY-in control traffic. Redis keeps RESP3 push/attribute frames out of the FIFO command/reply queue and does the same for RESP2 Pub/Sub delivery shapes only after a valid request-matched confirmation establishes RESP2 subscriber state; malformed, null-named, and impossible zero-count subscribe acknowledgements cannot advance it. A matched successful RESET exits that mode, while zero-argument unsubscribe forms make correlation opaque and increment a diagnostic instead of guessing across mixed subscription kinds. Channel values are never exported. Database spans use stable OpenTelemetry db.system.name and db.operation.name attributes, with db.collection.name only for unambiguous MongoDB collection commands; SQL tables are not guessed from raw queries and Redis keys are not collections. Opt-in zero-code agent recognition or explicit Kubernetes application-span ownership labels suppress matching duplicate request spans while retaining L4 and profile telemetry. Exact Guara client/server/version cells, reconnect behavior, and current production qualification remain blocked in the Guara workload qualification ledger. HTTP/3 and QUIC semantics remain an explicit non-claim.
Attribute runtime activity across hosts, processes, containers, namespaces, and Kubernetes workloads. Keep byte-rate views current for long-lived TCP pools with periodic active-flow snapshots, and export bounded directional L4 bytes by stable workload owner with idle reclamation and explicit overflow. Native LP64 TCP sendmmsg/recvmmsg batches are measured from every kernel-written per-message length through Linux's 1,024-entry vector ceiling; compatibility ABIs and unreadable results are counted and omitted.
Combine DNS and network telemetry, TLS visibility, TCP health, CPU, off-CPU, futex-wait, and opt-in kernel-stack profiles, resource metrics, and runtime security signals, then export through Prometheus, OTLP, pprof, or structured JSON. Native CFI normalization includes direct register-plus-offset CFA expressions while dynamic expression programs fail closed; broad managed-runtime unwinders and allocation profiles remain explicit gaps under the non-intrusive policy.
Benchmarks
Local Criterion runs are hot-path hygiene. Runtime overhead, collector, and Kubernetes claims require guarded live proof with recorded artifacts.
Install paths
Exercise the pipeline without privileged Linux or Kubernetes dependencies.
cargo run --locked -p e-navigator-cli -- --source synthetic
Install the published chart, then pin digest-backed images after verification.
helm upgrade --install e-navigator oci://ghcr.io/guaracloud/charts/e-navigator \
--version 0.5.0-rc.7 \
--namespace e-navigator-system \
--create-namespace
Check release manifest, checksums, Cosign signatures, SBOMs, image digest, and chart digest.
gh release download v0.5.0-rc.7 --repo guaracloud/e-navigator --dir e-navigator-release
jq -r '.images[0].reference' e-navigator-release/release-manifest.json
Documentation
The website guide covers architecture, the production performance path, operations, engineering standards, and proof boundaries. The Markdown source remains the exhaustive, reviewable reference.