Skip to content

Install

Docker (recommended — multi-arch linux/amd64 + linux/arm64, AVIF included; both registries rebuild on every main push, so pin a version tag in production):

Terminal window
docker run -p 8081:8081 -v $PWD/images:/images:ro ghcr.io/oximg/oximg:latest
# or: docker.io/oximg/oximg:latest
curl "localhost:8081/resize/500/500/photo.jpg" -o out.jpg

Prebuilt binaries (GitHub Releases, v0.6.0+; Linux x86_64/aarch64 and macOS arm64; JPEG/PNG/WebP, no AVIF) — suited to CI asset pipelines where a Docker pull or a source build is too slow. Assets are oximg-<tag>-<target>.tar.gz with a .sha256 alongside; each is smoke-tested before upload. Linux builds link glibc >= 2.39 with libstdc++ static.

Homebrew (builds the latest release from source; JPEG/PNG/WebP):

Terminal window
brew install oximg/tap/oximg

Cargo (crates.io; needs cmake and nasm on the build machine — see Development; add --features avif if pkg-config is installed and can see SVT-AV1 >= 4.1 and dav1d):

Terminal window
cargo install oximg

From source (build prerequisites under Development; the Docker build is self-contained — it compiles a pinned SVT-AV1 itself):

Terminal window
cargo build --release # JPEG, PNG, WebP
cargo build --release --features avif # + AVIF (needs SVT-AV1 >= 4.1, dav1d)
IMAGES_DIR=./images PORT=8081 ./target/release/oximg # = oximg serve

Release channels lag main: crates.io and the brew formula ship the last tagged release, while the Docker images rebuild on every main push. The npm package @oximg/oximg is a name reservation that points here.