Metadata-Version: 2.4
Name: proactiveguard
Version: 0.2.0
Summary: Predictive failure detection for distributed consensus systems (etcd, Raft, CockroachDB)
Author: Maya Plus
License-Expression: MIT
Project-URL: Homepage, https://proactiveguard.io
Project-URL: Documentation, https://docs.proactiveguard.io
Project-URL: Repository, https://github.com/Prakhar998/proactiveguard
Project-URL: Issues, https://github.com/Prakhar998/proactiveguard/issues
Keywords: distributed-systems,failure-detection,machine-learning,etcd,raft,consensus,predictive,monitoring
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: System :: Monitoring
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: requests>=2.28.0
Requires-Dist: numpy>=1.24.0
Provides-Extra: dev
Requires-Dist: pytest>=7.4.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: responses>=0.25.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"

# ProactiveGuard

Predictive failure detection for distributed consensus systems (etcd, Raft, CockroachDB).

## Install

```bash
pip install proactiveguard
```

## Quick Start

```python
from proactiveguard import ProactiveGuard

pg = ProactiveGuard(api_key="pg-...")

# Stream metrics from your cluster nodes
pg.observe("etcd-0", {
    "heartbeat_latency_ms": 22.5,
    "messages_sent": 12,
    "messages_received": 11,
    "messages_dropped": 0,
    "missed_heartbeats": 0,
    "response_rate": 1.0,
    "term": 4,
    "commit_index": 1042,
    "is_leader": False,
})

result = pg.status("etcd-0")
if result and result.is_pre_failure:
    print(f"Warning: {result.status} — {result.time_to_failure:.0f}s to failure")

# Batch prediction
labels = pg.predict(X)           # X: (n, 50, 32) numpy array
probs  = pg.predict_proba(X)
labels, ttf, conf = pg.predict_with_ttf(X)
```

## Authentication

Pass your API key directly or via environment variable:

```bash
export PROACTIVEGUARD_API_KEY="pg-..."
```

```python
pg = ProactiveGuard()  # picks up from env
```

## Links

- [Documentation](https://docs.proactiveguard.io)
- [Dashboard](https://app.proactiveguard.io)

Copyright (c) 2025 Maya Plus. All rights reserved.
