Skip to Content
v0.8.0 · shippedNative iOS / Android / Flutter / Capacitor SDKs, A2A discovery, SOC 2 readiness, residency, BYO storage, BYOK. Read the changelog →
Admin consoleAnomaly detection
Confirmed regressions auto-open reports · · open live demo ↗

Anomaly detection

Route: /anomalies

The Anomaly detection page applies statistical detectors to time-series metrics you feed in. When a metric behaves unexpectedly, it surfaces as an anomaly — optionally auto-filing a report in your project’s queue.


Tabs

Anomalies

Summary stat cards: Open, Confirmed, Auto-reported counts.

The anomaly table shows:

ColumnDescription
MetricThe metric name the detector is watching
MethodDetection algorithm badge: Page-Hinkley, Z-score, or release-regression
ScoreThe anomaly score (higher = more anomalous)
ValueThe observed metric value that triggered the alert
Baseline meanThe expected value based on history
DetectedTimestamp
Auto-reportedBadge if a report was automatically filed

Actions:

  • Confirm — marks the anomaly as real; updates the confirmed count
  • Dismiss — marks as false positive and removes from open list

Metrics

Feed time-series data into the detection pipeline:

FieldDescription
Metric nameIdentifier for the series (e.g. checkout_errors, p95_latency)
ValueNumeric measurement
TimestampISO datetime (defaults to now)

After ingesting several data points, a mini bar chart appears per metric showing up to 50 recent values with min/max range.

Detect

Run a detection pass on demand:

FieldDescription
Metric nameOptional filter — leave blank to run on all metrics
Lookback hours1–720 hours of history to analyse

Click Run detection to trigger the detection pass. The result shows the count of new anomalies found.


Detection methods

MethodBest for
Page-HinkleyGradual drift in a running mean (e.g. slowly rising error rate)
Z-scoreSudden spikes above a rolling standard deviation band
release-regressionMetrics that changed significantly around a deploy timestamp

Auto-reporting

If a confirmed anomaly exceeds a severity threshold, Mushi automatically creates a report in the Reports queue. This closes the loop: anomalies become actionable items without requiring manual triage.


API

# List anomalies GET /v1/admin/anomalies?project_id=<pid>&limit=100 # Ingest a metric data point POST /v1/admin/metric-series { "project_id": "<pid>", "metric_name": "p95_latency", "value": 1240, "ts": "2026-05-19T12:00:00Z" } # Run detection POST /v1/admin/anomalies/detect { "project_id": "<pid>", "lookback_hours": 24 } # Confirm / dismiss PATCH /v1/admin/anomalies/<id> { "status": "confirmed" }

Last updated on