Rust-native / local-first / v0.1.1

Metadata that can
show its work.

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.

CAPABILITY SNAPSHOTLIVE
23registered
format families
readbounded
outputtyped
writevalidated
schemav1
Rust 1.95+MITCLI + API

01 / SEE THE WORKFLOW

Start with the file.
Keep the evidence.

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.

metra-demo.mp4Download MP4 ↗

02 / THE TOOLKIT

Four ways to use Metra.

A

Inspect

Detect by signature, walk bounded metadata regions, and keep typed values and warnings separate.

metra --json photo.jpg
B

Change

Use set, delete, or copy where a tested writer can preserve layout and validate the result.

metra --set KEY=VALUE file
C

Create

Generate bounded metadata-oriented seeds for fixtures, pipelines, and repeatable tests.

metra --create-png Comment=... out.png
D

Scale

Run deterministic batches with bounded workers, streaming output, cancellation, and safety budgets.

metra --jsonl --jobs 4 -r photos/

03 / FORMAT SURFACE

Broad readers.
Narrow promises.

Metra exposes support as a capability matrix instead of turning detection into an implied compatibility claim.

Read the compatibility matrix ↗
IMAGESJPEG · TIFF · PNG · WebP · GIF · SVG · PSD
RAWDNG · CR3 · RAF · MRW · CRW · X3F
AUDIOWAV · RF64 · BW64 · FLAC · Ogg · MP3
MEDIAAVI · MKV · WebM · MP4 · MOV · M4A · HEIF · AVIF
DOCUMENTSPDF · XMP · ICC

04 / PROJECT LEDGER

Trust the boundary.

The status is intentionally split into what works, what is bounded, and what still needs evidence.

Working

  • Typed metadata model and stable identifiers
  • Defensive parsing with resource limits
  • Validated seeds and narrow atomic rewrites
  • Text, JSON, JSONL, CSV, TOML, YAML

Experimental

  • Selected MakerNote families
  • Proprietary RAW readers remain read-only
  • Writers often require existing fixed storage
  • Opt-in corpus differential harness

Planned

  • More real-world corpus evidence
  • Deeper tags and media structures
  • Additional writer and creator seams
  • Broader performance baselines

05 / UNDER THE HOOD

A small core.
Clear contracts.

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

Install in one
small command.

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 metra
$metra --json photo.jpg