DearDiary.jl
An ML experiment tracker written in Julia.
StarThe Installation and Quickstart pages cover initial setup.
Features
- Tracking surface: projects, experiments, iterations, parameters, metrics, tagged resources. Iterations form parent/child trees for HPO sweeps and distributed workers, and a status enum records failures with the captured exception text.
- Server + client: built-in REST API for remote logging and a native Julia client (
DearDiary.connect,with_iteration, …) that auto-finalises iterations whether the body returns or throws. - Environment capture and replay: every iteration records a
Manifest.tomlsnapshot, the Julia version, and the git SHA.DearDiary.restore(iteration_id)writes the captured environment to a fresh directory forPkg.instantiate. - Pluggable storage: single-file DuckDB metadata store. Artifact bytes live inline, on a local filesystem, or in any S3-compatible object store (AWS S3, MinIO, Cloudflare R2).
migrate_artifacts!moves rows between backends on a live database.
Motivation
Reproducible ML depends on knowing what code, data, and environment produced each result. Established trackers such as MLflow, Weights & Biases, and Aim are Python-first, and Python environment capture commonly records dependency specifications that the installer re-resolves at install time. DearDiary is Julia-native and persists the Manifest.toml for each run, so the captured dependency environment can be reconstructed later by running DearDiary.restore(iteration_id). The same tracking API applies whether the database is a single-file DuckDB store on a laptop or a multi-worker S3-backed deployment.
Contributing
Open an issue or pull request on the GitHub repository. Follow the existing code style and include tests for new features.