shruggie-indexer
shruggie-indexer indexes files and directories into structured JSON with deterministic identity hashes, filesystem evidence, optional ExifTool metadata, and v4 relationship annotations for sidecar-like files.
The v4 architecture treats every discovered file as a first-class IndexEntry. Instead of ingesting sidecar files into parent metadata, the indexer records believed associations in relationships[].
Key Features
- Deterministic hash-based identity for files and directories (
id,id_algorithm,storage_name) - Recursive filesystem inventory with platform-aware timestamps and path normalization
- Optional ExifTool extraction into
metadata[](origin: "generated") - Sidecar relationship classification via rule engine (
relationships[]with rule source, confidence, predicate detail) - Uniform rename and rollback workflows across all files
- v4 output sidecar conventions:
_idx.json(file scope),_idxd.json(directory scope) - CLI, GUI, and Python API frontends backed by one core engine
Quick Example
shruggie-indexer index path/to/library --inplace
This writes v4 per-item outputs beside indexed content:
movie.mkv_idx.jsonmovie.mkv.info.json_idx.jsonvideos_idxd.json
If sidecar detection is enabled (default), sidecar-like entries may include:
"relationships": [
{
"target_id": "yABC...",
"type": "json_metadata",
"rule": "yt-dlp-info",
"rule_source": "builtin",
"confidence": 3,
"predicates": []
}
]