Experiment logbook pipeline: automatic per-run capture + on-demand reporting
Project description
multimodal-mllog
Experiment logbook pipeline for researchers training ML models with coding agents.
An external observer that automatically captures per-run facts (metrics, git state, transcript, optional MLflow info) as JSON records, and on demand renders a markdown logbook from them. A local dashboard provides a UI to browse runs and generate logbooks.
coding agent --> mllog capture (automatic via hook) --> local JSON store
researcher --> /logbook or dashboard (manual) --> markdown logbook
Architecture
CODING AGENT (Claude Code / Codex / ...)
+----------------------------------------------------------------------+
| after each run: assemble facts -> write run record (automatic/hook) |
| on /logbook: read records over window -> render doc |
+------+-------------------------------------------+------------------+
| writes (automatic) | reads (manual)
v v
CAPTURE (per run) REPORT (/logbook)
* transcript, metrics, git, MLflow * select records in window
* one JSON per run * render markdown
| * advance checkpoint
v
LOCAL JSON STORE <-----> DASHBOARD (React + Django)
./mllog/records/ http://localhost:8000
Installation
pip install -e . # core (capture, query, render)
pip install -e ".[dashboard]" # + dashboard (Django + React)
pip install -e ".[mlflow]" # + optional MLflow integration
Quickstart
- Open your ML project in a coding agent (Claude Code, Codex, etc.).
- Run your experiment — train, evaluate, or analyze.
- Run
/mllogto capture the run, or let theStophook capture it automatically. - Run
/logbook --from yesterdayto generate a logbook from stored records. - Or start the dashboard:
mllog dashboardand browse at http://localhost:8000.
CLI reference
# Capture a run
mllog capture --type {train|eval|analysis} --outcome {success|fail} \
[--metrics-json <path>] [--transcript <path>] [--note <text>]
# Query records
mllog query --from <when> [--to <when>] [--json]
# <when>: ISO date (2026-06-25), 'yesterday', 'today'
# Render logbook
mllog render --from <when> [--to <when>] [--out <path>]
# Checkpoint
mllog checkpoint [--show | --advance]
# Dashboard
mllog dashboard [--host 127.0.0.1] [--port 8000]
Dashboard
A local React + Django dashboard to browse run records and generate logbooks.
pip install -e ".[dashboard]"
mllog dashboard
# Open http://localhost:8000
Features:
- Browse run records with date, type, and outcome filters
- View run details: metrics, git info, MLflow info, full transcript
- List and view generated logbooks
- Generate logbooks from the UI with a date range picker
Frontend development:
cd dashboard/frontend
npm install
npm run dev # Vite HMR at http://localhost:5173
Schema
RunRecord (pydantic v2) — one JSON per run:
{
"run_id": "uuid",
"created_at": "ISO-8601 UTC",
"started_at": "ISO-8601 UTC | null",
"type": "train|eval|analysis",
"outcome": "success|fail",
"metrics": { "name": value },
"metrics_source": "mlflow|session|none",
"git": { "commit": "sha", "dirty": false, "changed_files": [] },
"mlflow": { "run_id": "...", "params": {} },
"transcript": [{ "role": "user|agent", "content": "..." }],
"notes": "string|null"
}
Storage
- Records:
./mllog/records/<YYYY-MM-DD>/<run_id>.json - Checkpoint:
./mllog/checkpoint.json - Logbooks:
./mllog/logbooks/<from>_<to>.md - Override root with
MLLOG_DIRenv var. - MLflow is optional enrichment, not required.
Development
git clone https://github.com/jean-johnson-zwix/multimodal_mllogger
cd multimodal_mllogger
make install # create venv + install deps
make test # run pytest
make dashboard-dev # start dashboard in dev mode
make dashboard-build # build React frontend
Roadmap
- v1.0: MLflow-centric pipeline with
/mllogcommand. - v1.1 (current): Local JSON store, automatic capture via
SessionStart+Stophooks,/logbookreporting, React + Django dashboard. - v1.2: NoSQL/S3 storage, synthesis layer.
License
MIT
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file multimodal_mllog-1.1.0.tar.gz.
File metadata
- Download URL: multimodal_mllog-1.1.0.tar.gz
- Upload date:
- Size: 17.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34f461b60dc80a8f59ca44768633e2eab3c930d9fa211418f2cd525025d0cf5e
|
|
| MD5 |
25670d1b7ff6dce94be3fb918a840323
|
|
| BLAKE2b-256 |
f0c4d7dc7e2048cd93d4e1e4cc1a6f166e468bfc468e22394c59875c92f521c3
|
File details
Details for the file multimodal_mllog-1.1.0-py3-none-any.whl.
File metadata
- Download URL: multimodal_mllog-1.1.0-py3-none-any.whl
- Upload date:
- Size: 18.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c71b19226e3af952bf604389da80022e9f097f40fe2ce1fae18a085edeb5852
|
|
| MD5 |
f7a9314380dba2c1f5a60af5ad7fcaf5
|
|
| BLAKE2b-256 |
6eae89dc194149a2f79ce680e901c37a7c2c03726060978c73329a824da72e86
|