epok
The evidence engine

From your telemetry to evidence you can check.

Epok owns the pipeline from logs, metrics, traces and real-user data to evidence items. Detectors produce observations with receipts and coverage: new failures, quiet services, host and node liveness, traffic and metric anomalies, latency breaks and capacity trends. Analysis uses that evidence to recognize incidents, investigate causes, recommend recovery and forecast trouble. Detection runs the same on every tier.

An error you've never seen

Surfaces messages that never appeared in your recent history — the first sign of a fresh failure.

payment-service: "FATAL: connection pool exhausted" — first seen

ready within your first week

A service gone quiet

Catches a service that stops logging when it normally logs steadily. Failure with no error — just absence.

worker-billing went silent — last log 6m ago (normally every 30s)

ready within your first week

Spikes, drops, flatlines

Flags volume that jumps, falls, or flatlines against each service's daily and weekly normal.

api: 12,400 lines/min vs 3,200 normal (× 3.9)

learns your normal · sharpens over the first week

Many errors, one pattern

Groups errors that share a shape, so dozens of variants land as a single alert.

84 variants of one failure folded into 1 alert

active immediately

Crashing workloads

Surfaces crash loops, out-of-memory kills, and unschedulable workloads — from pod logs and events, correlated with host and container metrics.

billing-7c4b out-of-memory — 3rd restart in 4m

can match the first supported event

Failures that cascade

Produces evidence of upstream failures, retries and circuit-breaker trips, with dependency edges for analysis to check a cascade.

3 services blame one upstream — cascade in 8s

can match arriving evidence

Metric anomalies & saturation

Watches CPU, memory, disk, and queue depth climb toward their limits, and flags any metric that breaks from its learned baseline.

checkout: memory 94% sustained 6m — saturation

switches on when you send metrics

A host or node gone dark

Marks a host, node, or agent down the moment it stops reporting — no heartbeat, no metrics, no logs. You page on the box, not just its symptoms downstream.

web-3 unreachable — 3 missed heartbeats, marked DOWN

switches on when you send host metrics

Capacity, before it fills

Projects when a disk, volume, or quota will run out from its current trajectory — and pages with the ETA while you can still act, not after it breaks.

db-1 disk 92% — full in ~40m at current rate

forecasts the breach before it pages

Latency & tail-latency breaks

Flags when a service's p95/p99 latency breaks from normal — or its slow tail widens — from your trace spans, before the median moves.

payment p99 1.8s vs 320ms baseline — tail break

switches on when you send traces

Ingest → evidence → analysis → surfaces

Evidence for your team and your agents.

Recovery recommendations start with the change and its blast radius while root-cause analysis continues. Runbooks and built-in playbooks supply reversible actions for known failure shapes. We recommend; you execute. Epok commits a cause only with supporting evidence; otherwise it says what is missing and what to check next. Follow evidence IDs to receipts and inspect coverage, including what was not seen, in the app, Slack and PagerDuty. Agents query the same evidence through the MCP agent gateway, with access on request.

One Epok investigation canvas fusing logs, traces, metrics, infrastructure, and RUM — a cited probable-cause verdict, the blast radius, and the cross-service cascade timeline on a single screen
logs · traces · metrics · infrastructure · RUM · replay — one screen · open the live demo ↗
Service map

A dependency graph inferred from trace spans — service health, call paths, and where errors flow. No manual wiring.

apicartauthpay
New errors inbox

Errors are fingerprinted by shape and checked against recent history. A brand-new supported failure can surface on its first matching data — grouped, counted, and labeled.

pool exhaustedfirst seen
OOM kill ×34m
503 upstream×84 → 1
timeout /search×12
Distributed traces

Spans, errors, and latency per service — sampled at the edge, correlated to the logs that explain them.

frontend
checkout
payment
cart
Live tail + search

Stream logs and spans live; full-text search across your entire retention window. Sub-second filters and aggregations.

Host map & service overview

A per-host anomaly heatmap from your metrics, plus per-service request, error, and latency rates with host CPU and memory — the infra view, keyed to the same services.

01 Fingerprint dedup
Matching semantic fingerprints collapse into one alert with a fire count.
02 Incident grouping
Correlated signals can arrive as one incident with the chain attached.
03 Dynamic suppression
Repeat fires de-escalate on a widening window. New shapes get full severity.
04 Severity rationing
Critical / Warning / Info on explicit thresholds the product enforces.

Point your stack at Epok. Get evidence you can check.

Use open shippers — no proprietary Epok agent for server-side telemetry. Evaluate a representative production boundary for 14 days. Rule packs match supported inputs as they arrive; learned detectors use service history.