Installation
Run fallow with npx and no install, or install it with npm, pnpm, yarn, cargo, Docker, or a prebuilt binary. Binaries exist for macOS, Linux, and Windows.
To try fallow without an install, run it with npx:
npx fallow
If you use fallow often, install it globally.
The npm package has prebuilt binaries for macOS, Linux, and Windows. You do not need a Rust toolchain.
npm install -g fallowThe npm package uses optionalDependencies to download the correct binary for your platform automatically.
pnpm add -g fallowyarn global add fallowUse this option if you already have a Rust toolchain.
cargo install fallow-cliUse Docker to run fallow without Node.js, npm, or Rust on the host.
docker build -t fallow:local https://github.com/fallow-rs/fallow.git#main
docker run --rm -v "$PWD:/workspace" --user "$(id -u):$(id -g)" fallow:local audit --format json --quietThe image runs fallow once as a CLI against /workspace. The --user mapping has two effects:
- Your host user owns the
.fallow/caches and the generated reports. fallow auditcan detect the git base. Git's dubious-ownership guard does not block the mounted repository.
The image includes git, Node.js, npm, and Corepack. Fallow does not install your project dependencies automatically.
To use Compose, build the image first. Then copy examples/docker/compose.yaml into the target project and run:
docker compose run --rm fallow audit --format json --quietfallow is a one-shot CLI, not a long-running service. In Portainer or other stack tools, use a one-shot run command, or override the command for an interactive shell. Do not deploy it as an always-on service. The container exit code is the fallow exit code, so CI can gate directly on the result of docker run or docker compose run.
On Linux and WSL, the commands above work as written. On Windows outside WSL, pass an absolute project path that Docker Desktop accepts, and keep /workspace as the mounted working directory.
For runtime coverage inventory in a container, pass the container path prefix. The inventory paths then match the paths that the runtime beacon reports:
docker run --rm -v "$PWD:/workspace" --user "$(id -u):$(id -g)" fallow:local coverage upload-inventory --path-prefix /workspace --format json --quietDownload a prebuilt binary from GitHub Releases.
| Target | Platform |
|---|---|
fallow-aarch64-apple-darwin.tar.gz | macOS Apple Silicon |
fallow-x86_64-apple-darwin.tar.gz | macOS Intel |
fallow-x86_64-unknown-linux-gnu.tar.gz | Linux x64 (glibc) |
fallow-aarch64-unknown-linux-gnu.tar.gz | Linux ARM64 (glibc) |
fallow-x86_64-unknown-linux-musl.tar.gz | Linux x64 (musl) |
fallow-aarch64-unknown-linux-musl.tar.gz | Linux ARM64 (musl) |
fallow-x86_64-pc-windows-msvc.zip | Windows x64 |
fallow-aarch64-pc-windows-msvc.zip | Windows ARM64 |
Verify
fallow --version
If the command prints a version number, fallow is installed.
Next step
Go to the Quick start and run your first analysis.