Share a DVC report
dvc plots diff main is one of the better ML review experiences that exists.
It produces dvc_plots/index.html, opens your browser, and stops there — the
reviewer, who has neither your working tree nor your remote, gets a paragraph
in the PR description instead.
Publish the file DVC already wrote
dvc plots diff main --targets eval/curves.json
# → file:///.../dvc_plots/index.html
Drag dvc_plots/index.html into the app, or from
CI:
dvc plots diff main -o dvc_plots
curl -fsS -X PATCH "https://commareports.com/api/v1/reports/$REPORT_ID" \
-H "Authorization: Bearer $COMMA_API_TOKEN" \
-H "Content-Type: application/json" \
-d "$(jq -n --rawfile html dvc_plots/index.html \
--arg title "Metrics vs main — $GIT_SHA" '{title: $title, html: $html}')"
Then post the link as a PR comment. See publishing from CI for the per-provider wiring, and GitHub Actions for the full job.
Why the review layer matters for a metrics diff
A DVC diff is a claim: this branch is better. Reviewing that claim means arguing about which curve counts, which is a conversation that belongs on the curve:
- Anchored threads — "this is within run-to-run variance, show me three seeds" sits on the plot. See commenting on HTML.
- Revisions — one report id per pipeline; drift is visible without a dashboard.
- Access per report — private, team-only, or domain-gated, which matters because metrics often leak dataset shape. See the sharing model.
Limits
- Entry HTML: 5 MB. DVC inlines plot data, so a long curve with many
revisions can approach it — narrow
--targetsor downsample the JSON. - Assets: 25 MB per file, 250 MB and 500 files per report.
- 60 requests/minute per token.
Try it
Comma is free — unlimited reports, unlimited commenters, unlimited revision history.