Installation

Pick the installer that fits your platform. Dalfox ships as a single self-contained binary, with no runtime to manage.

Homebrew (macOS & Linux)

brew install dalfox

The Homebrew formula tracks the latest stable release. Source: formulae.brew.sh/formula/dalfox.

The project's own tap builds the same release from source (so it pulls in Rust) and also installs the man page and shell completions:

brew install hahwul/dalfox/dalfox

Snap (Ubuntu / Linux)

sudo snap install dalfox

Arch Linux (AUR)

Using an AUR helper (recommended):

yay -S dalfox
# or
paru -S dalfox

Manual build from the AUR package:

git clone https://aur.archlinux.org/dalfox.git
cd dalfox
makepkg -si

Nix & NixOS

# Run once without installing
nix-shell -p dalfox

# Nix flakes: run the latest from GitHub
nix run github:hahwul/dalfox -- scan https://example.com

# Install into your profile
nix profile install github:hahwul/dalfox

Dalfox lives in nixpkgs. The newest releases land in unstable first, so the flake above is ahead of nixpkgs between releases.

The flake builds for x86_64-linux, aarch64-linux and aarch64-darwin. Intel macOS is not among them because nixpkgs unstable dropped x86_64-darwin — use the macos-x86_64 release archive below instead.

To build Dalfox against your own nixpkgs instead of the one this flake pins, use the overlay. In your system flake:

# flake.nix
{
  inputs.dalfox.url = "github:hahwul/dalfox";

  outputs = { self, nixpkgs, dalfox, ... }@inputs: {
    nixosConfigurations.myhost = nixpkgs.lib.nixosSystem {
      specialArgs = { inherit inputs; };
      modules = [ ./configuration.nix ];
    };
  };
}

Then, in a module that receives inputs:

# configuration.nix
{ pkgs, inputs, ... }:
{
  nixpkgs.overlays = [ inputs.dalfox.overlays.default ];
  environment.systemPackages = [ pkgs.dalfox ];
}

The flake also exposes a development shell for working on Dalfox itself — the Rust toolchain, just and the Crystal runtime the test harnesses need, but not the dalfox binary:

git clone https://github.com/hahwul/dalfox && cd dalfox
nix develop

With direnv installed, direnv allow picks the same shell up automatically from the repo's .envrc.

Docker

Multi-arch images (linux/amd64, linux/arm64) are published to Docker Hub and GitHub Container Registry. The binary sits at /app/dalfox and the image has no entrypoint, so name it in the command:

docker run --rm hahwul/dalfox:latest ./dalfox scan https://example.com

# or from GHCR
docker run --rm ghcr.io/hahwul/dalfox:latest ./dalfox scan https://example.com

A bare dalfox fails: /app is not on the image's PATH. To scan a URL list, mount it into the container, or pipe it in with -i:

docker run --rm -v "$PWD:/data" hahwul/dalfox:latest ./dalfox scan /data/urls.txt
cat urls.txt | docker run --rm -i hahwul/dalfox:latest ./dalfox scan

latest is the newest release. Each release is also tagged v<major>.<minor>.<patch>, and Docker Hub adds v<major>.<minor> and v<major>. ghcr.io/hahwul/dalfox:main tracks the main branch.

Cargo (from crates.io)

cargo install dalfox

Requires Rust 1.93 or newer (the crate's rust-version). Builds into ~/.cargo/bin/dalfox.

Prebuilt binaries

Grab a release archive for your OS/arch from github.com/hahwul/dalfox/releases, extract it, and drop the binary somewhere on your PATH (/usr/local/bin, ~/.local/bin, etc.).

We publish the following per release:

  • macos-x86_64, macos-aarch64
  • linux-x86_64 (glibc), linux-x86_64-musl (statically linked, recommended for Alpine, Docker, and CI)
  • linux-aarch64 (glibc), linux-aarch64-musl (statically linked)
  • windows-x86_64

Archives are named dalfox-v<version>-<platform>: .tar.gz on macOS and Linux, .zip on Windows. Linux also gets .deb and .rpm packages for both architectures, every archive and package ships with a .sha256 alongside a combined checksum.txt, and each release carries a CycloneDX SBOM (dalfox.cdx.xml).

Build from source

git clone https://github.com/hahwul/dalfox
cd dalfox
cargo build --release
# Binary at ./target/release/dalfox

You'll need Rust 1.93 or newer (2024 edition). Install with rustup if you don't have it.

Verify

dalfox --version

You should see a single line such as dalfox 3.2.3.

Shell completions

The hahwul/dalfox Homebrew tap, the AUR package, the .deb / .rpm packages and the Nix flake install bash, zsh and fish completions (and the dalfox(1) man page) for you — nothing else to do.

Installed another way (the core brew install dalfox formula, Snap, Docker, Cargo, a release archive, a source build)? Generate them yourself:

dalfox completion bash > /etc/bash_completion.d/dalfox
dalfox completion zsh > "${fpath[1]}/_dalfox"
dalfox completion fish > ~/.config/fish/completions/dalfox.fish

powershell and elvish are supported too — see the CLI reference.

Getting help

Dalfox uses clap, so help is always accessible:

dalfox --help
dalfox scan --help

Next steps

Run your first scan in the Quick Start. If you want to tune defaults before scanning, jump to Configuration.

ESC