Skip to main content

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 (agent events, git state, optional MLflow info) as JSONL records via a sensor/adapter/sink architecture, and on demand generates a PDF experiment report from them via the coding agent.

coding agent  --> mllog capture (automatic via hook)   -->  JSONL store
coding agent  --> /logbook --from yesterday            -->  PDF report
researcher    --> mllog dashboard                       -->  local web UI

Architecture

Architecture

Record envelope (stored as one JSONL line per record in ./mllog/records/<YYYY-MM-DD>.jsonl):

{
  "schema_version": "0.1",
  "record_id": "<ULID>",
  "display_name": "Fix LR scheduler bug",  // short title for UI (≤60 chars)
  "activity_type": "train | eval | analysis | attempt_failed",
  "status": "ok | failed",
  "started_at": "<iso8601>",
  "ended_at": "<iso8601>",
  "sources": {
    "agent":  { "event_count": 12, "edit_ledger": {}, "config_deltas": [], "commands": [] },
    "git":    { "commit": "abc123", "dirty": false, "changed_files": [] },
    "mlflow": { "run_id": "...", "params": {}, "metrics": {} },  // present only if active
    "env":    { "python_version": "3.13", "platform": "..." }
  },
  "digest": null,           // optional, evidence-gated
  "transcript_ref": null    // pointer to session JSONL, never raw content
}

Installation

pip install multimodal-mllog              # core (capture, query)
pip install "multimodal-mllog[mlflow]"    # + optional MLflow sensor/sink
pip install "multimodal-mllog[dashboard]" # + local web dashboard (Flask + PDF rendering)

Quickstart

  1. Open your ML project in a coding agent (Claude Code, Codex, etc.).
  2. Run your experiment: train, evaluate, or analyze.
  3. The Stop hook captures the run automatically, or run /mllog manually.
  4. Run /logbook --from yesterday to generate a PDF experiment report from stored records.
  5. Run mllog dashboard to browse records in a local web UI.

CLI reference

# Capture a run (sensors gather git, agent events, optional MLflow automatically)
mllog capture --type {train|eval|analysis|attempt_failed} --status {ok|failed} \
              [--name "short title"] [--session-path <path>] [--mlflow-run-id <id>] [--auto]

# Query records
mllog get-logs --from <when> [--to <when>] [--json]
# <when>: ISO date (2026-07-01), 'yesterday', 'today'

# Local dashboard
mllog dashboard [--port 8265] [--mllog-dir ./mllog]

# Sensor / adapter / sink status
mllog doctor

# Checkpoint
mllog checkpoint [--show | --advance]

Reports

Reports are agent-generated: the /logbook skill instructs the coding agent to read session records, analyze them, and produce a professional PDF report using reportlab. This produces rich narrative documents with tables, cross-run comparisons, failure analysis, and recommendations — not a mechanical data dump.

/logbook --from 2026-07-01 --to 2026-07-19

The dashboard also offers a quick summary generator for simple tabular overviews.

Storage

  • Records: ./mllog/records/<YYYY-MM-DD>.jsonl (append-only, one line per record, fsynced)
  • Checkpoint: ./mllog/checkpoint.json
  • Logbooks: ./mllog/logbooks/<from>_<to>.pdf
  • Override root with MLLOG_DIR env var.
  • Override logbooks dir with MLLOG_LOGBOOKS_DIR env var.

Dashboard

A local read-only web UI for browsing records and viewing experiment details.

pip install "multimodal-mllog[dashboard]"
mllog dashboard
# opens http://localhost:8265

Two views: Sessions (table, filterable) and Record Detail (metrics, config deltas, agent activity).

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 lint            # check core purity (no banned imports)
make frontend        # rebuild dashboard frontend

License

MIT

Release files for multimodal-mllog 1.2.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for multimodal-mllog 1.2.5
File Size Uploaded
multimodal_mllog-1.2.5.tar.gz 27.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for multimodal-mllog 1.2.5
File Interpreter ABI Platform
multimodal_mllog-1.2.5-py3-none-any.whl Python 3 none any Details

Total release size: 56.0 kB

Release files / multimodal_mllog-1.2.5.tar.gz

Download URL multimodal_mllog-1.2.5.tar.gz
Size 27.8 kB
Tags Source
SHA-256 checksum
How to use checksums
bd4648a26160e23c41dab155234b08c1f1fc4ed8506375e6c4dd331c00d0f835
BLAKE2b-256 checksum
How to use checksums
3a739db00f59128fc82aba10a6ed059ce67f9e554cec60e09e44bc9cd5464625
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.1

Release files / multimodal_mllog-1.2.5-py3-none-any.whl

Download URL multimodal_mllog-1.2.5-py3-none-any.whl
Size 28.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
baac7886d27222ada75f887662fe2094bdd8f38acb981dc5a46848519c63a594
BLAKE2b-256 checksum
How to use checksums
94d97dfb3c20504cca03ca44873d9480e125c4b6b9391e7eef97a107964250f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.1

Release history Release notifications | RSS feed

1.2.6

2 release files

This release

1.2.5 This release

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page