Installation

peel is a single statically-linked binary. It has no runtime dependencies beyond a working libc, and on Linux a 5.6+ kernel for the io_uring fast paths. Older kernels fall back automatically.

From source (Cargo)

The currently-supported route. The crate name on crates.io is peel-rs. The installed binary is peel.

cargo install peel-rs --locked

The MSRV is pinned in rust-toolchain.toml; a recent stable Rust (1.93+) is sufficient.

Building from a checkout

git clone https://github.com/agouin/peel
cd peel
cargo build --release
./target/release/peel --help

Cargo features

FeatureDefaultWhat it enables
raronRAR5 and legacy RAR3/RAR4 decoders. When disabled, the binary still registers .rar against a diagnostic-only factory so the user sees compiled without the 'rar' feature instead of unknown format.

To drop the RAR module entirely (shrinks the binary; useful when .rar inputs are not expected):

cargo install peel-rs --locked --no-default-features

From a release binary

Pre-built binaries for Linux (x86_64, aarch64) and macOS (x86_64, aarch64) are attached to every GitHub release:

https://github.com/agouin/peel/releases

# Linux x86_64 example. Substitute your platform's triple.
curl -L https://github.com/agouin/peel/releases/latest/download/peel-x86_64-unknown-linux-gnu.tar.gz \
  | tar -xz -C /usr/local/bin peel
peel --version

Docker

docker run --rm -v "$PWD/out:/out" ghcr.io/agouin/peel \
  https://example.com/dataset.tar.zst -o /out/

The image is a FROM scratch build with the static peel binary plus a recent CA bundle (no shell, no package manager). See the Kubernetes init container example for usage inside a Pod.

Verifying the install

peel --version
peel --help | head

To confirm which file-IO backend peel selects at runtime on Linux, run any command with RUST_LOG=info and look for the selected file IO backend = … line:

RUST_LOG=info peel https://example.com/x.tar.zst -o ./out/ 2>&1 | head -5

See Performance and tuning for what each backend means.