$ pllm --help usage: pllm [-h] [--format {human,json,jsonl}] [--quiet] [--no-color] [--no-input] [--dry-run] [--version] COMMAND ... Inspect PLLM configuration, run benchmarks, and operate private inference positional arguments: COMMAND config inspect or export public configuration components inspect built-in component descriptors gateway run the trusted local Responses API gateway serve run an inference or preparation role benchmark run reproducible local benchmarks dev development tools options: -h, --help show this help message and exit --format {human,json,jsonl} result format (default: human) --quiet suppress non-error diagnostics --no-color disable colored output --no-input fail instead of prompting --dry-run report work without persistent writes or service startup --version show program's version number and exit $ pllm config --help usage: pllm config [-h] [--format {human,json,jsonl}] [--quiet] [--no-color] [--no-input] [--dry-run] COMMAND ... positional arguments: COMMAND show show validated public configuration export export strict public JSON or YAML options: -h, --help show this help message and exit --format {human,json,jsonl} result format (default: human) --quiet suppress non-error diagnostics --no-color disable colored output --no-input fail instead of prompting --dry-run report work without persistent writes or service startup $ pllm components --help usage: pllm components [-h] [--format {human,json,jsonl}] [--quiet] [--no-color] [--no-input] [--dry-run] COMMAND ... positional arguments: COMMAND list list built-in component descriptors show show one component descriptor options: -h, --help show this help message and exit --format {human,json,jsonl} result format (default: human) --quiet suppress non-error diagnostics --no-color disable colored output --no-input fail instead of prompting --dry-run report work without persistent writes or service startup $ pllm gateway --help usage: pllm gateway [-h] [--format {human,json,jsonl}] [--quiet] [--no-color] [--no-input] [--dry-run] [--config CONFIG] [--host HOST] [--port PORT] [--api-key API_KEY] [--inference-url INFERENCE_URL] [--inference-key INFERENCE_KEY] [--preparation-url PREPARATION_URL] [--preparation-key PREPARATION_KEY] [--experiment TARGET] [--factory] [--trust-python] [--model MODEL] [--model-id MODEL_ID] [--local] [--transport {auto,http,websocket}] [--correlation-mode {bfv,local-test}] [--correlation-prefetch CORRELATION_PREFETCH] [--prepared-inventory-rows PREPARED_INVENTORY_ROWS] [--token-cache-size TOKEN_CACHE_SIZE] [--bundle-cache-mode {read-write,read-only,refresh,off}] [--bundle-cache-dir BUNDLE_CACHE_DIR] [--tenseal-path TENSEAL_PATH] [--timeout TIMEOUT] [--revision REVISION] [--hf-cache-dir HF_CACHE_DIR] [--local-files-only] [--weight-bits {4,8}] [--activation-bits {4,8}] options: -h, --help show this help message and exit --format {human,json,jsonl} result format (default: human) --quiet suppress non-error diagnostics --no-color disable colored output --no-input fail instead of prompting --dry-run report work without persistent writes or service startup --config CONFIG client TOML file --host HOST --port PORT --api-key API_KEY --inference-url INFERENCE_URL --inference-key INFERENCE_KEY --preparation-url PREPARATION_URL --preparation-key PREPARATION_KEY --experiment TARGET local Experiment .json/.yaml or explicit Python path.py:object/module:object --factory call the Python target as a zero-argument factory --trust-python allow import and execution of the explicit Python experiment target --model MODEL --model-id MODEL_ID --local co-locate both server roles locally --transport {auto,http,websocket} session transport --correlation-mode {bfv,local-test} --correlation-prefetch CORRELATION_PREFETCH --prepared-inventory-rows PREPARED_INVENTORY_ROWS --token-cache-size TOKEN_CACHE_SIZE --bundle-cache-mode {read-write,read-only,refresh,off} --bundle-cache-dir BUNDLE_CACHE_DIR --tenseal-path TENSEAL_PATH --timeout TIMEOUT --revision REVISION --hf-cache-dir HF_CACHE_DIR --local-files-only --weight-bits {4,8} --activation-bits {4,8} $ pllm serve --help usage: pllm serve [-h] [--format {human,json,jsonl}] [--quiet] [--no-color] [--no-input] [--dry-run] ROLE ... positional arguments: ROLE inference run the remote private-inference service preparation run the trusted preparation service options: -h, --help show this help message and exit --format {human,json,jsonl} result format (default: human) --quiet suppress non-error diagnostics --no-color disable colored output --no-input fail instead of prompting --dry-run report work without persistent writes or service startup $ pllm benchmark --help usage: pllm benchmark [-h] [--format {human,json,jsonl}] [--quiet] [--no-color] [--no-input] [--dry-run] COMMAND ... positional arguments: COMMAND run run the real client, preparation, and inference roles on loopback options: -h, --help show this help message and exit --format {human,json,jsonl} result format (default: human) --quiet suppress non-error diagnostics --no-color disable colored output --no-input fail instead of prompting --dry-run report work without persistent writes or service startup $ pllm dev --help usage: pllm dev [-h] [--format {human,json,jsonl}] [--quiet] [--no-color] [--no-input] [--dry-run] COMMAND ... positional arguments: COMMAND dashboard launch the local benchmark dashboard options: -h, --help show this help message and exit --format {human,json,jsonl} result format (default: human) --quiet suppress non-error diagnostics --no-color disable colored output --no-input fail instead of prompting --dry-run report work without persistent writes or service startup $ pllm config show --help usage: pllm config show [-h] [--format {human,json,jsonl}] [--quiet] [--no-color] [--no-input] [--dry-run] [--factory] [--trust-python] TARGET positional arguments: TARGET Experiment .json/.yaml or explicit Python path.py:object/module:object options: -h, --help show this help message and exit --format {human,json,jsonl} result format (default: human) --quiet suppress non-error diagnostics --no-color disable colored output --no-input fail instead of prompting --dry-run report work without persistent writes or service startup --factory call the Python target as a zero-argument factory --trust-python allow import and execution of the explicit Python target $ pllm config export --help usage: pllm config export [-h] [--format {human,json,jsonl}] [--quiet] [--no-color] [--no-input] [--dry-run] [--factory] [--trust-python] --output PATH [--force] TARGET positional arguments: TARGET Experiment .json/.yaml or explicit Python path.py:object/module:object options: -h, --help show this help message and exit --format {human,json,jsonl} result format (default: human) --quiet suppress non-error diagnostics --no-color disable colored output --no-input fail instead of prompting --dry-run report work without persistent writes or service startup --factory call the Python target as a zero-argument factory --trust-python allow import and execution of the explicit Python target --output PATH new output .json/.yaml path --force replace an existing output file $ pllm components list --help usage: pllm components list [-h] [--format {human,json,jsonl}] [--quiet] [--no-color] [--no-input] [--dry-run] options: -h, --help show this help message and exit --format {human,json,jsonl} result format (default: human) --quiet suppress non-error diagnostics --no-color disable colored output --no-input fail instead of prompting --dry-run report work without persistent writes or service startup $ pllm components show --help usage: pllm components show [-h] [--format {human,json,jsonl}] [--quiet] [--no-color] [--no-input] [--dry-run] COMPONENT positional arguments: COMPONENT component identity, for example pllm/cpu options: -h, --help show this help message and exit --format {human,json,jsonl} result format (default: human) --quiet suppress non-error diagnostics --no-color disable colored output --no-input fail instead of prompting --dry-run report work without persistent writes or service startup $ pllm serve inference --help usage: pllm serve inference [-h] [--format {human,json,jsonl}] [--quiet] [--no-color] [--no-input] [--dry-run] [--config CONFIG] [--experiment TARGET] [--factory] [--trust-python] [--privacy-mode {public,proprietary}] [--protocol {guarded,blinded,secure,direct}] [--host HOST] [--port PORT] [--inference-url INFERENCE_URL] [--push-timeout PUSH_TIMEOUT] [--model MODEL] [--model-id MODEL_ID] [--model-kind {huggingface,safetensors,vllm,mlx,mlx-lm}] [--revision REVISION] [--hf-cache-dir HF_CACHE_DIR] [--local-files-only] [--weight-bits {4,8}] [--activation-bits {4,8}] [--tenseal-path TENSEAL_PATH] [--max-batch-size MAX_BATCH_SIZE] [--max-wait-ms MAX_WAIT_MS] [--fixed-batch-wait] [--allow-insecure-local-correlations] [--engine-threads ENGINE_THREADS] [--native-library NATIVE_LIBRARY] [--compiled-cache-dir COMPILED_CACHE_DIR] [--streaming-threshold-elements STREAMING_THRESHOLD_ELEMENTS] [--quantization-chunk-rows QUANTIZATION_CHUNK_ROWS] [--verification-component {none,pllm/freivalds-verify/v1}] [--verification-target-failure-bits VERIFICATION_TARGET_FAILURE_BITS] [--guard-max-rows-per-request GUARD_MAX_ROWS_PER_REQUEST] [--guard-max-rows-per-stage GUARD_MAX_ROWS_PER_STAGE] [--guard-max-requests-per-minute GUARD_MAX_REQUESTS_PER_MINUTE] [--guard-output-dither GUARD_OUTPUT_DITHER] [--rendezvous-timeout RENDEZVOUS_TIMEOUT] [--rendezvous-capacity RENDEZVOUS_CAPACITY] [--rendezvous-max-bytes RENDEZVOUS_MAX_BYTES] [--prepared-session-capacity PREPARED_SESSION_CAPACITY] [--prepared-session-idle PREPARED_SESSION_IDLE] options: -h, --help show this help message and exit --format {human,json,jsonl} result format (default: human) --quiet suppress non-error diagnostics --no-color disable colored output --no-input fail instead of prompting --dry-run report work without persistent writes or service startup --config CONFIG JSON GatewayConfig file --experiment TARGET Experiment .json/.yaml or explicit Python path.py:object/module:object --factory call the Python target as a zero-argument factory --trust-python allow import and execution of the explicit Python experiment target --privacy-mode, --mode {public,proprietary} --protocol, --proprietary-protocol {guarded,blinded,secure,direct} --host HOST --port PORT --inference-url INFERENCE_URL --push-timeout PUSH_TIMEOUT --model MODEL --model-id MODEL_ID --model-kind {huggingface,safetensors,vllm,mlx,mlx-lm} --revision REVISION --hf-cache-dir HF_CACHE_DIR --local-files-only --weight-bits {4,8} --activation-bits {4,8} --tenseal-path TENSEAL_PATH --max-batch-size MAX_BATCH_SIZE --max-wait-ms MAX_WAIT_MS --fixed-batch-wait --allow-insecure-local-correlations --engine-threads ENGINE_THREADS --native-library NATIVE_LIBRARY --compiled-cache-dir COMPILED_CACHE_DIR --streaming-threshold-elements STREAMING_THRESHOLD_ELEMENTS --quantization-chunk-rows QUANTIZATION_CHUNK_ROWS --verification-component {none,pllm/freivalds-verify/v1} --verification-target-failure-bits VERIFICATION_TARGET_FAILURE_BITS --guard-max-rows-per-request GUARD_MAX_ROWS_PER_REQUEST --guard-max-rows-per-stage GUARD_MAX_ROWS_PER_STAGE --guard-max-requests-per-minute GUARD_MAX_REQUESTS_PER_MINUTE --guard-output-dither GUARD_OUTPUT_DITHER --rendezvous-timeout RENDEZVOUS_TIMEOUT --rendezvous-capacity RENDEZVOUS_CAPACITY --rendezvous-max-bytes RENDEZVOUS_MAX_BYTES --prepared-session-capacity PREPARED_SESSION_CAPACITY --prepared-session-idle PREPARED_SESSION_IDLE $ pllm serve preparation --help usage: pllm serve preparation [-h] [--format {human,json,jsonl}] [--quiet] [--no-color] [--no-input] [--dry-run] [--config CONFIG] [--experiment TARGET] [--factory] [--trust-python] [--privacy-mode {public,proprietary}] [--protocol {guarded,blinded,secure,direct}] [--host HOST] [--port PORT] [--inference-url INFERENCE_URL] [--push-timeout PUSH_TIMEOUT] [--model MODEL] [--model-id MODEL_ID] [--model-kind {huggingface,safetensors,vllm,mlx,mlx-lm}] [--revision REVISION] [--hf-cache-dir HF_CACHE_DIR] [--local-files-only] [--weight-bits {4,8}] [--activation-bits {4,8}] [--tenseal-path TENSEAL_PATH] [--max-batch-size MAX_BATCH_SIZE] [--max-wait-ms MAX_WAIT_MS] [--fixed-batch-wait] [--allow-insecure-local-correlations] [--engine-threads ENGINE_THREADS] [--native-library NATIVE_LIBRARY] [--compiled-cache-dir COMPILED_CACHE_DIR] [--streaming-threshold-elements STREAMING_THRESHOLD_ELEMENTS] [--quantization-chunk-rows QUANTIZATION_CHUNK_ROWS] [--verification-component {none,pllm/freivalds-verify/v1}] [--verification-target-failure-bits VERIFICATION_TARGET_FAILURE_BITS] [--guard-max-rows-per-request GUARD_MAX_ROWS_PER_REQUEST] [--guard-max-rows-per-stage GUARD_MAX_ROWS_PER_STAGE] [--guard-max-requests-per-minute GUARD_MAX_REQUESTS_PER_MINUTE] [--guard-output-dither GUARD_OUTPUT_DITHER] [--rendezvous-timeout RENDEZVOUS_TIMEOUT] [--rendezvous-capacity RENDEZVOUS_CAPACITY] [--rendezvous-max-bytes RENDEZVOUS_MAX_BYTES] [--prepared-session-capacity PREPARED_SESSION_CAPACITY] [--prepared-session-idle PREPARED_SESSION_IDLE] options: -h, --help show this help message and exit --format {human,json,jsonl} result format (default: human) --quiet suppress non-error diagnostics --no-color disable colored output --no-input fail instead of prompting --dry-run report work without persistent writes or service startup --config CONFIG JSON GatewayConfig file --experiment TARGET Experiment .json/.yaml or explicit Python path.py:object/module:object --factory call the Python target as a zero-argument factory --trust-python allow import and execution of the explicit Python experiment target --privacy-mode, --mode {public,proprietary} --protocol, --proprietary-protocol {guarded,blinded,secure,direct} --host HOST --port PORT --inference-url INFERENCE_URL --push-timeout PUSH_TIMEOUT --model MODEL --model-id MODEL_ID --model-kind {huggingface,safetensors,vllm,mlx,mlx-lm} --revision REVISION --hf-cache-dir HF_CACHE_DIR --local-files-only --weight-bits {4,8} --activation-bits {4,8} --tenseal-path TENSEAL_PATH --max-batch-size MAX_BATCH_SIZE --max-wait-ms MAX_WAIT_MS --fixed-batch-wait --allow-insecure-local-correlations --engine-threads ENGINE_THREADS --native-library NATIVE_LIBRARY --compiled-cache-dir COMPILED_CACHE_DIR --streaming-threshold-elements STREAMING_THRESHOLD_ELEMENTS --quantization-chunk-rows QUANTIZATION_CHUNK_ROWS --verification-component {none,pllm/freivalds-verify/v1} --verification-target-failure-bits VERIFICATION_TARGET_FAILURE_BITS --guard-max-rows-per-request GUARD_MAX_ROWS_PER_REQUEST --guard-max-rows-per-stage GUARD_MAX_ROWS_PER_STAGE --guard-max-requests-per-minute GUARD_MAX_REQUESTS_PER_MINUTE --guard-output-dither GUARD_OUTPUT_DITHER --rendezvous-timeout RENDEZVOUS_TIMEOUT --rendezvous-capacity RENDEZVOUS_CAPACITY --rendezvous-max-bytes RENDEZVOUS_MAX_BYTES --prepared-session-capacity PREPARED_SESSION_CAPACITY --prepared-session-idle PREPARED_SESSION_IDLE $ pllm benchmark run --help usage: pllm benchmark run [-h] [--format {human,json,jsonl}] [--quiet] [--no-color] [--no-input] [--dry-run] [--experiment TARGET] [--factory] [--trust-python] [--model MODEL] [--model-id MODEL_ID] [--tiny] [--prompt PROMPT | --prompt-file PROMPT_FILE] [--max-output-tokens MAX_OUTPUT_TOKENS] [--warmups WARMUPS] [--repetitions REPETITIONS] [--timeout TIMEOUT] [--show-dashboard] [--output OUTPUT] [--save-best PATH] [--force] options: -h, --help show this help message and exit --format {human,json,jsonl} result format (default: human) --quiet suppress non-error diagnostics --no-color disable colored output --no-input fail instead of prompting --dry-run report work without persistent writes or service startup --experiment TARGET Experiment .json/.yaml or explicit Python path.py:object/module:object; repeat to compare pipelines --factory call each Python target as a zero-argument factory --trust-python allow import and execution of explicit Python experiment targets --model MODEL Hugging Face model ID or local checkpoint path --model-id MODEL_ID stable model identity stored in the report --tiny use generated random weights for a transport smoke test --prompt PROMPT prompt text (visible in shell process listings) --prompt-file PROMPT_FILE read prompt text from this file --max-output-tokens MAX_OUTPUT_TOKENS maximum generated tokens per run (default: 24) --warmups WARMUPS warmup runs retained in the report (default: 0) --repetitions REPETITIONS measured runs (default: 1) --timeout TIMEOUT startup and per-run timeout in seconds (default: 900) --show-dashboard open the local dashboard in a browser (default: hidden) --output OUTPUT write the sanitized JSON report --save-best PATH write the Experiment with lowest measured median full latency as canonical JSON --force replace --output if it exists $ pllm dev dashboard --help usage: pllm dev dashboard [-h] [--format {human,json,jsonl}] [--quiet] [--no-color] [--no-input] [--dry-run] [--host HOST] [--port PORT] [--model MODEL] [--model-id MODEL_ID] [--tiny] [--max-output-tokens MAX_OUTPUT_TOKENS] [--history-db PATH] [--no-open] options: -h, --help show this help message and exit --format {human,json,jsonl} result format (default: human) --quiet suppress non-error diagnostics --no-color disable colored output --no-input fail instead of prompting --dry-run report work without persistent writes or service startup --host HOST --port PORT --model MODEL --model-id MODEL_ID --tiny --max-output-tokens MAX_OUTPUT_TOKENS --history-db PATH --no-open