PyOD 3: Agentic Anomaly Detection Library
A comprehensive Python library for anomaly detection across tabular, time series, graph, text, image, and audio data, with 60+ detectors and agentic workflows.
- Source repo
- yzhao062/pyod
- Stars
- ★ 10k
- Last updated
- 7d ago
- License
- BSD-2-Clause
- Primary language
- Python
- FA score
- 52/100 · Major gaps
At a glance
- How it runs
- Works with
- Universal · cross-platformCodex · Claude CodeOpenAI API (Partial support)
- Cost
- Free, no paid service needed
- Setup effort
- Medium · a few setup steps
- You'll need
- Typical use
- Data scientists use the classic API to quickly detect outliers in tabular data with minimal code.
- Not a fit if
- Teams wanting zero-config use without installing skills or MCP
- Use cases needing out-of-sample prediction from graph detectors
- Users needing stateful MCP investigate/iterate tools, deferred for now
- Source review
- 52/100 · Major gaps 8 safety controls not found
What does this agent do, and when should you use it?
PyOD is the most comprehensive and widely-used Python library for anomaly detection, with over 46 million downloads since its inception in 2017. PyOD 3 introduces ADEngine (lifecycle orchestration core) and the od-expert skill, enabling agents to drive anomaly detection investigations through natural conversation. The library includes 61 detectors covering tabular, time series, graph, text, image, and audio data, with benchmark-backed routing from ADBench, TSB-AD, BOND, and NLP-ADBench. The classic fit/predict API remains fully backward-compatible, while new MCP server and CLI tools provide agent integration paths.
PyOD 3 offers three layers of use: Classic API (manual detector selection), ADEngine (automatic detector selection, comparison, and assessment), and Agentic Investigation (natural language-driven). The library includes 61 detectors across tabular, time series, graph, text, image, and audio data, with a unified API. ADEngine orchestrates the full lifecycle from raw data to explained anomalies and next-step guidance. The od-expert skill integrates with Claude Code and Codex, converting natural language requests into ADEngine workflows. The MCP server (python -m pyod.mcp_server) exposes ten stateless tools spanning knowledge queries (list_detectors, explain_detector, compare_detectors, get_benchmarks), planning (profile_data, plan_detection, build_detector), and detection (run_detection, analyze_results, explain_findings). Additionally, the pyod CLI (pyod info, pyod install skill, pyod mcp serve) supports installation and diagnostics.
- Data scientists use the classic API to quickly detect outliers in tabular data with minimal code.
- Machine learning engineers use ADEngine to auto-select the best detector and benchmark performance.
- DevOps engineers integrate anomaly detection into monitoring pipelines via CLI or MCP.
- AI agents (e.g., Claude Code, Codex) use the od-expert skill for data quality checks and troubleshooting.
- Researchers reproduce benchmark experiments using PyOD's 61 detectors.
- Business analysts use MCP tools to analyze business data anomalies.
How do you install or deploy this agent?
Install the core library via pip: pip install pyod. Then choose the activation path for your agent stack: 1) Claude Code or Codex: run pyod install skill (user-global) or pyod install skill --project (project-local); 2) MCP-compatible systems: install pyod[mcp] and run pyod mcp serve; 3) Pure Python: no extra steps.
How do you use this agent?
Example with Isolation Forest:
from pyod.models.iforest import IForest
clf = IForest()
clf.fit(X_train)
y_train_scores = clf.decision_scores_
y_test_scores = clf.decision_function(X_test)For agentic path, run pyod info to see version and activation status.
What are this agent's strengths and limitations?
- Multi-modal: supports tabular, time series, graph, text, image, and audio data with a single API.
- Agent-ready: od-expert skill and MCP server enable natural language-driven investigations.
- Widely adopted: 46M+ downloads, benchmark-backed, enterprise deployments (e.g., Walmart, Databricks).
- Some advanced features (e.g., stateful MCP tools) are deferred to future releases.
- Installation and activation involve multiple steps and dependencies on agent runtimes.
- Graph detectors are typically transductive, not supporting out-of-sample prediction.
How does this agent compare with similar options?
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| PyOD 3: Agentic Anomaly Detection Library This agent | 52 · Major gaps | Library / SDKFree | ★ 10k | 7d ago | Python | Codex · Claude Code |
| OpenChatBI — Conversational BI Agent | 66 · Some gaps | Library / SDKFree + model costs | ★ 667 | 1d ago | Python | OpenAI API · Claude API |
| Nixtla TimeGPT-1 | 0 · Major gaps | Library / SDKFree + model costs | ★ 4k | 3d ago | Jupyter Notebook | — |
| SimpleMem: Efficient Lifelong Memory for LLM Agents | 43 · Major gaps | Library / SDKFree + model costs | ★ 3.8k | 2mo ago | Python | ChatGPT · Claude Code |
How does FollowAgents rate this agent?
Why each dimension lost points
Evidence shows the repository includes a security policy (SECURITY.md) and CodeQL workflow, but no specific implementation of least privilege, user confirmation, data flow transparency, sensitive data handling, dependency security audit, external effects control, rollback mechanisms, or source attribution. Therefore all trust criteria score 0.
Self-consistency: README, pyproject.toml, and test configuration are largely consistent in version numbers, dependencies, and feature descriptions, but there are minor inconsistencies (e.g., README claims 61 detectors, pyproject description says 61, but code may differ). Dependency availability: requirements.txt lists core dependencies but lacks version pinning or integrity checks. Failure messages: No explicit error handling or user-friendly failure messages are documented in tests or docs.
Audience and scenarios: README details multiple usage scenarios (classic API, ADEngine, Agentic) and provides installation instructions for different agent stacks. Capability boundaries: Documentation lists supported modalities and detector counts but does not specify applicability conditions or limitations for each detector. Trigger precision: Clear API and CLI entry points are provided, but trigger conditions are not detailed. Environment fit: Supports multiple Python versions and OSes, but specific environment limitations are not mentioned.
Information architecture: README is well-structured with TOC, API reference, benchmarks, etc. Install notes: Detailed installation steps and multiple installation methods are provided. Naming stability: API naming is consistent, but naming conventions are not explicitly documented. Examples and FAQ: Extensive examples and documentation links are provided, but no FAQ section. Known limitations: Documentation mentions macOS torch performance issues but does not comprehensively list all limitations. License: BSD-2-Clause license is clear. Versioning changelog: CHANGES.txt link is provided but not directly visible in the repository. Maintenance responsibility: Author information is clear, but maintenance responsibilities are not specified.
Output usability: Clear APIs and examples are provided, but output format standardization is not documented. Marginal value: As a widely used library, it provides significant marginal value. Cost-benefit: No detailed analysis of performance or resource consumption is provided.
Claim traceability: Claims in README (e.g., download counts, benchmarks) have external links but no specific data. Cross-source corroboration: Multiple external benchmarks and publications are cited, but independent verification is not provided. Fact-inference separation: Documentation distinguishes facts (e.g., algorithm lists) from inferences (e.g., performance claims), but not explicitly labeled.
- Not found in source: least-privilege scopingGrant only what the task needs: a dedicated account or read-only token, scoped to specific directories and repos.
- Not found in source: confirmation before actingTurn on (or add) a confirmation step before it acts, and try it in a sandbox or test environment before real data.
- Not found in source: data-flow disclosureWatch which external services it contacts (proxy or firewall logs) and keep sensitive data out until you know where it goes.
- Not found in source: sensitive-data handlingUse dedicated, low-privilege, revocable API keys — never production credentials — and keep secrets out of logs.
- Not found in source: dependency securityPin versions and run a dependency audit (npm audit, pip-audit) before installing; prefer running it in a container.
- Not found in source: disclosed external effectsEstablish which external systems it writes to, sends to or changes, and verify with test accounts or repos before production.
- Not found in source: rollback or recovery pathBack up first, or work on a git branch or snapshot, so its changes can be undone.
- Not found in source: verifiable attributionInstall from the official repo or registry and check the publisher and URL to avoid look-alike packages.
- No least privilege, user confirmation, or data flow transparency mechanisms are evident; caution is advised when using as an Agent product.
- Dependencies are not version-pinned, posing supply chain risks.
- Claims about detector counts and performance lack specific data support.
Recent releases
Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.
-
Release notes excerpt
PyOD 3.6.7 A maintenance release with input-validation and estimator-contract fixes, plus a new contribution process. No new detector or dependency is introduced. Bug Fixes - ABOD: cast non-float numeric input (integer lists and DataFrames, bool, float16) to float64 before the Numba angle kernel, which previously raised a TypingError. Scores for float32 and float64 input are unchanged. [#766](https://github.com/yzhao062/pyod/pull/766); the crash was reported earlier in #290 and #450. …View on GitHub ↗ -
Release notes excerpt
PyOD 3.6.6 A maintenance release focused on estimator compatibility, numerical correctness, and documentation. No new detector or dependency is introduced. Bug fixes - LOCI: preserve the constructor parameter k for cloning and use contamination to derive the fitted threshold and binary labels. k still controls the radius-scan early stop. [#707](https://github.com/yzhao062/pyod/pull/707), fixes [#194](https://github.com/yzhao062/pyod/issues/194). …View on GitHub ↗ -
Release notes excerpt
Three contributor bug fixes, plus maintainer follow-ups from a two-panel review and two rounds of /implement-review. Fixes generate_data produced anomaly-free benchmarks for about one seed in ten (#706 by @Mohit-Ak, closes #141). The internal offset was drawn with randint(low=offset), which returns 0 roughly one time in ten for the default offset=10. Every labelled outlier then landed exactly on the origin. Over seeds 0 to 500, 46 of 501 integer random_state values produced an outlier block with exactly zero per-feature variance. KNN scored roc_auc of exactly 0.0 on seeds …View on GitHub ↗