VeizikNVIDIA, Apple Silicon and edge builds are available now.Release notes →
Product

Veizik for NVIDIAAvailable now

Qwen language models and Wan video models on your own NVIDIA GPU, on supported NVIDIA generations: Ampere, Ada Lovelace, Blackwell (Hopper untested here).

Coming in an update

On the way — not in this release.

  • LoRA adapters Coming in an update
    LoRA adapter application — including single- and multi-LoRA fusion — is coming in a later update. It is not part of this release.
01 · Who it is for

Whose work, which task.

Developers who run language or video models on their own NVIDIA GPU and want one native engine, with no Python runtime, no CUDA toolkit and no cloud at inference time. The Qwen package generates text from the command line, in an interactive chat, or through a local OpenAI-compatible HTTP server for your own tools; the package's Qwen3.6-35B-A3B engine also reads an image or a short video with your prompt. The Wan package renders text-to-video and image-to-video, writes the frames as PNG files, and includes a resident render server that renders request after request in one process. The model weights are yours, and nothing is uploaded.

02 · Real output

What comes back.

Qwen package: `veizik run` writes its output to gen.txt in the folder you pass with --out. For a conversation use `veizik chat`; for your own tools use `veizik serve` (OpenAI-compatible, 127.0.0.1). Wan package: `veizik run` writes the frames as PNG files to DIR/frames/ (frame_00000.png onward) and its working files to DIR/work/; nothing is written inside the package. Wan serve (`veizik serve wan22_t2v_a14b`) is a render API on 127.0.0.1: `POST /v1/videos/generations` accepts the render as an asynchronous job and writes the PNG frames to a folder. Generation needs `veizik activate` (browser approval, once per device) and the model's weights.

A still frame of the generated a landscape image-to-video clip (quality mode), used as the video poster.
Wan2.2-I2V-A14B (distilled Lightning)NVIDIA RTX 3090
A still frame of the generated a cat image-to-video clip (quality mode), used as the video poster.
Wan2.2-I2V-A14B (distilled Lightning)NVIDIA RTX 3090
A still frame of the generated an astronaut image-to-video clip (quality mode), used as the video poster.
Wan2.2-I2V-A14B (distilled Lightning)NVIDIA RTX 3090
A still frame of the generated a bird image-to-video clip (quality mode), used as the video poster.
Wan2.2-I2V-A14B (distilled Lightning)NVIDIA RTX 3090

Poster frames from Wan 2.2 image-to-video clips the Wan package rendered on an NVIDIA RTX 3090 — output, not a benchmark; no speed figure is attached to these images. Powered by Wan-AI/Alibaba.

03 · Environment and models

Where it runs, and what.

  • Linux x86-64 — natively, or under WSL2 on Windows with the current NVIDIA Windows driver.
  • An NVIDIA GPU with compute capability 8.0 or newer. Both packages carry GPU code for sm_80 and sm_86 (Ampere), sm_89 (Ada Lovelace), sm_90a (Hopper), sm_100a and sm_120a (Blackwell). Qwen package: one GPU runs one model; splitting a model across GPUs is not supported. Qwen package: the image and video input of its Qwen3.6-35B-A3B engine runs on RTX 30-series (sm_86), RTX 40-series (sm_89) and RTX 50-series (sm_120a) class GPUs; the text models keep all six architectures.
  • A driver that provides libcuda.so.1 and supports your card. No CUDA toolkit and no Python are needed. Qwen package: validation used driver 595.91.07; no minimum version is stated.
  • Qwen package: ordinary Linux host tools on the PATH: bash, curl, perl, xxd, od, base64, sed, awk, grep, timeout, mktemp, mkfifo, tee, sha256sum and nvidia-smi.
  • Disk: about 59 MB for the Qwen package and about 7 MB for the Wan package download. The checkpoints you supply are far larger (Qwen3.6-35B-A3B is about 70 GB).
  • Qwen package: network access for activation and licence renewal; generation runs on your GPU and makes no network calls. Wan package: its GPU code opens only on a device activated for this release. Run `veizik activate` once per device after `veizik install wan22`. Activation does not need the model weights; rendering does.
  • Qwen package: model weights are not included; download the public Hugging Face checkpoint of each model you want from its publisher. Weights are needed only to run a model — activation does not load or need them. Wan package: model weights are not included. `veizik pull wan22` downloads the weights (Apache-2.0) and prepares the video decoder automatically — no manual VAE setup or support request.

20 catalogue ids across the downloads. The GPUs this build targets are on the hardware page.

ModelIdCheckpointOutput
Qwen3.5-0.8Bqwen35-0.8bQwen/Qwen3.5-0.8Bchat and completion
Qwen3.5-2Bqwen35-2bQwen/Qwen3.5-2Bchat and completion
Qwen3.5-4Bqwen35-4bQwen/Qwen3.5-4Bchat and completion
Qwen3.5-9Bqwen35-9bQwen/Qwen3.5-9Bchat and completion
Qwen3.5-122B-A10Bqwen35-122b-a10bQwen/Qwen3.5-122B-A10Bchat and completion
Qwen3.6-35B-A3Bqwen36-35b-a3bQwen/Qwen3.6-35B-A3Bchat and completion
Wan2.1-T2V-1.3Bwan21-t2v-1.3bWan-AI/Wan2.1-T2V-1.3B-Diffusersvideo
Wan2.1-T2V-14Bwan21-t2v-14bWan-AI/Wan2.1-T2V-14B-Diffusersvideo
Wan2.2-T2V-A14Bwan22-t2v-a14bWan-AI/Wan2.2-T2V-A14B-Diffusersvideo
Wan2.2-I2V-A14Bwan22-i2v-a14bWan-AI/Wan2.2-I2V-A14B-Diffusersvideo
FLUX.1-schnellflux1-schnellblack-forest-labs/FLUX.1-schnellimage
FLUX.1-devflux1-devblack-forest-labs/FLUX.1-devimage
FLUX.1-Kontext-devflux1-kontextblack-forest-labs/FLUX.1-Kontext-devimage
FLUX.1-Krea-devflux1-kreablack-forest-labs/FLUX.1-Krea-devimage
FLUX.1-Fill-devflux1-fillblack-forest-labs/FLUX.1-Fill-devimage
FLUX.1-Depth-devflux1-depthblack-forest-labs/FLUX.1-Depth-devimage
FLUX.1-Canny-devflux1-cannyblack-forest-labs/FLUX.1-Canny-devimage
FLUX.1-Redux-devflux1-reduxblack-forest-labs/FLUX.1-Redux-devimage
SD3.5-mediumsd3.5-mediumstabilityai/stable-diffusion-3.5-mediumimage
SD3.5-largesd3.5-largestabilityai/stable-diffusion-3.5-largeimage

Powered by Wan-AI/Alibaba.

Stable Diffusion 3.5: Powered by Stability AI

Not in these downloads yet: gpt-oss, SANA.

A dark curved surface with one soft warm line of light along its edge.

Veizik for NVIDIA

Download, then the minimal commands.

Image rendered by Veizik for NVIDIA, development build (linux x86_64) · SD3.5-medium · NVIDIA RTX 3090 · Powered by Stability AI

04 · Download and first run

From the package to a first answer.

Install and evaluation are free; production use is licensed (see the EULA). Model weights are licensed by their publishers.

PackageModelsSizeSHA-256
veizik-qwen-cuda-1.1.4-linux-x86_64.vzpackQwen3.5, Qwen3.656,694,883 bytes0d925ad92f450e833367834924e4d5d078edab7c546499e214f17b476a930f5e
veizik-sd35-1.0.1-linux-x86_64.vzpackStable Diffusion 3.535,682,469 bytes81a6629d8aa26cde50b2c934509be28b11df11f890e50a88528572a27141fcde
veizik-wan-1.2.93-linux-x86_64.vzpackWan 2.1 · Wan 2.27,166,271 bytesc35b003d8a0a493b5b79904dd28bd1b793293061383fe6de3c498435dc5c6087
veizik-flux-1.0.5-linux-x86_64.vzpackFLUX.145,274,050 bytes33921b9c0d6690fff86f53be87583cc1c02ad5ddacfa4af4b2e06b350da1a62a

EXPERIMENTAL. The package ships all five models as an early release. It is complete, verified and installable with `veizik install`; options and defaults may still change between releases.

VERIFIED. VERIFIED on the WAN warm-v2 cutover gates (gate-a conformance + gate-b fresh-customer e2e) on the real re-cut v2 bytes c35b003d.

Get the veizik command for Linux x86-64: Then veizik install <model> downloads a package from its GitHub release and refuses it unless its SHA-256 matches the one in this table. The table is the record of what is published; the download page has each package’s steps.

bash
# the veizik command for Linux x86-64
$ curl -fsSL https://veizik.com/install.sh | sh
# if the installer asks you to put ~/.local/bin on your PATH
$ export PATH="$HOME/.local/bin:$PATH"
$ veizik list
# Qwen (language): install by qwen, qwen35, qwen36 or a full model key (qwen35_0p8b, qwen35_2b, qwen35_4b, qwen35_9b, qwen36_35b_a3b)
$ veizik install qwen36
# activation needs no weights; point VZ_WEIGHTS at the checkpoint you downloaded, for veizik run
$ export VZ_WEIGHTS=/data/models
$ veizik activate
$ veizik run qwen36_35b_a3b "The capital of France is" --tokens 32
$ veizik chat qwen35_2b
$ veizik serve qwen35_2b --weights /data/models/Qwen3.5-2B --port 8000
# Wan (video): install by wan, wan21, wan22 or a full model key (wan21_t2v_1_3b, wan21_t2v_14b, wan22_t2v_a14b, wan22_i2v_a14b)
$ veizik install wan22
$ veizik activate # once per device; for the Wan package too
$ veizik pull wan22 # fetches the Wan weights and prepares the video decoder
$ veizik run wan22_t2v_a14b "<your prompt>" --out ./clip
$ veizik serve wan22_t2v_a14b --port 8000 # render API: POST /v1/videos/generations

What veizik-qwen-cuda-1.1.4-linux-x86_64.vzpack does

  • Five language models in one package: Qwen3.5-0.8B, Qwen3.5-2B, Qwen3.5-4B, Qwen3.5-9B and Qwen3.6-35B-A3B (mixture of experts, about 3B active per token). Every model does completion and chat.
  • veizik run <model> "prompt" generates once and writes the text to gen.txt in the folder you pass with --out. Greedy decoding is the default and gives the same output every time. --tokens N (or --max-tokens N) sets the length, and --ignore-eos emits exactly N tokens. Sampling is opt-in with --seed, --temperature, --top-p and --top-k, and is experimental.
  • Run options are one vocabulary across engines, and the command passes on only the ones an engine accepts. For Qwen: --seed, --steps, --mode, --temperature, --top-p, --top-k, --tokens, --max-tokens, and on Qwen3.6-35B-A3B also --image, --video, --image-max-pixels, --video-max-pixels and --video-fps. Any other option is refused with <flag> does not apply to this model. Every run also takes --out, --name, --prompt-file, --resume, --resume-from and --checkpoint-every.
  • veizik chat <model> holds an interactive conversation, using the package's signed model catalogue. It needs veizik activate once per device, and the model's weights to generate (--weights DIR or VZ_WEIGHTS).
  • veizik serve <model> is a local OpenAI-compatible HTTP server on 127.0.0.1 only: POST /v1/chat/completions (with streaming), POST /v1/completions, GET /v1/models, and health endpoints. Turn on an API key with --require-auth --keyfile FILE. Each request may use up to 4,096 tokens, prompt plus output. It needs veizik activate once per device, and the model's weights to generate (--weights DIR or VZ_WEIGHTS). Serving anyone who is not you — free or paid — is hosting the Software as a service and needs a separate licence from LinkPick; see veizik.com/licensing.
  • veizik doctor checks the install root, the activation service and the CLI binary; veizik status shows the device's activation and plan; veizik version shows the version and backend.
  • Five modes: quality (most memory, slowest), balanced (the default), fast, ultrafast (the fastest) and low-memory (smallest footprint, lowest quality).
  • Image input on Qwen3.6-35B-A3B: one PNG or JPEG image per run, with a text prompt: veizik run qwen36_35b_a3b "…" --image FILE --out DIR. --image-max-pixels limits the image size. veizik chat and veizik serve take text only.
  • Video input on Qwen3.6-35B-A3B: one folder of 2 to 256 PNG or JPEG frames, all the same size, in file-name order: veizik run qwen36_35b_a3b "…" --video DIR --out DIR. --video-fps sets the frame rate (default 2) and --video-max-pixels limits the frame size. The command forwards these options to the engine.
  • The image and video GPU code ships for sm_86, sm_89 and sm_120a (RTX 30, 40 and 50 series class GPUs) only. On any other GPU the run is refused with status 50 before any image or video work. No run record of image or video input is published.
  • GPU code for text on sm_80, sm_86, sm_89, sm_90a, sm_100a and sm_120a. One GPU runs one model.
  • Activation is once per device, and one approval covers every model: veizik activate in a browser, or veizik activate --key KEY --password-stdin without one. veizik devices lists the devices on your licence and switches them on or off, and veizik device-id prints this machine's id.
  • veizik install downloads the package from its public GitHub release and refuses it unless its SHA-256 matches the published release; the engine checks its own files at every start, and a changed, added or missing file stops the run with exit code 4.

What veizik-sd35-1.0.1-linux-x86_64.vzpack does

  • Two image models in one package: Stable Diffusion 3.5 Medium (2.5B) and Large (8B), text to image, on NVIDIA GPUs.
  • Run: veizik run sd35medium --out DIR or veizik run sd35large --out DIR renders a 1024×1024 image by default, or any size with --width/--height (e.g. 768×1344 non-square), and writes it to DIR/frame_0000.png. Options: --steps, --seed, --width, --height, --mode (quality / balanced / low-memory / fast / ultrafast), --weights.
  • Per-architecture cubin for every supported GPU — consumer and data-centre — with no compile step at render time.
  • Device-bound activation and a v1 provenance mark on every generated image. Weights are supplied by you under the Stability AI Community License (Powered by Stability AI).

What veizik-wan-1.2.93-linux-x86_64.vzpack does

  • Four video models in one package: Wan2.1-T2V-1.3B, Wan2.1-T2V-14B and Wan2.2-T2V-A14B for text to video, and Wan2.2-I2V-A14B for image to video.
  • Run: veizik run <model key> "prompt" --out DIR renders a video and writes its frames as PNG files to DIR/frames/. Options: --steps, --frames, --width, --height, --seed, --guidance, --guidance2, --shift, --mode, --neg-file, --image, --det-vae, --checkpoint-every and --png-step; --lora and --lora-scale are accepted and take your own adapter (none is bundled in the package). The distilled Lightning variant’s lightx2v LoRA is fetched automatically by veizik pull wan22_i2v_a14b_lightning (engine forward-correction, not a manual --lora merge). Any other option is refused with <flag> does not apply to this model. Every run also takes --out, --name, --prompt-file, --resume and --resume-from. Nothing is written inside the package.
  • Serve: veizik serve wan22_t2v_a14b --port 8000 runs a resident render server — the model loads once and is reused across requests with no reload, in one process and one GPU context, and the resident server re-checks the licence on each request. POST /v1/videos/generations with {"prompt": "…", "seed": 42} accepts the render as an asynchronous job and writes the PNG frames to a folder; /health and /v1/models answer too. An optional "priority": "urgent" on a request interrupts a running render at a step boundary, saves its progress (.vzckpt), serves the urgent request, then resumes the first. A non-resident bundle renders one request at a time. Serving anyone who is not you — free or paid — is hosting the Software as a service and needs a separate licence from LinkPick; see veizik.com/licensing.
  • Image to video: Wan2.2-I2V-A14B takes its first frame with --image FILE, as raw RGB bytes (one byte per channel) at the render size.
  • Four modes: quality (the reference path and the default), balanced, fast and ultrafast. Only quality is bit-identical to the reference.
  • Memory, per model: Wan2.1-T2V-1.3B runs in about 7 GB of VRAM; the 14B models (Wan2.2-T2V-A14B and Wan2.2-I2V-A14B) render resident in about 18.5 GB on a 24 GB consumer card (peak near 22 GB for T2V-A14B). Host system memory stays around 2 GB (peak near 1.83 GB at the VAE decode of an 81-frame clip) — the weights stream to the GPU rather than loading into system RAM, so a 14B video model runs on an ordinary machine.
  • Resume: an interrupted render continues with --resume and the same --out (or --resume-from REF, where REF is a --name or an absolute run directory), and the result is bit-identical to a render that never stopped. Resume finishes the same render — same prompt, seed and settings — so to change the prompt, start a new render. --checkpoint-every N sets how often progress is saved.
  • Preemption: create DIR/work/preempt and the render saves its state at the next step boundary and exits 75; resume it as above.
  • Progress: DIR/work/progress always holds one JSON line (state, stage, step, window, frames committed, estimated time left), replaced atomically, so a program never has to parse logs.
  • Deterministic VAE: with --det-vae yes the same input gives byte-exact frames.
  • Provenance mark: every frame carries the v1 mark, an in-pixel watermark plus XMP DigitalSourceType trainedAlgorithmicMedia. It holds no prompt, device, path or account data.
  • Kernel sets for sm_80, sm_86, sm_89, sm_90a, sm_100a and sm_120a; the launcher picks the set for the GPU it finds. Every speed figure for this package was measured on an RTX 3090 only.
  • veizik install downloads the package from its public GitHub release and refuses it unless its SHA-256 matches the published release. Every file is checked against its sealed manifest before each run; a changed, added or missing file stops the run with exit code 4.
  • Activation is veizik activate, once per device. veizik pull wan22 then fetches the Wan weights and prepares the video decoder automatically (no manual VAE layout step); for weights you already have, veizik pull --prep-local DIR prepares them in place.

Earlier-build evidence: On 2026-10-21 an earlier build of the Wan engine rendered all four models bit-exact against the package's own reference hashes (CONFORMANCE.json) on an NVIDIA RTX 3090; the shipped engine is a later rebuild and has not been re-rendered.

What veizik-flux-1.0.5-linux-x86_64.vzpack does

  • FLUX.1 text to image on NVIDIA GPUs, as a self-contained native engine — no Python, no CUDA toolkit. Eight variants: FLUX.1-dev (12B) and FLUX.1-schnell, plus Kontext, Krea and the Tools set (Fill, Depth, Canny, Redux).
  • Renders 1024×1024 images with veizik run <key> "prompt" --out out.png (options: --steps, --seed, --mode [quality / balanced / efficient / compact / low-memory / fast / ultrafast], --weights). The Tools variants condition on an input image via --image (Fill also takes --mask).
  • Per-architecture cubin for every supported GPU, with no compile step at render time; device-bound activation; a v1 provenance mark on every image.
  • Two licences, and they differ: FLUX.1-schnell is Apache-2.0; the dev variants are under the FLUX.1 Non-Commercial Licence from Black Forest Labs — commercial work needs a separate licence from them. Veizik neither redistributes nor relicenses the weights, which you supply.

NVIDIA and Apple Silicon install differently.

One engine, two ways in. On NVIDIA, one veizik command installs each model engine by name. On Apple Silicon, nothing changes: the same signed disk image and the same commands.

NVIDIA · CUDAAvailable now

Linux on x86-64 · one veizik command, model engines installed by name

One veizik command, model engines installed by name.

  • Get the veizik command for Linux x86-64 once: curl -fsSL https://veizik.com/install.sh | sh.
  • veizik install takes a short name or a model key and installs the package that carries it: qwen, qwen35, qwen36 or a Qwen model key such as qwen35_2b; wan, wan21, wan22 or a Wan model key such as wan21_t2v_1_3b (any case; qwen3.6 and wan2.2 work too). It downloads the package from its public GitHub release, refuses it unless its SHA-256 matches the published release, and unpacks it under ~/.local/state/veizik/engines/. veizik list shows what is available and installed; veizik uninstall (or veizik rm) removes a package.
  • Qwen, for language: veizik activate, then veizik run qwen35_2b "…", veizik chat and veizik serve (each needs veizik activate once per device, and the model's weights to generate); veizik run qwen36_35b_a3b "…" --image FILE (or --video DIR) also reads an image or a short video.
  • Wan, for video: veizik activate once per device, then veizik run wan22_t2v_a14b "…" --out ./clip, or veizik serve wan22_t2v_a14b --port 8000 for a render API on 127.0.0.1 (POST /v1/videos/generations). veizik pull wan22 downloads the model's weights and prepares the video decoder automatically; then render.
  • No CUDA toolkit and no Python: the NVIDIA driver is all the GPU side needs.

How the NVIDIA release installs

One veizik command; each model engine is installed by name.

bash · Linux x86-64
# the veizik command for Linux x86-64
$ curl -fsSL https://veizik.com/install.sh | sh
# if the installer asks you to put ~/.local/bin on your PATH
$ export PATH="$HOME/.local/bin:$PATH"
$ veizik list
# Qwen (language): install by qwen, qwen35, qwen36 or a full model key (qwen35_0p8b, qwen35_2b, qwen35_4b, qwen35_9b, qwen36_35b_a3b)
$ veizik install qwen36
# activation needs no weights; point VZ_WEIGHTS at the checkpoint you downloaded, for veizik run
$ export VZ_WEIGHTS=/data/models
$ veizik activate
$ veizik run qwen36_35b_a3b "The capital of France is" --tokens 32
$ veizik chat qwen35_2b
$ veizik serve qwen35_2b --weights /data/models/Qwen3.5-2B --port 8000
# Wan (video): install by wan, wan21, wan22 or a full model key (wan21_t2v_1_3b, wan21_t2v_14b, wan22_t2v_a14b, wan22_i2v_a14b)
$ veizik install wan22
$ veizik activate # once per device; for the Wan package too
$ veizik pull wan22 # fetches the Wan weights and prepares the video decoder
$ veizik run wan22_t2v_a14b "<your prompt>" --out ./clip
$ veizik serve wan22_t2v_a14b --port 8000 # render API: POST /v1/videos/generations
Apple Silicon · MetalAvailable now

macOS 13 or later on M1 or newer · signed disk image

Veizik for Apple Silicon, as it ships today

  • One signed, notarised disk image (DMG) from the GitHub release. Run install.sh from the volume it opens.
  • Models are fetched by name with veizik pull; there are no engine packages to add.
  • Same image, same commands as before. Nothing about the Apple build changes.
zsh · macOS
$ ./install.sh
$ veizik activate
$ veizik pull <model>
$ veizik run <model> "…"
$ veizik chat <model>
$ veizik serve <model>

One command set on every engine.

Every model engine answers the same commands. What differs is the set of run options an engine accepts and the shape of its local server. A run option an engine does not accept is refused with a message that names it (<flag> does not apply to this model.), never silently ignored. veizik <command> --help gives the detail for one command.

Use a model

CommandWhat it does
veizik run <model> "<prompt>" [tokens]Generate once and exit.
veizik chat <model> [tokens]Interactive session.
veizik serve [<model>] [--port N]Answer over HTTP, on this machine. Leave the model out to serve every installed model.
veizik psList the resident servers running here.
veizik stop <port> | allStop a resident server.

Get and manage models

CommandWhat it does
veizik modelsList what is installed here.
veizik listModel engines: installed and available.
veizik install <model>Download and install a model engine.
veizik uninstall <model> / rm <model>Remove an installed model engine.
veizik pull <model>[@<revision>]Fetch model weights and make them ready.
veizik hf login | logout | statusHugging Face token for gated models.
veizik remove <model>[@<revision>]Delete cached weights.
veizik inspect <model>Show what a model is.

Look after the installation

CommandWhat it does
veizik bench <model>Measure this machine.
veizik cache info | cleanInspect or tidy the download cache.
veizik config show | set | unsetSee and change settings.
veizik completion zsh | bash | fishEmit a shell completion script.
veizik statusShow this device's activation and plan.
veizik activateRegister this device and get its plan. It opens your browser to approve the machine, and one approval covers all models.
veizik devices [enable|disable <tag>]See and switch the devices on your licence.
veizik device-idPrint this machine's device id, as the device list on your account shows it.
veizik doctorCheck this installation.
veizik versionShow the version and backend.

veizik update and veizik convert are in the command list but do not do their work in this release: update has no catalogue refresh and convert has no converter.

Run options: one vocabulary, translated per engine.

Write one set of options. The command passes on only the ones the engine accepts and refuses the rest.

Every run takes --out DIR, --name NAME, --prompt-file FILE, --resume, --resume-from REF and --checkpoint-every N. --resume-from REF resumes that run's directory: REF is a --name or an absolute directory, and its saved state is reloaded. Bare --resume continues the render in the directory the command resolves to, so repeat the run with the same --out/--name (or neither, for the default folder) and the same prompt. Resume finishes that same render — same prompt, seed and settings — it does not re-prompt it; to change the prompt, start a new render.

EngineModelsOptions it acceptsNotes
Qwen (language)qwen35_0p8b, qwen35_2b, qwen35_4b, qwen35_9b, qwen36_35b_a3b--seed, --steps, --mode, --temperature, --top-p, --top-k, --tokens, --max-tokens--tokens (or --max-tokens) sets the generation length; --ignore-eos emits exactly that many tokens. Greedy decoding is the default; sampling (--seed, --temperature, --top-p, --top-k) is opt-in. Output goes to gen.txt in the --out folder.
Qwen3.6-35B-A3B (image and video input)qwen36_35b_a3b only--image FILE, --video DIR, --image-max-pixels, --video-max-pixels, --video-fpsOne image, or one folder of video frames, with the prompt: veizik run qwen36_35b_a3b "…" --image photo.png.
Wan (video)wan21_t2v_1_3b, wan21_t2v_14b, wan22_t2v_a14b, wan22_i2v_a14b--steps, --frames, --width, --height, --seed, --guidance, --guidance2, --shift, --mode, --neg-file, --image, --det-vae, --checkpoint-every, --png-step, --lora, --lora-scaleFrames are written as PNG files to DIR/frames/. LoRA adapters are not part of this release, so --lora and --lora-scale are not documented as working.

Serve: the API each engine answers.

EngineLocal server
QwenAn OpenAI-compatible HTTP server: POST /v1/chat/completions, POST /v1/completions, GET /v1/models, and health and metrics endpoints. It listens on 127.0.0.1 only; turn on an API key with --require-auth --keyfile FILE.
WanA render API: POST /v1/videos/generations with {"prompt": "…", "seed": 42} accepts the render as an asynchronous job and writes the PNG frames to a folder; /health and /v1/models answer too.
  • veizik run, chat and serve generate only after veizik activate (browser approval, once per device) and with the model's weights present (--weights DIR, VZ_WEIGHTS, or the pull cache). Output from these commands has not been certified end to end yet.
  • veizik pull wan22 downloads the Wan weights (Apache-2.0) and prepares the video decoder automatically — no manual VAE setup or support request.
05 · Results

Measured on this build.

Decode

ModelDeviceConditionVeizik
Qwen3.5-0.8BGeForce RTX 309020-token prompt · 128 out · 2 runs967.5 tok/s
Qwen3.5-0.8BGeForce RTX 309020-token prompt · 128 out · 2 runs880.8 tok/s
Qwen3.5-0.8BGeForce RTX 309020-token prompt · 128 out · 2 runs972.0 tok/s
Qwen3.5-0.8BNVIDIA RTX A500020-token prompt · 128 out · 2 runs776.7 tok/s
Qwen3.5-0.8BNVIDIA RTX A500020-token prompt · 128 out · 2 runs714.7 tok/s
Qwen3.5-0.8BNVIDIA RTX A500020-token prompt · 128 out · 2 runs771.9 tok/s
Qwen3.5-0.8BGeForce RTX 309020-token prompt · 1,024 out · 1 run1,052.0 tok/s
Qwen3.5-0.8BNVIDIA GeForce RTX 409021-token prompt · 128 out · 2 runs1,317.8 tok/s
Qwen3.5-0.8BNVIDIA GeForce RTX 409021-token prompt · 128 out · 2 runs1,156.0 tok/s
Qwen3.5-0.8BNVIDIA GeForce RTX 409021-token prompt · 128 out · 2 runs1,316.3 tok/s
Qwen3.5-0.8BNVIDIA GeForce RTX 509021-token prompt · 128 out · 2 runs1,529.1 tok/s
Qwen3.5-0.8BNVIDIA GeForce RTX 509021-token prompt · 128 out · 2 runs1,437.7 tok/s

Method, spread and the build each row was taken on →

resident_memory

ModelDeviceConditionVeizik
Qwen3.5-0.8BGeForce RTX 30901 run2.27 GiB
Qwen3.5-0.8BGeForce RTX 30901 run2.42 GiB
Qwen3.5-0.8BNVIDIA GeForce RTX 40902 runs2.4 GiB
Qwen3.5-0.8BNVIDIA GeForce RTX 40902 runs2.55 GiB
Qwen3.5-0.8BNVIDIA GeForce RTX 50902 runs2.51 GiB
Qwen3.5-0.8BNVIDIA GeForce RTX 50902 runs2.66 GiB
Qwen3.5-0.8BNVIDIA RTX A50002 runs2.22 GiB
Qwen3.5-0.8BNVIDIA RTX A50002 runs2.37 GiB
Qwen3.5-2BGeForce RTX 30901 run3.48 GiB
Qwen3.5-2BGeForce RTX 30901 run3.8 GiB
Qwen3.5-2BNVIDIA GeForce RTX 40902 runs3.61 GiB
Qwen3.5-2BNVIDIA GeForce RTX 40902 runs3.93 GiB

Method, spread and the build each row was taken on →

prompt_latency

ModelDeviceConditionVeizik
Qwen3.5-0.8BGeForce RTX 309020-token prompt · 128 out · 2 runs4.18 ms
Qwen3.5-0.8BGeForce RTX 309020-token prompt · 128 out · 2 runs4.09 ms
Qwen3.5-0.8BNVIDIA RTX A500020-token prompt · 128 out · 2 runs4.86 ms
Qwen3.5-0.8BNVIDIA RTX A500020-token prompt · 128 out · 2 runs4.65 ms
Qwen3.5-0.8BNVIDIA RTX A500020-token prompt · 128 out · 2 runs4.89 ms
Qwen3.5-0.8BNVIDIA GeForce RTX 409021-token prompt · 128 out · 2 runs3.0 ms
Qwen3.5-0.8BNVIDIA GeForce RTX 409021-token prompt · 128 out · 2 runs3.11 ms
Qwen3.5-0.8BNVIDIA GeForce RTX 409021-token prompt · 128 out · 2 runs3.01 ms
Qwen3.5-0.8BNVIDIA GeForce RTX 509021-token prompt · 128 out · 2 runs2.74 ms
Qwen3.5-0.8BNVIDIA GeForce RTX 509021-token prompt · 128 out · 2 runs2.94 ms
Qwen3.5-0.8BGeForce RTX 309021-token prompt · 1,024 out · 1 run4.38 ms
Qwen3.5-0.8BNVIDIA GeForce RTX 409021-token prompt · 1,024 out · 1 run3.01 ms

Method, spread and the build each row was taken on →

throughput

ModelDeviceConditionVeizik
Qwen3.5-0.8BGeForce RTX 309036-token prompt · 128 out · 3 runs531.9 tok/s
Qwen3.5-0.8BGeForce RTX 309036-token prompt · 128 out · 3 runs1,778.1 tok/s
Qwen3.5-0.8BGeForce RTX 309036-token prompt · 128 out · 3 runs3,125.2 tok/s
Qwen3.5-9BGeForce RTX 309034-token prompt · 128 out · 3 runs101.4 tok/s
Qwen3.5-9BGeForce RTX 309034-token prompt · 128 out · 3 runs366.4 tok/s
Qwen3.5-9BGeForce RTX 309034-token prompt · 128 out · 3 runs663.0 tok/s
Qwen3.6-35B-A3BGeForce RTX 309034-token prompt · 128 out · 3 runs160.9 tok/s
Qwen3.6-35B-A3BGeForce RTX 309034-token prompt · 128 out · 3 runs222.4 tok/s
Qwen3.6-35B-A3BGeForce RTX 309034-token prompt · 128 out · 3 runs230.6 tok/s

Method, spread and the build each row was taken on →

ttft

ModelDeviceConditionVeizik
Qwen3.5-0.8BGeForce RTX 309036-token prompt · 128 out · 3 runs24.6 ms
Qwen3.5-0.8BGeForce RTX 309036-token prompt · 128 out · 3 runs62.9 ms
Qwen3.5-0.8BGeForce RTX 309036-token prompt · 128 out · 3 runs92.6 ms
Qwen3.5-9BGeForce RTX 309034-token prompt · 128 out · 3 runs55.6 ms
Qwen3.5-9BGeForce RTX 309034-token prompt · 128 out · 3 runs176.2 ms
Qwen3.5-9BGeForce RTX 309034-token prompt · 128 out · 3 runs308.8 ms
Qwen3.6-35B-A3BGeForce RTX 309034-token prompt · 128 out · 3 runs182.7 ms
Qwen3.6-35B-A3BGeForce RTX 309034-token prompt · 128 out · 3 runs625.5 ms
Qwen3.6-35B-A3BGeForce RTX 309034-token prompt · 128 out · 3 runs1,001.0 ms

Method, spread and the build each row was taken on →

06 · The full board

Every row, and how to reproduce it.

Every published row names the device, the model, the token counts, how it was timed, and the spread. Rows taken on earlier builds of the same cores are marked. The board →

07 · Limits, troubleshooting, terms

What it does not do, and where to go.

  • Model weights are not included; the runtime distributes none, and the checkpoints are licensed by their publishers. Qwen package: download them from their publishers; the CLI cannot fetch them. Wan package: `veizik pull wan22` downloads the weights (Apache-2.0) and prepares the video decoder automatically — no manual VAE setup or support request.
  • Qwen package, not in this release: LoRA adapters, image or video input on models other than Qwen3.6-35B-A3B, tool or function calling, logprobs and embeddings over HTTP, and a weight converter.
  • Qwen package: image and video input is a capability of its Qwen3.6-35B-A3B engine only: one image (PNG or JPEG) or one video (2 to 256 PNG or JPEG frames, all the same size) per run, with a text prompt, on RTX 30-series (sm_86), RTX 40-series (sm_89) and RTX 50-series (sm_120a) class GPUs only.
  • Qwen package: the server is loopback-only (127.0.0.1); a non-loopback address is refused. To serve other machines, put a reverse proxy that terminates TLS in front of it. Without `--require-auth` any local process can use it, and authentication is one shared key per server process, not per-user keys.
  • Qwen package: the server has no usage ledger and no per-tenant quotas: `--usage-log` and `--quota-*` are accepted but not applied, and so is `--max-tokens` (set `max_tokens` in each request). `veizik stop` does not see the server.
  • Qwen package: the server context window is 4,096 tokens per request (prompt plus generated) in the validated configuration.
  • Qwen package: sampling (`--seed`, `--temperature`, `--top-p`, `--top-k`) is opt-in and experimental; greedy decoding is the default and the verified path.
  • Qwen package: Qwen3.6-35B-A3B in quality mode needs a GPU with about 26 GB or more and did not complete on a 32 GB card in validation; use balanced or fast. It was not validated for serving on 24 GB cards.
  • Qwen package: GPU code for sm_80, sm_90a and sm_100a is included but was not run in validation.
  • Qwen package: activation needs the network to register the device and install its licence; it runs no model and needs no weights. If the activation flow does not complete — the server declines the machine or the browser approval is not finished — the device is reported as not activated (exit 6) until you run it again.
  • Wan package: every speed figure for it was measured on an NVIDIA RTX 3090 (sm_86) only; other GPUs run it at speeds we have not measured.
  • Wan package: the image-to-video model takes its input image as raw RGB bytes, one byte per channel, at exactly the render size (width × height × 3 bytes); resize it first.
  • Wan package: quality is the reference path and the default; balanced, fast and ultrafast are faster and not bit-identical to it. Without `--det-vae yes` the decoded frames are not guaranteed to repeat byte for byte.
  • Wan package: the transformers and the text encoder are read as published (F32 safetensors); a BF16 shard is refused.
  • The GPU code is stored sealed, and the key to run it arrives only through device-bound activation; the licence is bound to the device and can be revoked. On Linux, root can read a running process's memory.

Troubleshooting: the docs and the release repository's issues. Terms: Install and evaluation are free; production use is licensed (see the EULA). Model weights are licensed by their publishers. Model licences are the publishers' own — which models you may use commercially.