DearDiary.jl
An ML experiment tracker made in Julia.
StarNew here? Start with Installation and the Quickstart.
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. - Bit-exact environment 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: portable 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. Existing trackers either route every interaction through a Python client (MLflow, Weights & Biases, Aim) or capture environments as pip freeze strings that re-resolve their transitive dependencies at install time. DearDiary is Julia-native and persists the exact Manifest.toml per run, so you can reconstruct an iteration months later by running DearDiary.restore(iteration_id). You use the same tracking API whether you run a single-file DuckDB database 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.