| title | Installation | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| description | Install fallow via npx, npm, pnpm, yarn, cargo, Docker, or a prebuilt binary. Binaries for macOS, Linux, and Windows. | ||||||||
| keywords |
|
||||||||
| icon | download |
The fastest way to try Fallow is to run it directly:
npx fallowIf you use Fallow often, install it globally.
Prebuilt binaries for macOS, Linux, and Windows. No Rust toolchain required.```bash
npm install -g fallow
```
<Tip>
The npm package uses `optionalDependencies` to download the correct platform binary automatically.
</Tip>
```bash
cargo install fallow-cli
```
```bash
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 --quiet
```
The image runs fallow as a one-shot CLI against `/workspace`. The `--user` mapping keeps `.fallow/` caches and generated reports owned by your host user, and it lets `fallow audit` use git base detection without Git's dubious-ownership guard blocking the mounted repository. The image includes git, Node.js, npm, and Corepack; fallow does not install your project dependencies automatically.
For Compose, copy [`examples/docker/compose.yaml`](https://github.com/fallow-rs/fallow/blob/main/examples/docker/compose.yaml) into the target project after building the image, then run:
```bash
docker compose run --rm fallow audit --format json --quiet
```
<Warning>
Fallow is a one-shot CLI, not a long-running service. In Portainer or other stack tools, use a one-shot run command instead of deploying it as an always-on service, or override the command for an interactive shell. Container exit codes are the fallow process exit codes, so CI can gate on the `docker run` or `docker compose run` result directly.
</Warning>
On Linux and WSL the commands above work as written. On Windows outside WSL, pass an absolute project path accepted by Docker Desktop and keep the mounted working directory at `/workspace`. For containerized runtime coverage inventory, pass the container path prefix so inventory paths match what the runtime beacon reports:
```bash
docker run --rm -v "$PWD:/workspace" --user "$(id -u):$(id -g)" fallow:local coverage upload-inventory --path-prefix /workspace --format json --quiet
```
| 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 --versionGo to the Quick start and run your first analysis.