truss
truss is an image transformation tool with a shared Rust core for a CLI, an HTTP server, and a browser/WASM build.
Use the CLI for local files and shell pipelines, run the server behind a CDN or reverse proxy, process files in the browser with @nao1215/truss-wasm, or sign public URLs from Node.js with @nao1215/truss-url-signer.
Try the WASM demo in your browser - no install, no upload, runs 100 % client-side.
Start Here
| If you want to... | Start with | Read next | |-------------------|------------|-----------| | Convert local files from the shell | brew install nao1215/tap/truss or cargo install truss-image, then truss photo.png -o photo.jpg | CLI, Commands | | Run an HTTP image server | TRUSSBEARERTOKEN=changeme truss serve --bind 0.0.0.0:8080 --storage-root ./images | HTTP Server, API Reference, Deployment Guide | | Process files in a browser app | npm install @nao1215/truss-wasm | WASM, WASM Integration | | Generate signed public URLs from Node.js | npm install @nao1215/truss-url-signer | TypeScript URL Signing, Signed URL Specification |
Why truss?
- One Rust core across the CLI, the HTTP server, and the browser/WASM build.
- Signed URLs, SSRF protections, and SVG sanitization are built in.
- Supports JPEG, PNG, WebP, AVIF, BMP, TIFF, and SVG, plus GIF as a decode-only input.
- Runs on Linux, macOS, and Windows.
- CLI behavior is covered by atago, and the HTTP API by runn.
Installation
CLI
#### Homebrew
brew install nao1215/tap/truss#### Arch Linux (AUR)
yay -S truss-bin # or: paru -S truss-bintruss-bin is community-maintained and installs the release binary.
#### Cargo
cargo install truss-imageNeed S3, GCS, or Azure storage backend support at install time? See the Deployment Guide.