CLI Reference
Install
imferno is a native Rust binary — fast, offline, no runtime. Install via Cargo or npm:
# Via Cargo (native Rust binary)
cargo install imferno
# Via npm (prebuilt binaries for all platforms)
npm install -g imferno
# Or run without installing
npx imferno@latest validate ./my-package
imferno validate
Validate an IMF package against SMPTE ST-2067.
imferno validate <PATH_OR_URI> [OPTIONS]
The argument accepts a local filesystem path, a file:// URI, or an
s3://bucket/prefix/ URI. Bare paths are normalised to file://. The
prebuilt binaries (npm, GitHub Releases) include S3 support out of the
box; cargo install imferno defaults to FS-only — pass
--features aws-s3 to opt in.
imferno validate ./my-imp
imferno validate file:///abs/path/to/my-imp
imferno validate s3://my-bucket/path/to/imp/
Examples
# Basic validation
imferno validate ./my-imp
# Markdown report — embeddable in PRs, Slack, Notion
imferno validate ./my-imp --format markdown
# CSV — one row per issue, importable into Excel or dashboards
imferno validate ./my-imp --format csv
# JSON — full ValidationResult (package + validation)
imferno validate ./my-imp --format json --exit-zero
# Skip hash verification for faster validation
imferno validate ./my-imp --skip-hashes
# Hash with 16 concurrent files (useful for network storage)
imferno validate ./my-imp --hash-concurrency 16
# Override rule severity inline
imferno validate ./my-imp --rule SegmentDuration=off --rule FileNotFound=critical
# Force specific spec versions
imferno validate ./my-imp --core-spec v2020 --app2e-spec v2023
# XML-only mode (skip disk I/O — useful for remote filesystems)
imferno validate ./my-imp --skip-disk-checks
# Custom rules config
imferno validate ./my-imp --rules-config rules.json
# S3 input — uses the default AWS credential chain
imferno validate s3://my-bucket/path/to/imp/
S3 support
The prebuilt CLI binaries (npm install -g imferno and the GitHub Release
binaries) include S3 support out of the box. cargo install imferno
defaults to FS-only; opt in with:
cargo install imferno --features aws-s3
The S3 backend uses the default AWS credential chain:
AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY / AWS_SESSION_TOKEN
~/.aws/credentials profile (AWS_PROFILE to pick one)
- EC2 / ECS / EKS instance metadata service (IMDSv2)
For S3-compatible endpoints (MinIO, R2):
AWS_ENDPOINT_URL_S3=https://my-r2-endpoint.example.com
AWS_REGION=auto
imferno validate s3://my-bucket/path/to/imp/
Only XML manifest files (ASSETMAP.xml, PKL_*.xml, CPL_*.xml,
VOLINDEX.xml) are fetched over the network. MXF essence files are
not downloaded.
imferno cpl
Show detailed CPL information.
imferno cpl <PATH> [OPTIONS]
Examples
imferno cpl ./my-imp
imferno cpl ./my-imp --uuid urn:uuid:abcd1234-...
Exit codes
Rules config
Create a rules.json to override severity levels:
{
"ST2067-2:2020:8.3/FileNotFound": "critical",
"ST2067-21:2023:7.1/AppIdMismatch": "off"
}
See Configuration for details on available severities and typed code constants.