Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/0xricksanchez/AFL_Runner/llms.txt

Use this file to discover all available pages before exploring further.

AFL Runner ships optional shell completion scripts for bash and zsh that give you tab completion for all subcommands and flags. The zsh and bash completions also include dynamic completion for aflr kill: pressing <TAB> after the subcommand queries the live list of tmux sessions, so you never have to remember or copy-paste session names.
Shell completion is an optional compile-time feature. The completion feature flag must be enabled when building or installing aflr — the standard cargo install afl_runner release binary does not include it. See Step 1 for the correct install commands.
1

Build aflr with the completion feature

The completion scripts are generated by a separate binary (generate_completions) that is only compiled when the completion feature is enabled.
cargo install afl_runner --features completion
After running generate_completions, a completions/ directory is created in your working directory (or $OUT_DIR if set) containing:
completions/
├── aflr_dynamic.bash   ← dynamic completion (tmux session names for kill)
├── aflr_dynamic.zsh    ← dynamic completion (tmux session names for kill)
├── aflr.bash           ← static clap-generated bash completion
├── _aflr               ← static clap-generated zsh completion
└── aflr.fish           ← static clap-generated fish completion
The aflr_dynamic.* files are the recommended ones to install — they include both subcommand/flag completion and the live session-name lookup.
2

Install completion for ZSH

# Add to your ~/.zshrc for persistence
source /path/to/completions/aflr_dynamic.zsh
Option 2 is preferred because it integrates with zsh’s native completion system. After editing ~/.zshrc, reload the shell:
source ~/.zshrc
# or start a new terminal session
3

Install completion for Bash

Add the following line to your ~/.bashrc:
source /path/to/completions/aflr_dynamic.bash
Then reload:
source ~/.bashrc
The bash completion script registers the _aflr_kill_completion function and binds it to the aflr command via complete -F.
4

Use tab completion

Once installed, <TAB> works for all AFL Runner subcommands and their flags:
# Complete subcommands
aflr <TAB>
# → gen  run  cov  tui  kill  add-seed

# Complete flags for a subcommand
aflr run --<TAB>
# → --target  --san-target  --cmpl-target  --cmpc-target
#   --input-dir  --output-dir  --runners  --session-name
#   --session-runner  --tui  --detached  --dry-run  ...

# Complete active tmux session names for kill
aflr kill <TAB>
# → xmllint_482931  my_campaign  fuzz_openssl
The kill completion dynamically runs tmux ls and presents only currently active sessions — so the list always reflects what is actually running.
The dynamic kill completion only shows tmux sessions. If you use --session-runner screen, you will need to type the session name manually or look it up with screen -ls.
When managing multiple concurrent campaigns, the live session-name completion for aflr kill is particularly valuable. Instead of running tmux ls and copy-pasting a hash-suffixed name like xmllint_482931, a single <TAB> after aflr kill shows all active sessions and lets you select the right one immediately.

Build docs developers (and LLMs) love