Skip to main content

Command reference

Every command's own --help is authoritative; this is the map.

Setting up

CommandWhat it does
dun init [--repo <path>]Install the git hooks into a repository and register it
dun verifyCheck the install end to end and name what to fix
dun configShow every setting and whether it was set or defaulted
dun config set <key> <value>Change one setting
dun config datalakeConfigure the sync target interactively

Day to day

CommandWhat it does
dun statusTrailer coverage and method mix; outside a repository, every instrumented one
dun reportSelf-contained local HTML report — no server, no network
dun logWhat the hooks did, including every error they swallowed
dun repos listWhat you have instrumented
dun repos candidatesRepositories with agent activity and no hooks
dun repos updateReinstall hooks everywhere after an upgrade
dun repos removeStop tracking a repository

Measuring

CommandWhat it does
dun baseline captureSnapshot delivery metrics over a named pre-adoption window
dun deltaCompare delivery before and after adoption
dun ingest [--since <time>]Read agent transcripts into the journal
dun daemon runForeground watcher; re-ingests as sessions change

Publishing

CommandWhat it does
dun syncPublish to the configured database
dun sync --dry-runPrint the exact payload without contacting anything
dun journal showPrint everything recorded locally
dun journal purgeDelete it, for the current repository only

CI

CommandWhat it does
dun check --base <ref>Fail if any commit since <ref> lacks a valid trailer

Maintenance

CommandWhat it does
dun updateUpgrade through Homebrew, then refresh every repository's hooks
dun versionThe installed version

Capture a baseline

If you ever want to answer "did this change how we ship?", capture the period you were working without an agent:

dun baseline capture --since 2026-01-01 --until 2026-06-30

It records commit volume, median diff size, revert rate, cadence and purpose distribution over that window as a dated, immutable snapshot.

Name the window explicitly. A bare dun baseline capture prints help rather than capturing: a window ending today stops being pre-adoption the moment hooks are installed, so the convenient default would measure AI-assisted work and record it as the before. --days 90 still does that, and is correct only before dun init.

It does not have to run before dun init. The window is one you name, and it is read from history git already has — so a baseline can be captured afterwards, as long as the range you pick ended before your first assisted commit. What closes permanently is the availability of an untouched window, not the opportunity to capture one.

Baselines live outside data/ because a snapshot is not rebuildable: everything else in the journal can be recovered by re-ingesting transcripts, and this cannot. Recapturing over the wrong window needs --force, which prints the capture date, window and commit count of the snapshot it is about to destroy, and stores the new one as a separate baseline rather than overwriting the old row.

PR throughput, cycle time and change-failure rate cannot be read from git, so they are optional flags you supply from your own dashboard (--prs-merged, --median-cycle-hours, --change-failure-rate). Anything not passed is omitted from the snapshot rather than recorded as zero.