Skip to content

Model and server

Flag Env Default Meaning
--model-id <id> IGNIS_MODEL_ID qwen3.8-27b The loaded model id: what /v1/models reports first (data[0]), what a submission names to be served without a switch, and the catalog entry fetched when no artifact is named.
--server-bind <addr> IGNIS_SERVER_BIND 127.0.0.1:8000 The API listener’s address.
--model-artifact <path> IGNIS_MODEL_ARTIFACT unset The .ninfer container. Must exist and verify, or the server refuses to start. Unset: the model is looked for under --download-path, and fetched when it is not there.
--download-enabled <bool> IGNIS_DOWNLOAD_ENABLED on Fetch a missing model at start: only consulted with --model-artifact unset, and only in a --features cuda build. false also refuses POST /v1/models/download, so the server never uses the network.
--download-path <dir> IGNIS_DOWNLOAD_PATH ./models Where a fetched model lands, and where one fetched earlier is found.
--download-endpoint, --download-token, --download-catalog IGNIS_DOWNLOAD_* Where a model is fetched from, with which token, and an operator catalog (Where the bytes come from: endpoint and token).
model download / model list — — Fetch catalog entries, or list them (Fetching one: ignis-server model download).
--download-from-ui <bool> IGNIS_DOWNLOAD_FROM_UI on Let POST /v1/models/download, the Server view’s Download, fetch a catalog entry while the server runs, under the API key; it needs --download-enabled too. false refuses it with 403 download_disabled, and POST /v1/models/remove, the Remove, with 403 removal_disabled; model download still fetches. Not patchable (Downloading from the Server view).
--download-free-margin <bytes> IGNIS_DOWNLOAD_FREE_MARGIN 1G What a download must leave free on the volume of --download-path beyond the entry’s bytes still missing (accepts K/M/G). The Server view’s Download (507 download_no_room), model download and the start’s own fetch are refused before any byte is written when the free space is below the two together, naming both numbers. Not patchable (Room on the disk).
--server-request-timeout <secs> IGNIS_SERVER_REQUEST_TIMEOUT 2400 (max 3600) The deadline of a request answered whole — chat completions and the Responses API without stream, each question of a decision, an image job not streamed, a request’s media acquisition — from its admission (an image job’s from its start). Past it, the reply --server-timeout-reply says (deadlines). 0 is no deadline. Patchable live.
--server-stream-timeout <secs> IGNIS_SERVER_STREAM_TIMEOUT 2400 (max 3600) The deadline of a request that streams — chat completions and the Responses API with stream: true, a Responses WebSocket’s response, a streamed image job — from its admission (a socket’s never from its queue, an image job’s from its start). 0 is no deadline. Patchable live.
--server-timeout-reply <partial|error> IGNIS_SERVER_TIMEOUT_REPLY partial What a request past its deadline is answered: partial, what it generated as an answer a length limit cut (finish_reason: "length", a response incomplete with max_output_tokens); error, 504 request_timeout or a stream’s error ending. A decision’s question and an image job are an error either way (deadlines). Patchable live.
--switch-drain-timeout <secs> IGNIS_SWITCH_DRAIN_TIMEOUT 30 (max 3600) How long a model switch lets the old model’s running requests finish before it cancels them (0 cancels at once).
--model-idle-unload <secs> IGNIS_MODEL_IDLE_UNLOAD 300 (max 604800) Seconds with no request using the model before it is unloaded, the server staying up; the next request loads it again (Idle unload). 0 never unloads. Patchable live.
--server-socket-idle-close <secs> IGNIS_SERVER_SOCKET_IDLE_CLOSE 300 (max 604800) Seconds a Responses WebSocket may sit idle — nothing running or queued on it, no frame from its client — before the server closes it with a normal close frame saying why; the client’s next request opens another (WebSocket mode). An open socket keeps a Knative pod from scaling down (Run behind Knative). 0 never closes. Patchable live.
--model-host-margin-bytes <bytes> IGNIS_MODEL_HOST_MARGIN_BYTES 4G What a text model’s host plan must leave of the RAM available at load (free plus standby): a load whose pinned lines leave less is refused, naming the line to shrink (Host RAM for Flash-Next, for the 27B). Per family as --qwen38-model-host-margin-bytes and --qwen38flashnext-model-host-margin-bytes; an image-model start, which makes no host plan, takes them for a later switch. (make knob HOST_MARGIN_BYTES.)
--switch-allow-implicit <true|false> IGNIS_SWITCH_ALLOW_IMPLICIT true A request whose model names another model --switch-known-models lists switches the server to it, then is served on it. false: such a request is a 404 model_not_found, as an unknown model is, and GET /v1/models lists the loaded model alone. POST /v1/models/switch is not affected.
--switch-known-models <id>=<path> (repeatable) IGNIS_SWITCH_KNOWN_MODELS (;-separated pairs) the start model only A model a request may switch to by naming it, and the artifact it loads from — while that artifact is a file. The model the server starts on is always listed. Any flag replaces the env var whole; an id named twice is refused.
--config <path> IGNIS_CONFIG discovered The config file (Configuration).
--profile <name> IGNIS_PROFILE auto The hardware profile (Configuration): auto (the profile of the card’s memory), rtx50-16gb, rtx5090, rtxpro6000, one a config file defines, or none.
help / -h, --help — — Print the usage and the field list and exit; help --fields prints every field in full.
version / -V, --version — — Print the version and exit.