Skip to main content
As your archive grows, DMS provides tools to query and analyse the collection without leaving the terminal. dms search filters records across multiple dimensions, dms stats shows collection-level analytics, dms report generates a browsable catalogue, and dms diff compares two records field by field.

Searching records

All filters are combined with AND logic — every filter you add narrows the result set further.

Available filters

Search examples

Reading results

Matching records are shown in a rounded table with columns for filename, title, type, language, and creator. With --verbose, a truncated description (120 characters) is printed beneath the table for each match.
If no records match, the command prints No records matched your search. and exits with code 0.

Collection statistics

dms stats analyses every .json file in the directory and displays:
  • Type distribution — count of records per heritage type
  • Language breakdown — count of records per language code
  • Completion heatmap — which recommended fields (creator, date, subject, location, rights) are filled in across the collection, making it easy to spot gaps
This is useful for understanding the shape of your archive and prioritising metadata improvement work.

Generating a catalogue

dms report reads all records in a directory and produces a browsable catalogue you can open locally or host for the community.

Comparing two records

dms diff performs a field-level comparison between two records and highlights what has changed:
By default, only changed and missing fields are shown. Pass --all to include unchanged fields as well:
This is useful for reviewing edits, comparing drafts, or auditing how a record has changed over time.
dms diff compares field values semantically — it will flag a field that changed from "public" to "restricted" without requiring you to do a line-by-line text diff of the raw JSON.