CLI Reference

Complete command-line interface reference

fusillade run

Execute a load test script

fusillade run <script> [options]

Basic Options

-w, --workers <N>         Override concurrent workers

-d, --duration <D>         Override test duration

--iterations <N>           Fixed number of iterations (then exit)

--config <FILE>             Use YAML/JSON config file

--warmup <URL>              URL for connection pool warmup

Output Options

--headless                 No TUI (for CI/CD)

--json                     Output NDJSON to stdout

--export-json <FILE>       Save summary to JSON file

--export-html <FILE>       Save summary to HTML file

--out <CONFIG>             Output destination:

otlp=URL       Export to OpenTelemetry endpoint

csv=FILE       Export to CSV file

junit=FILE     Export to JUnit XML (CI/CD)

statsd=HOST:PORT   Export to StatsD/Datadog/Graphite

--log-level <LEVEL>        Set log level (error, warn, info, debug)

--log-filter <FILTER>      Filter logs (e.g., scenario=login)

--dry-run                  Show execution plan without running

HTTP Options

--insecure                 Skip TLS certificate verification

--max-redirects <N>        Max redirects to follow (0 to disable)

--user-agent <STRING>      Default User-Agent header

Threshold Options

--threshold <EXPR>         Add threshold (repeatable)

--abort-on-fail            Abort if threshold breached

Memory Options

--response-sink            Discard response bodies

--no-endpoint-tracking     Disable per-endpoint metrics

--no-memory-check          Disable pre-flight memory warning

--memory-safe              Throttle spawning if memory is high

Metrics Streaming

--metrics-url <URL>        Stream metrics to URL

--metrics-auth <HDR>       Auth header for metrics

Cloud Options

--cloud                    Run on Fusillade Cloud

--region <REGION>          Cloud region (default: us-east-1)

Chaos Options

--jitter <DURATION>        Add artificial latency

--drop <RATE>              Drop probability (0.0-1.0)

Other Options

-i, --interactive          Enable interactive control

--watch                    Watch & re-run on file changes

--save-history             Save results to local database

--capture-errors [FILE]    Capture failed requests for replay

--estimate-cost [LIMIT]    Estimate bandwidth costs

Other Commands

fusillade init [-o <file>] [--config]

Create starter test script (and optional config file)

fusillade validate <script> [-c <config>]

Validate script without running (check syntax, config)

fusillade schema -o config.json

Generate JSON Schema for config validation

fusillade worker --listen <addr>

Start a distributed worker node

fusillade controller --listen <addr>

Start a distributed controller node

fusillade record -o <file.js> -p <port>

Start HTTP proxy to record traffic (default port: 8085)

fusillade convert --input <file> --output <file.js>

Convert HAR file or OpenAPI spec to Fusillade scenario

Accepts .har, .yaml, .yml, and .json files. YAML/YML files are treated as OpenAPI specs. JSON files are auto-detected (HAR if contains "log" key, otherwise OpenAPI).

fusillade replay <errors.json> [--parallel]

Re-execute failed requests from error log

fusillade export <errors.json> --format curl

Export failed requests as cURL commands

fusillade compare <baseline.json> <current.json>

Compare two test runs to identify regressions

fusillade history [--show <id>] [--limit <n>]

View test run history from local database

fusillade completion <shell>

Generate shell completions (bash, zsh, fish, powershell)

fusillade login <token> | fusillade whoami | fusillade logout

Manage Fusillade Cloud authentication

fusillade status

Show version and status information

fusillade exec <script>

Execute a JavaScript snippet directly (for debugging)

Terminal TUI

Fusillade renders a live full-screen terminal dashboard by default. Use --headless to disable it for CI/CD.

p - Toggle pause/resume

+ / = - Increase workers by 10

- - Decrease workers by 10 (minimum 1)

r - Enter ramp mode (type target worker count)

t - Enter tag mode (type key=value)

s - Stop test (graceful shutdown)

q / Esc - Quit (stops test and exits)

Up/Down - Scroll the endpoints table

Ctrl+C - Force quit

Interactive Control Mode

Use -i or --interactive for real-time test adjustments.

$ fusillade run test.js -i

# During test execution:
# Press 'p' to pause/resume
# Press '+' to add 10 workers
# Press '-' to remove 10 workers
# Press 'r' then type number to ramp to specific worker count
# Press 's' to stop gracefully

Headless Interactive Commands

Combine --headless --interactive for text-based control via stdin:

ramp <N> - Scale workers to N (alias: scale)

pause - Pause all worker execution

resume - Resume execution (alias: unpause)

tag <key>=<val> - Inject custom tag into metrics

status - Print current stats (alias: stats)

stop - Graceful shutdown (aliases: quit, exit)

Examples

# Basic test

$ fusillade run test.js

# Override workers and duration

$ fusillade run test.js -w 50 -d 1m

# Use config file

$ fusillade run test.js --config config/stress-test.yaml

# Export to multiple formats

$ fusillade run test.js --export-json results.json --export-html report.html

# Export to StatsD

$ fusillade run test.js --out statsd=localhost:8125

# Skip TLS verification (self-signed certs)

$ fusillade run test.js --insecure

# CI/CD mode with thresholds

$ fusillade run test.js --headless --abort-on-fail --threshold "http_req_duration:p95<500"

# Memory-safe high concurrency

$ fusillade run test.js -w 100000 --memory-safe --response-sink

# Dry run (show plan without executing)

$ fusillade run test.js --dry-run

# Filter logs to specific scenario

$ fusillade run test.js --log-filter scenario=checkout

# Convert OpenAPI spec to test script

$ fusillade convert --input api-spec.yaml --output test.js