vlmrun gw systemone, alias vlmrun gw s1, asks typed, calibrated questions of text,
images, a PDF, or a video, and returns a probability per answer rather than generated
text. See System One for the concepts and
gateway for shared options.
.pdf becomes the document part, .txt / .md / .json / .yaml becomes the
state, and anything else is literal state text. Use -s to set the state explicitly, and
every positional is then media.
Asking questions
Three inline flags cover most asks, and all are repeatable:-Q/--questions takes inline JSON, @file.json, or - for stdin,
in either a list form (ids carried per question) or the wire map. -B/--body sends a full
request body, and other flags override it.
Listing models
vlmrun gw s1 models prints the models a gateway serves with their release dates. There is
no catch-all alias, so name one of them with -m.
Video
A video positional is sampled into frames, and each frame is one read. Answers render as a series over time: a sparkline per numeric question with its true peak and low, and a choice as the segments it held.The video flags below ship in the next CLI release. The same reads are available now
from Python: see Streaming.
--ws is worth setting on anything but a short clip: the saving is round trips, so it
grows with frame count. See Streaming.
--gate-mode matters because a gate over footage usually asks whether something ever
happened, which is why any is the default. sustained:N is the debounced form:
Gates
--gate asserts a condition and sets the exit code, so a read can guard a script. It is
repeatable and all gates must pass. Gates are checked against the question spec before
the request is sent, so a selector that cannot apply costs nothing.
--json the verdicts go to stderr, so stdout stays a clean response body.
Repeats and dry runs
--repeat N sends the same request N times and reports mean, spread, and every read,
which is how you see how much to trust one number. Gates then apply to the mean. This is
distinct from --samples, which averages noise draws inside a single read.
--dry-run prints the request body and exits without sending it. Piped output is the
verbatim body, so it composes with curl.
Options
Remote images are fetched by the CLI, because the route accepts images only as data
URLs, and must resolve to a public address. Set
VLMRUN_ALLOW_PRIVATE_URLS=1 for an
internal image host.