Search records by type, subject, creator, date, and free text. Generate collection statistics and browsable catalogues.
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.
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.
╭─ Search Results (2 found) ──────────────────────────────────────────────╮│ File Title Type Lang Creator ││ story_b3e7c8a1.json Journey to Dzaleka… story en Marie Cons… ││ audio_d7e8f9a0.json Traditional Songs… audio rw Espérance N… │╰─────────────────────────────────────────────────────────────────────────╯
If no records match, the command prints No records matched your search. and exits with code 0.
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.
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.