Inspect
Detect by signature, walk bounded metadata regions, and keep typed values and warnings separate.
metra --json photo.jpg
Rust-native / local-first / v0.1.1
A defensive metadata toolkit and CLI for reading, validating, creating, comparing, and narrowly editing image, audio, document, and media containers.
No cloud upload. No hidden helper process. If a writer cannot prove the round trip, it refuses the edit.
01 / SEE THE WORKFLOW
A 49-second terminal walkthrough from the current binary: create small seeds, inspect canonical tags, rewrite a PNG timestamp, stream JSON Lines, and inspect the capability contract.
02 / THE TOOLKIT
Detect by signature, walk bounded metadata regions, and keep typed values and warnings separate.
metra --json photo.jpg
Use set, delete, or copy where a tested writer can preserve layout and validate the result.
metra --set KEY=VALUE file
Generate bounded metadata-oriented seeds for fixtures, pipelines, and repeatable tests.
metra --create-png Comment=... out.png
Run deterministic batches with bounded workers, streaming output, cancellation, and safety budgets.
metra --jsonl --jobs 4 -r photos/
03 / FORMAT SURFACE
Metra exposes support as a capability matrix instead of turning detection into an implied compatibility claim.
Read the compatibility matrix ↗04 / PROJECT LEDGER
The status is intentionally split into what works, what is bounded, and what still needs evidence.
05 / UNDER THE HOOD
The CLI is a thin consumer. The public Rust API, format registry, parser limits, and writers share the same evidence model.
Read the architecture notes ↗CLI or Rust API │ ▼ detection + format registry │ ▼ bounded readers → typed model │ ├── JSON / JSONL / CSV / TOML / YAML │ └── set / delete / copy │ validate → atomic replace
06 / GET STARTED
Metra is currently distributed as a source release for Rust 1.95+ on Linux, macOS, and Windows.
Read the quick start ↗cargo install --git https://github.com/OthmaneBlial/Metra metrametra --json photo.jpg