Skip to main content

Experiment logbook pipeline: automatic per-run capture + on-demand reporting

Project description

multimodal-mllog

Python License: MIT

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

  1. Open your ML project in a coding agent (Claude Code, Codex, etc.).
  2. Run your experiment — train, evaluate, or analyze.
  3. Run /mllog to capture the run, or let the Stop hook capture it automatically.
  4. Run /logbook --from yesterday to generate a logbook from stored records.
  5. Or start the dashboard: mllog dashboard and 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_DIR env 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 /mllog command.
  • v1.1 (current): Local JSON store, automatic capture via SessionStart + Stop hooks, /logbook reporting, 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

multimodal_mllog-1.2.0.tar.gz (17.3 kB view details)

Uploaded Source

Built Distribution

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

multimodal_mllog-1.2.0-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file multimodal_mllog-1.2.0.tar.gz.

File metadata

  • Download URL: multimodal_mllog-1.2.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

Hashes for multimodal_mllog-1.2.0.tar.gz
Algorithm Hash digest
SHA256 b14b4e4a95bdea1dd9e7e3d019ee8a5c42b7b1de55278f04669052acb3a858dd
MD5 4c847e6cd2a6a32d1b2962c1ac75d599
BLAKE2b-256 d156c198aee7cd3ddb98a87c1d87089288959589104fb7a951c590c7a2ea941c

See more details on using hashes here.

File details

Details for the file multimodal_mllog-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for multimodal_mllog-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f7a29ef7d7a975d812f1e001f8d0d6fb7d940f004405877f2722ad4551d32721
MD5 4ff398c0b71429c9d9f74405fc717985
BLAKE2b-256 86737abe6a4285021b11e0882bb0181b55f01346adf8c7dbbcb0ed185849611a

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