← Projects

ExpMan

Experiment manager written in Rust

Period
Feb 2026 – present
Affiliation
Open source (MIT)
  • Rust
  • Open source
  • Tooling

An experiment manager written in Rust, with a Python wrapper for non-blocking logging, a live web dashboard, and a CLI. The point is that tracking a run should cost the training loop nothing.

Features

  • Non-blocking Python logging — log_vector() is a ~100 ns channel send, so it never stalls your training loop.
  • Live dashboard — SSE-powered real-time metric streaming, run comparison charts, and an artifact browser.
  • Single binary — CLI and web server ship as one exp binary; the server needs no Python runtime.
  • Efficient storage — batched Arrow/Parquet writes rather than a read-concat-write per step.
  • TensorBoard interoperability — a drop-in SummaryWriter, plus import and export both ways.
  • Reproducible dev environment — nix develop, with a Cachix cache.

Installing

cargo install expman      # Rust
pip install expman-rs     # Python
nix run github:lokeshmohanty/expman-rs

Logging a run

import expman as exp

exp.init("resnet_cifar10")
exp.log_params({"lr": 0.001})
exp.log_vector({"loss": 0.5}, step=0)

Or scoped, which is the recommended form:

from expman import Experiment

with Experiment("resnet_cifar10") as exp:
    exp.log_vector({"loss": 0.5}, step=0)

The same engine is available directly in Rust:

use expman::{ExperimentConfig, LoggingEngine, RunStatus};

let config = ExperimentConfig::new("my_rust_exp", "./experiments");
let engine = LoggingEngine::new(config)?;

engine.log_vector([("loss".to_string(), 0.5.into())].into(), Some(0));
engine.close(RunStatus::Finished);

Dashboard and CLI

exp serve ./experiments             # dashboard on :8000
exp list ./experiments              # list experiments
exp inspect ./experiments/resnet/runs/20240101_120000
exp clean resnet --keep 5 --force
exp export ./experiments/resnet/runs/20240101_120000 --format csv

MIT licensed. Source on GitHub, packages on crates.io and PyPI, documentation at lokeshmohanty.github.io/expman-rs.