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

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.4
File Size Uploaded
multimodal_mllog-1.2.4.tar.gz 27.6 kB Details

Built distribution (wheel)

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

Total release size: 55.6 kB

Release files / multimodal_mllog-1.2.4.tar.gz

Download URL multimodal_mllog-1.2.4.tar.gz
Size 27.6 kB
Tags Source
SHA-256 checksum
How to use checksums
7992c0037a1d08fe83fa4081f3edd07d01c15d8a9e482166552e09eab3c9ebb2
BLAKE2b-256 checksum
How to use checksums
561efc42e37c323d4682d54f9bc86bcec0570c69829d9191328babdf9450d187
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.4-py3-none-any.whl

Download URL multimodal_mllog-1.2.4-py3-none-any.whl
Size 28.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b9aa9c2e18858fcf6b51b65ff645b1c94316f554f8e6c584e57d12eb75a5d6f2
BLAKE2b-256 checksum
How to use checksums
56d5f81fc5c7100beaab49c1556d7921afbf75521862ba07152bf8a04df7a88b
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

1.2.5

2 release files

This release

1.2.4 This release

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