Custom NXS extend the official set without changing the fuzzer core. They must obey CONTRACT.md.

Templates

Shipped under nxs/templates/: rust, c, go, python. Each includes nxs.toml and a minimal entrypoint.

cp -r nxs/templates/rust ~/.nexsiz/nxs/src/my-chain
cd ~/.nexsiz/nxs/src/my-chain
# edit src/main.rs + nxs.toml (stable id, categories, events)
cargo build --release
mkdir -p ~/.nexsiz/nxs/bin
cp target/release/nxs-* ~/.nexsiz/nxs/bin/
chmod +x ~/.nexsiz/nxs/bin/nxs-*

nxs.toml skeleton

id = "custom/my-chain"
name = "my-chain"
version = "0.1.0"
categories = ["custom"]
events = ["crash", "hang", "interesting"]
description = "Operator-specific deepening logic."
language = "rust"
entry = "bin/nxs-my-chain"

[args]
# script-specific defaults

Checklist

  • Executable (chmod +x / .exe)
  • Support --crash, --target, --meta, --out, --help, --version
  • Honour exit codes 0–4; use ≥10 only for documented script-specific success
  • Ignore unknown meta fields
  • Do not block on stdin without reason
  • Stable id (category/name)
  • Recommended: report.json when --out given; -v stderr log; internal timeout

Wire into Nexsiz

# by concrete id
nexsiz -h 10.0.0.5 -p 21 -m ftp --nxs custom/my-chain -v

# via search path
export NEXSIZ_NXS_PATH=$HOME/.nexsiz/nxs/bin
nexsiz --nxs custom/my-chain --nxs-list

Shared helpers: nxs-lib (Args, Meta, Report, ExitCode) for official Rust NXS — templates may use stdlib-only or link nxs-lib depending on layout.

Authorised use

Custom NXS that probe authentication or chain behaviour must only run against systems you are authorised to test. See Authorised Use.