Skip to main content

Lean, local experiment tracker with a live, terminal-styled web dashboard.

Project description

runmonitor

Lean, local experiment tracker with a live, terminal-styled web dashboard. Import and go.

import runmonitor as rm

run = rm.init("my-experiment", config={"lr": 0.001, "batch_size": 32}, total_steps=1000)

for step in range(1000):
    loss, acc = train_step()
    run.log({"loss": loss, "accuracy": acc}, step)
    if step % 100 == 0:
        run.save("checkpoint.pt")

run.finish()

Open http://localhost:8080 — your loss curve is already live and drawing itself.

Install

pip install runmonitor                 # core
pip install "runmonitor[system]"       # + CPU/RAM tracking (psutil)

Then in any training script:

import runmonitor as rm

Or run the dashboard on its own (no training script needed):

runmonitor                 # opens the dashboard in your browser
python -m runmonitor       # equivalent, for a checkout/vendored copy
RUNMONITOR_PORT=9000 runmonitor   # pick a port (set before launch)

The dashboard

A single, evolving view in the empero black/purple palette:

Element What it shows
Metric ticker Every logged metric as key=value. Click one to select it.
Live hero curve The selected metric, drawn point-by-point and growing every step.
Anomaly detection Rolling z-score flags spikes — vertical markers on the curve + a status line ("⚠ anomaly at step N" / "● all calm").
Run header Run id, current step, status pill, elapsed, steps/sec, ETA, progress bar.
Streak / best badges 🔥 improving-streak and 🏆 personal-best on the selected metric (direction-aware).
Compare Pick a second run to overlay on the selected metric.
System pane CPU % and RAM % over time (needs psutil).
Hyperparameters / Artifacts Config passed to rm.init() and any saved files.
Export Download the full run as CSV or JSON.
Theme Midnight (black/purple) by default; toggle to light bone-paper.

API

# Start a run (creates the project if new)
run = rm.init(project: str, name: str | None = None,
              config: dict | None = None,
              total_steps: int | None = None) -> Run

run.log(metrics: dict[str, float], step: int)   # log metrics at a step
run.save(filepath: str) -> dict                  # save an artifact file
run.finish()                                     # mark finished
run.fail()                                       # mark crashed

Storage

Everything lives in ~/.runmonitor/:

  • runs.db — SQLite database (WAL mode, thread-safe)
  • artifacts/<run_id>/ — saved files per run

No database setup, no API keys, no cloud.

Requirements

  • Python 3.10+
  • Flask
  • Chart.js (loaded from CDN in the dashboard)
  • psutil (optional, for system metrics)

Publishing to PyPI (maintainers)

python -m pip install --upgrade build twine
python -m build                 # → dist/runmonitor-<version>.tar.gz + .whl
python -m twine check dist/*
python -m twine upload dist/*   # needs a PyPI account + API token

Bump version in pyproject.toml before each release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

runmonitor-0.2.0.tar.gz (19.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

runmonitor-0.2.0-py3-none-any.whl (22.0 kB view details)

Uploaded Python 3

File details

Details for the file runmonitor-0.2.0.tar.gz.

File metadata

  • Download URL: runmonitor-0.2.0.tar.gz
  • Upload date:
  • Size: 19.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for runmonitor-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b8d57168991c49658adf7043b56c3a47c9526cc6810c084054168cf93c686821
MD5 a36e719551ef76e5f949d2f1837eed63
BLAKE2b-256 813eae298c010c80353b57b3f79ecce31976c4ad65f41e8e93c6b8bb95a15395

See more details on using hashes here.

File details

Details for the file runmonitor-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: runmonitor-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 22.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for runmonitor-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 510ca89cfbd9ee9e9ecdeacbec6710d7c2d1f04fc514830eb299aafde817a1d7
MD5 164b08a3ec0530078c749e7ed9ab4d56
BLAKE2b-256 17ef4a3a87ab264b58b775928819b84ace6422abf430475d0ad32a3e1640c720

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page