Skip to main content

CLI Reference

Live --help on each binary is authoritative. The repository regenerates a command dump with cargo xtask render-cli-help into docs/CLI.md for the unified dispatcher, modality clients, prompts, strategic and mock server. If this page and --help disagree, trust --help.


Entry points​

Binary / subcommandRole
metrum-ai-bench-cliUnified dispatcher (llm, vlm, asr, imagegen, prompts, selftest)
metrum-ai-bench-cli-llmLLM modality client
metrum-ai-bench-cli-vlmVLM modality client
metrum-ai-bench-cli-asrASR modality client
metrum-ai-bench-cli-imagegenImage generation client
metrum-ai-bench-cli-promptsPrompt-library mix extractor
metrum-ai-bench-cli-strategicSweeps, sessions, exports (separate binary, not a unified subcommand)
metrum-ai-bench-cli-mock-serverDeterministic local mock for strategic fixtures
metrum-ai-bench-cli --help
metrum-ai-bench-cli-llm --help
metrum-ai-bench-cli-strategic --help

Print version only (where supported):

metrum-ai-bench-cli-llm --version-only

LLM required options (typical)​

metrum-ai-bench-cli-llm
--scenario <SCENARIO>
--num-requests <N>
--concurrency <N>
--prompts <PATH|URL>
--mode <chat|completion>
--model <MODEL>
--data-log <PATH>
--max-tokens <N>

Plus --url or --endpoints-file (mutually exclusive with the single-URL / API-key pair patterns described in --help).


Shared load flags (common)​

FlagPurpose
--urlSingle endpoint URL
--endpoints-fileMulti-endpoint YAML (curl-style); mutually exclusive with --url / --api-key
--api-keyBearer / API key for the single-URL path
--num-requestsRequests to send (at least 1)
--concurrencyConcurrent requests (at least 1)
--warmup-requestsWarmup count (excluded from measured distributions)
--seedDeterminism for scheduling / cycling
--request-rateOpen-loop rate
--arrivalpoisson, constant, or burst
--max-concurrencyOutstanding-work cap
--sloRepeatable thresholds, e.g. ttft=250ms, e2e=2s
--streamingStream responses (needed for TTFT)
--ttft-fallback first-tokenDeprecated redundant alias for the first-any default; conflicts with first-byte inference
--allow-missing-ttftLLM/VLM: relax only the missing-TTFT audit; strict error gates still apply
--infer-ttft-from-first-byteLLM/VLM: approximate missing TTFT from HTTP response headers, not a token
--tokenizerPath to tokenizer.json (requires Cargo feature tokenizer; not in GitHub Release builds)
--log-levelerror/warn/info/debug/trace on llm/vlm (default warn) and asr (default info); not on imagegen
--data-logJSONL output path; append is the default
--data-log-modeappend, refuse-existing, overwrite, or new-dir
--strict-reasoning-truncationTreat unanswered reasoning-only length truncations as errors and exit nonzero
--ci-safetyEnable strict reasoning truncation and fail automated runs on errors or partial results
--extra-body-jsonObject merged into supported request bodies; top-level null removes a key and non-object JSON is rejected
--ndjsonTagged telemetry NDJSON path (telemetry.v3)
--telemetryPrometheus scrape YAML; requires --ndjson
--require-telemetryAbort after consecutive scrape failures
--require-telemetry-failuresConsecutive failures before --require-telemetry aborts (default 3)
--runsSequential independent runs + bootstrap aggregate (unified entry)
--sut / --require-sut / --redact-hostnamePublication and privacy controls
--ntp-checkOpt-in NTP offset recording (does not hard-fail)
--insecure / --ca-certTLS overrides (use only when you intend them)

Prompt extractor (high-signal flags)​

FlagPurpose
--revisionDataset commit SHA
--configsample / full
--count / --count-slackPreferred size and slack
--isl-target / --osl-targetLength targets
--isl-unit / --osl-unittokens or words
--isl-stat / --osl-statmean or median
--isl-tolerance / --osl-toleranceAbsolute tolerances
--output / --reportMix JSONL and report JSON

Strategic (high-signal flags)​

FlagPurpose
--sweep / --sweep-byStage list and axis (concurrency / rate)
--requests-per-stageRequests per sweep stage
--ttft-fallback first-token / --allow-missing-ttftStreaming chat/VLM fallback or missing-TTFT audit opt-in; request errors remain errors
--ndjsonTagged telemetry NDJSON path
--telemetryPrometheus scrape YAML
--require-telemetryAbort after consecutive scrape failures
--metrics-urlLegacy engine metrics scrape (desugars when --ndjson is set)
--html / --csv / --mlperf-dirExports
--mlperf-scenarioserver or offline-style scenario name per --help
--kindChat default, or embeddings / rerank
--json-schema / --toolsValidity checkers
--slo e2e=…Goodput thresholds: e2e= / ttft= / tpot= (seconds, streaming) and user_tps= (tok/s)
--otlp-endpointOTLP export (release builds include feature otlp)

Getting the full dump​

Live --help on each binary is always authoritative.

cargo xtask render-cli-help regenerates docs/CLI.md for the unified dispatcher, modality binaries, prompts, strategic, and mock-server. Live --help on each binary remains authoritative.

# from a checkout (after cargo build --bins)
cargo xtask render-cli-help

Or inspect docs/CLI.md in the repository for the last generated dump.