Metadata-Version: 2.4
Name: eloplus-agent
Version: 1.0.1
Summary: EloPlus on-premise agent — automatic AI workload demand response
Author-email: EloPlus <eloplusai@gmail.com>
License: Proprietary
Project-URL: Homepage, https://eloplus.ai
Project-URL: Documentation, https://eloplus.ai
Project-URL: Repository, https://github.com/eloplus/eloplus-agent
Keywords: eloplus,demand-response,grid,kubernetes,ai
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: System Administrators
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
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
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: requests>=2.31
Requires-Dist: click>=8.1
Requires-Dist: schedule>=1.2
Requires-Dist: psutil>=5.9
Requires-Dist: aiohttp>=3.9
Requires-Dist: httpx>=0.27
Requires-Dist: cryptography>=42
Provides-Extra: kubernetes
Requires-Dist: kubernetes>=29.0; extra == "kubernetes"
Provides-Extra: ray
Requires-Dist: ray>=2.9; extra == "ray"
Provides-Extra: all
Requires-Dist: kubernetes>=29.0; extra == "all"
Requires-Dist: ray>=2.9; extra == "all"

# EloPlus Agent

Automatically pause flexible AI training jobs during grid price spikes.  
Connects your infrastructure to EloPlus in under 10 minutes.

## Requirements

- Python 3.9+
- Linux or macOS
- Network access to your scheduler (`kubectl`, `ray`, `scontrol`, or shell)

## Quick Install

```bash
curl -sSL https://eloplus.ai/install.sh | bash -s -- --token YOUR_TOKEN
```

## Manual Install

```bash
pip install eloplus-agent
eloplus init --token YOUR_TOKEN
eloplus start
```

### Non-interactive / scripted setup

```bash
pip install eloplus-agent
eloplus init \
  --token YOUR_TOKEN \
  --scheduler kubernetes \
  --mode automatic \
  --non-interactive
eloplus start
```

## Commands

| Command | Description |
|---------|-------------|
| `eloplus status` | Current agent and grid state |
| `eloplus test` | Verify scheduler integration |
| `eloplus test --dry-run` | CLI smoke test (no API/scheduler) |
| `eloplus logs` | Recent activity log |
| `eloplus upgrade` | Update to latest PyPI release |
| `eloplus stop` | Stop the agent daemon |

## Scheduler Support

| Scheduler | Integration |
|-----------|-------------|
| **kubernetes** | Pods labeled `eloplus=flexible` |
| **ray** | Jobs tagged `eloplus:flexible` |
| **slurm** | Jobs with `flexible` in the name |
| **shell** | Processes defined in config |

Install optional deps when needed:

```bash
pip install "eloplus-agent[kubernetes]"
pip install "eloplus-agent[ray]"
```

## Modes

- **automatic** — pauses/resumes without intervention
- **semi-auto** — asks for confirmation via Slack before acting
- **manual** — alerts only; you execute pause/resume

## Version checks

On every `eloplus start`, the agent checks `GET /v1/agent/version`:

- Below **minimum** → refuses to start; run `pip install --upgrade eloplus-agent` or `eloplus upgrade`
- Below **latest** → prints an update notice (no auto-upgrade without your consent)

## Support

[eloplusai@gmail.com](mailto:eloplusai@gmail.com)
