explaingit

femboyisp/emry

Analysis updated 2026-05-18

6RustAudience · dataComplexity · 2/5LicenseSetup · easy

TLDR

A lightweight, self-hosted monitoring tool for ML training runs: a single emit() call streams metrics to an append-only log and a live terminal or web dashboard with no accounts or external services.

Mindmap

mindmap
  root((Emry))
    Core Design
      Non-blocking emit
      Append-only JSONL log
      No accounts needed
    Dashboards
      Terminal TUI watch
      Self-hosted web
      Baseline comparison
    Cluster Support
      SLURM sidecar mode
      SSH auto-detection
      Survives process crash
    Extras
      GPU sampling nvidia-smi
      Slack Discord alerts
      CSV export
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Add emry to a PyTorch or JAX training loop to stream loss and learning rate metrics to a live terminal dashboard during long runs.

USE CASE 2

Compare two training experiments by overlaying a prior run as a baseline using emry watch --compare or emry web with a baseline run directory.

USE CASE 3

Set up Emry in sidecar mode on a SLURM cluster so metric logging outlives the training process if it is killed.

USE CASE 4

Export training history to CSV and analyze it with pandas after the run completes.

What is it built with?

RustPythonmaturinJSONLPyPI

How does it compare?

femboyisp/emryj0rdiun/cosmic-ext-app-switcherjangia/jg-lint
Stars666
LanguageRustRustRust
Setup difficultyeasymoderateeasy
Complexity2/52/53/5
Audiencedatageneraldeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 5min

Requires Python 3.10+ and pip, Rust toolchain is only needed to build from source, not for the PyPI install.

Free to use for any purpose, including commercial use, with no restrictions beyond keeping the license notice.

In plain English

Emry is a monitoring tool for machine learning training runs. When you train a model that takes hours or days to complete, you want to watch metrics like loss and learning rate without that monitoring code slowing down the training itself. Emry is designed around this constraint: the core emit() call is meant to take under 10 microseconds and never blocks the training loop. The setup is minimal. Your training loop calls emry.run() to start a named run, then calls run.emit() each step with whatever metrics you care about as keyword arguments. Emry handles the rest: it writes an append-only log file you can read with standard tools like jq or pandas, and if you are running in a terminal it brings up a live dashboard automatically. The dashboard shows a loss curve, phase markers, checkpoint annotations, and an optional overlay of a prior run so you can compare current performance against a baseline. Two dashboards are included. The terminal version (emry watch) runs in any standard terminal. The web version (emry web) serves a local browser dashboard that works fully air-gapped with no CDN dependency. Both have the same feature set. For cluster environments like SLURM, a sidecar mode lets the monitoring engine outlive the training process if the process crashes or is killed. Emry also automatically samples GPU utilization, memory, and temperature via nvidia-smi when a GPU is present, and can send a Slack or Discord alert if a metric goes NaN or infinity. The core engine is written in Rust for performance, the Python API wraps it via the maturin build tool. Installing it is a single pip install with no account or external service required. This is for machine learning researchers and engineers who run long training jobs and want lightweight, self-hosted observability that is easy to read both live and after the fact.

Copy-paste prompts

Prompt 1
I'm training a model with PyTorch and want to add Emry monitoring. Show me the minimal emry.run() and run.emit() integration for my training loop, including loss and learning rate tracking.
Prompt 2
My Emry web dashboard is running on a remote GPU machine. Walk me through using EMRY_AUTH_TOKEN and --tls-cert to expose it securely over HTTPS.
Prompt 3
I ran two training experiments and want to compare their loss curves. How do I use emry watch --compare to overlay run_a against run_b?
Prompt 4
Set up Emry in SLURM sidecar mode so metrics keep logging even if my training process is killed. Walk me through the docs/emry/slurm.md runbook.
Prompt 5
My training run metric went NaN. Configure Emry to send an alert to my Slack webhook the moment any metric becomes NaN or Inf.

Frequently asked questions

What is emry?

A lightweight, self-hosted monitoring tool for ML training runs: a single emit() call streams metrics to an append-only log and a live terminal or web dashboard with no accounts or external services.

What language is emry written in?

Mainly Rust. The stack also includes Rust, Python, maturin.

What license does emry use?

Free to use for any purpose, including commercial use, with no restrictions beyond keeping the license notice.

How hard is emry to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is emry for?

Mainly data.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Scan in gitsafehub Deploy in gitdeployhub femboyisp on gitmyhub

Verify against the repo before relying on details.