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 gracefullyHeadless 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