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.6

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.6
File Size Uploaded
multimodal_mllog-1.2.6.tar.gz 117.1 kB Details

Built distribution (wheel)

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

Total release size: 234.8 kB

Release files / multimodal_mllog-1.2.6.tar.gz

Download URL multimodal_mllog-1.2.6.tar.gz
Size 117.1 kB
Tags Source
SHA-256 checksum
How to use checksums
cd0386380c9e16a441ff7fb9f755ec34f6a57beaf2e0142874e8c4313743cd3b
BLAKE2b-256 checksum
How to use checksums
57481781c7152b5da4dda002e80fa6722dd329276f7720eae277a843f5dfa9b5
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.6-py3-none-any.whl

Download URL multimodal_mllog-1.2.6-py3-none-any.whl
Size 117.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
55d57774a0d2c374110a9e16ed954648aa98644dc630e4f08cc7d06ae35a3219
BLAKE2b-256 checksum
How to use checksums
36bedec088c4c6d8c7775070a49bb12a877cdb55212169c59928472513671885
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

This release

1.2.6 This release

2 release files

1.2.5

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