Back to browse
GitHub Repository

Python SDK for WaveGuard physics-based anomaly detection API. One call. Any data.

3 starsPython

WaveGuard – Anomaly detection using wave physics simulation (GPU, MCP)

by waveguard·Feb 24, 2026·1 point·0 comments

AI Analysis

●●SolidWizardryBold Bet

Physics-based anomaly detection with no training step, but novelty doesn't match execution maturity.

Strengths
  • Stateless design eliminates model drift, retraining, and hyperparameter tuning overhead
  • GPU-accelerated (CUDA) and works on mixed data types (tabular, text, time series, JSON)
  • Per-feature contribution scores provide explainability beyond anomaly flags
Weaknesses
  • No public benchmarks comparing physics approach to PyOD or isolation forests on standard datasets
  • MCP integration works, but free tier (100 scans/day) and API-only access limits adoption velocity
Category
Target Audience

Data engineers and ML practitioners needing anomaly detection without model training.

Similar To

PyOD · scikit-learn isolation forest · Datadog Anomaly Detection

Post Description

I built an anomaly detection API that uses wave physics (Klein-Gordon equation) instead of ML. You feed it normal examples + suspect data in one stateless call — no training step, no model management.

How it works: data gets encoded onto a lattice, a wave equation evolves it on a GPU (NVIDIA T4), and anomalies show up as regions where wave energy concentrates. It also returns the top features explaining WHY each point was flagged.

What's different from sklearn/PyOD: - Stateless: training + inference in one API call - GPU-accelerated: CUDA kernels, not Python loops - Explainable: per-feature contribution scores, not just a number - Works on anything: JSON, time series, text, tabular

Free tier: 100 scans/day, no key needed.

Python SDK: pip install WaveGuardClient MCP server: works with Claude Desktop / AI agents via Smithery Docs: https://github.com/gpartin/WaveGuardClient

Try it in 4 lines: from waveguard import WaveGuard wg = WaveGuard() result = wg.scan(training=[{"cpu": 45}, {"cpu": 50}], test=[{"cpu": 99}]) print(result.summary)

Similar Projects