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 adaptersComing 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.
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.
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-fsSLhttps://veizik.com/install.sh| sh# if the installer asks you to put ~/.local/bin on your PATH$exportPATH="$HOME/.local/bin:$PATH"$veiziklist# Qwen (language): install by qwen, qwen35, qwen36 or a full model key (qwen35_0p8b, qwen35_2b, qwen35_4b, qwen35_9b, qwen36_35b_a3b)$veizikinstallqwen36# activation needs no weights; point VZ_WEIGHTS at the checkpoint you downloaded, for veizik run$exportVZ_WEIGHTS=/data/models$veizikactivate$veizikrunqwen36_35b_a3b"The capital of France is"--tokens 32$veizikchatqwen35_2b$veizikserveqwen35_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)$veizikinstallwan22$veizikactivate#onceperdevice;fortheWanpackagetoo$veizikpullwan22#fetchestheWanweightsandpreparesthevideodecoder$veizikrunwan22_t2v_a14b"<your prompt>"--out ./clip$veizikservewan22_t2v_a14b--port 8000#renderAPI: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-fsSLhttps://veizik.com/install.sh| sh# if the installer asks you to put ~/.local/bin on your PATH$exportPATH="$HOME/.local/bin:$PATH"$veiziklist# Qwen (language): install by qwen, qwen35, qwen36 or a full model key (qwen35_0p8b, qwen35_2b, qwen35_4b, qwen35_9b, qwen36_35b_a3b)$veizikinstallqwen36# activation needs no weights; point VZ_WEIGHTS at the checkpoint you downloaded, for veizik run$exportVZ_WEIGHTS=/data/models$veizikactivate$veizikrunqwen36_35b_a3b"The capital of France is"--tokens 32$veizikchatqwen35_2b$veizikserveqwen35_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)$veizikinstallwan22$veizikactivate#onceperdevice;fortheWanpackagetoo$veizikpullwan22#fetchestheWanweightsandpreparesthevideodecoder$veizikrunwan22_t2v_a14b"<your prompt>"--out ./clip$veizikservewan22_t2v_a14b--port 8000#renderAPI: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.
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
Command
What 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 ps
List the resident servers running here.
veizik stop <port> | all
Stop a resident server.
Get and manage models
Command
What it does
veizik models
List what is installed here.
veizik list
Model 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 | status
Hugging Face token for gated models.
veizik remove <model>[@<revision>]
Delete cached weights.
veizik inspect <model>
Show what a model is.
Look after the installation
Command
What it does
veizik bench <model>
Measure this machine.
veizik cache info | clean
Inspect or tidy the download cache.
veizik config show | set | unset
See and change settings.
veizik completion zsh | bash | fish
Emit a shell completion script.
veizik status
Show this device's activation and plan.
veizik activate
Register 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-id
Print this machine's device id, as the device list on your account shows it.
veizik doctor
Check this installation.
veizik version
Show 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.
--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.
Frames 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.
Engine
Local server
Qwen
An 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.
Wan
A 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.
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.