Metadata-Version: 2.4
Name: epokio
Version: 0.3.0
Summary: Watch, compare, queue and report ML training runs (Ultralytics, Hugging Face, Lightning, Keras, TensorBoard) from a menu bar, tray, terminal or web page.
Author: 8rulerstar
License-Expression: MIT
Keywords: machine learning,training,monitoring,ultralytics,yolo,tensorboard,experiment tracking
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: System :: Monitoring
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: windows-curses; sys_platform == "win32"
Provides-Extra: tray
Requires-Dist: pystray>=0.19; extra == "tray"
Requires-Dist: Pillow>=10.0; extra == "tray"
Provides-Extra: mcp
Requires-Dist: mcp>=2.2; extra == "mcp"
Dynamic: license-file

# Epokio

Watch, compare, queue and report machine learning training runs from a web page, a tray icon, a terminal
or the macOS menu bar. Epokio reads the files your framework already writes, so there is no logging code
to add, no account and no cloud.

## What it does

* **See every run** on this machine or a remote GPU box: state, epoch, time left, best score, curves,
  plain-language notes ("recall is much higher than precision…") and the result images your framework saved.
* **Get told** when a run finishes, fails (NaN loss), stalls or reaches a target score: on the Mac, in the
  tray, or as a phone push (ntfy, Slack, Discord, Telegram).
* **Compare runs**: only the settings that differ, a settings table for a whole sweep next to each run's
  main score, CSV export and Markdown reports.
* **Start and queue runs** (Ultralytics YOLO) from the web page, one at a time, with a data check before
  starting, a one-button Python setup (CUDA PyTorch on NVIDIA machines), resume from `weights/last.pt`,
  and failure causes in plain words.
* **AI assistants** can read and queue runs through the MCP server (`pip install "epokio[mcp]"`).

Reads Ultralytics (`results.csv`), Hugging Face Trainer (`trainer_state.json`), PyTorch Lightning
(`metrics.csv`), Keras (`CSVLogger`) and TensorBoard event files (read without TensorFlow). A hand-written
loop shows up with two lines:

```python
import epokio
with epokio.start("runs/my-model", epochs=50, lr=1e-4) as run:
    for epoch in range(50):
        ...
        run.log(val_loss=vl, accuracy=acc)
```

## Start

```
pip install epokio
epokio setup            # finds your runs, starts the helper, opens the page
epokio setup --lan      # also let your phone or another computer watch this machine
```

Other commands: `epokio watch` (terminal view, good over SSH), `epokio tray` (`pip install "epokio[tray]"`),
`epokio doctor` (what Epokio sees, for a bug report), `epokio agent --stop`.

Viewing is open on this machine; anything that starts, stops or changes something needs the machine's token
(`epokio agent --show-token`). The helper uses only the Python standard library.

MIT licence.
