CLI & configuration

PDF Server is configured only by command-line flags and environment variables (no config file). Every flag has an environment-variable equivalent, so this page doubles as the environment reference.

This table is maintained by hand for readability. A machine-generated version (app.ToMarkdown()) can be produced at build time to guarantee it never drifts — see Build & CI.

Commands

CommandPurpose
serverRun the long-running HTTP server.
validate [filters…]Parse all templates and render every example; exit non-zero on failure. Filters are <template>/<example>.
help, --versionHelp / version.

Global flags

FlagEnvDefaultControls
--log-levelLOG_LEVELinfotrace/debug/info/warning/error/fatal
--log-formatLOG_FORMATtexttext or json
--templates-dir, -tTEMPLATES_DIRtemplates/Templates directory
--compositions-dirCOMPOSITIONS_DIRcompositions/Compositions directory
--templates-reload-modeTEMPLATES_RELOAD_MODEnonenone or always (reload per request)
--templates-recursiveTEMPLATES_RECURSIVEfalseLoad nested templates
--wait-lifecycle-eventWAIT_LIFECYCLE_EVENTloadDefault event awaited before printing
--render-timeoutRENDER_TIMEOUT30sMax duration per render
--render-retry-attemptsRENDER_RETRY_ATTEMPTS3Render attempts

Browser

FlagEnvDefaultControls
--browser-command (--chromium-command)BROWSER_COMMAND, CHROMIUM_COMMANDchromiumBrowser executable
--browser-args (--chromium-args)BROWSER_ARGS, CHROMIUM_ARGSheadless flag setComma-separated args (%{TMP_DIR}, %{TMP_ID} substitutions)
--browser-process-group-wait-timeoutBROWSER_PROCESS_GROUP_WAIT_TIMEOUT10sWait before SIGKILLing the browser process group

Render pool

FlagEnvDefaultControls
--render-pool-max-totalRENDER_POOL_MAX_TOTAL1Max pooled browsers (and render workers)
--render-pool-min-idleRENDER_POOL_MIN_IDLE1Min idle browsers
--render-pool-max-idleRENDER_POOL_MAX_IDLE1Max idle browsers
--render-pool-time-between-evictionRENDER_POOL_TIME_BETWEEN_EVICTION1hEviction interval
--render-pool-borrow-timeoutRENDER_POOL_BORROW_TIMEOUT1mMax wait to borrow
--render-pool-repay-timeoutRENDER_POOL_REPAY_TIMEOUT5sMax wait to return

Factory

FlagEnvDefaultControls
--factory-typeFACTORY_TYPErunnerrunner (browser per object) or page (tabs in one browser, Chromium only)
--factory-max-usage-countFACTORY_MAX_USAGE_COUNT1000Reuse before recycle
--factory-max-get-page-attemptsFACTORY_MAX_GET_PAGE_ATTEMPTS20Attempts to get the initial page
--factory-get-page-retry-delayFACTORY_GET_PAGE_RETRY_DELAY10µsDelay between attempts
--factory-rpc-buffer-sizeFACTORY_RPC_BUFFER_SIZE8096CDP RPC buffer size

Tracing (OpenTelemetry)

FlagEnvDefaultControls
--tracing-enabledTRACING_ENABLEDfalseEnable tracing
--tracing-collectorTRACING_COLLECTORotelCollector type
--tracing-service-nameTRACING_SERVICE_NAMEpdf-serverReported service name
--tracing-propagatorsTRACING_PROPAGATORS, OTEL_PROPAGATORStracecontext,baggage,b3,…
--otel-collector-protocolOTEL_COLLECTOR_PROTOCOLgrpcgrpc or http
--otel-collector-grpc-addrOTEL_COLLECTOR_GRPC_ADDRlocalhost:4317OTLP/gRPC endpoint
--otel-collector-http-addrOTEL_COLLECTOR_HTTP_ADDRlocalhost:4318OTLP/HTTP endpoint
--tracing-sample-rate1.0Sampling ratio
--tracing-keep-status-tracefalseKeep /_status spans
--tracing-dial-timeoutTRACING_DIAL_TIMEOUT15sCollector dial timeout

server flags

FlagEnvDefaultControls
--addrSERVER_ADDR:9999HTTP bind address
--stop-timeoutSERVER_STOP_TIMEOUT10sGraceful shutdown timeout
--server-reuse-addrSERVER_REUSE_ADDRfalseSO_REUSEADDR
--static-dir-enabledSTATIC_DIR_ENABLEDfalseServe /static/* from disk
--static-dir-pathSTATIC_DIR_PATH./app/server/static/Static dir path