VeizikNVIDIA and Apple Silicon builds are available now.Release notes →
Documentation

Veizik documentation

Install Veizik, run a supported model, serve a local endpoint, and inspect performance on your hardware.

Quickstart

From nothing to a first run

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>

Apple Silicon, step by step. The Veizik build for Apple Silicon installs from its signed disk image, exactly as before. NVIDIA installs with one veizik command, model engines by name, above.

  1. Install

    on your machine

    One signed package. One command in a shell, and it is ready.

    ./install.sh

  2. Create an account

    needs the network

    An email link, Google or GitHub. Self-service, nobody in the loop.

    veizik.com/signin

  3. Activate this device

    needs the network

    The command opens your browser — and prints the link too, in case it cannot. You approve there, and the machine receives a licence bound to it.

    veizik activate

  4. Pull a checkpoint

    needs the network

    One command downloads a supported safetensors checkpoint into the local cache and makes it ready to run. A gated repository needs a token stored with veizik hf login; the licence is accepted at the publisher.

    veizik pull

  5. Run

    on your machine

    Generation happens on the device. Your prompt, the weights and the output stay on the machine; the first run of a session leases the licence key into memory, and for the window the server sets — 48 hours as of 2026-10-02 — the runs that reuse it need no connection. Restarting the computer ends the window.

    veizik run

3 of the 5 steps reach the network. Generation is not one of them.

zsh · Apple Silicon
# 1 · get the build — signed package, published with its digest
#     account:  veizik.com/signin   (free, one click)
#     build:    github.com/veizikhq/veizik-metal/releases

# 2 · verify and install — shell only, nothing compiled
$ shasum -a 256 -c SHA256SUMS
$ ./install.sh

# 3 · put this machine on your account
$ veizik activate

# 4 · fetch a supported checkpoint, then run
$ veizik pull qwen2.5-7b
$ veizik run qwen2.5-7b "The capital of France is"
 Paris

Step 1 is two things and both are instant. The signed package is published with its SHA-256, and the account is self-service — an email link, Google or GitHub — with a device activated from your own account page and nobody in the loop. What that means today is spelled out below.

The installer takes one argument — where to install — and defaults to ~/Applications/Veizik: the engine, the model cores and the signed core-id table go there, and a small launcher is written to ~/.local/bin/veizik that pins that location. To install somewhere else, pass it: ./install.sh ~/somewhere/veizik. That is also how you install a second copy without touching the first.

The launcher pins the install root, so setting an environment variable will not move it — pass the path to the installer instead.

Everything it needs is in the package: nothing is compiled on your machine and no system file is touched. To uninstall, delete those two paths and the three the CLI creates as you use it: ~/Library/Application Support/Veizik (this machine’s activation and settings), ~/Library/Caches/Veizik (the download cache) and ~/veizik-out (working files from run, chat and serve).

Access

Getting the build

veizik.access · NVIDIA

EXPERIMENTAL. Install it with the veizik command: `veizik install qwen36` (or qwen, qwen35, or a model key) downloads this package — a single signed .vzpack, plus the shared core .vzroot the first time — from its GitHub release and refuses it unless it matches the SHA-256 printed here. Then run `veizik activate` once per device: approve the printed address and code in any browser, or activate without a browser with a key and CLI password from your account page. One device activation enables the whole bundle; the key to run the sealed GPU code arrives only through device-bound activation.

Download veizik-qwen-cuda-1.1.4-linux-x86_64.vzpack

Size
56,694,883 bytes
SHA-256
0d925ad92f450e833367834924e4d5d078edab7c546499e214f17b476a930f5e
Release
cuda-qwen-1.1.4
Source
veizikhq/veizik-cuda

Download veizik-wan-1.2.92-linux-x86_64.vzpack

Size
6,970,958 bytes
SHA-256
940318320e2e6dc59295f0acebf62c56830ad732df158a6b74859a36bc5c7249
Release
cuda-wan-1.2.92
Source
veizikhq/veizik-cuda

Questions: support@veizik.com.

veizik.access

EXPERIMENTAL. Download the signed disk image from the release page and check it against the SHA-256 printed here. Open it, run install.sh from the volume that just opened, then activate the device from your account. If you are upgrading from 2026.10.01 or 2026.10.02, the device you already approved stays approved and you do not need to activate it again.

Get Veizik from GitHub

Size
6,082,865 bytes
SHA-256
d74d9f2f6b167679df1294325c12921709363f3d6aa75633f2edfd043ca9f678
Release
2026.10.02-r10
Source
github.com/veizikhq/veizik-metal

Questions: support@veizik.com.

Activate

Put this machine on your account

No form, no e-mail, nobody in the loop. The machine asks, you approve it from a browser you are already signed in to, and the two are linked.

  1. in a browser Create an account an e-mail link, Google or GitHub veizik.com/signin
  2. on the machine veizik activate the machine you want to use it opens your browser, and prints the link too
  3. back in the browser Approve that code while signed in as you veizik.com/activate
  4. automatic The machine receives its licence and is listed on your account

All four steps work. The machine signs a challenge the server chose, so approving a code does not hand a licence to whoever is holding it — only to the machine that started the request.

The code is short because you type it. That is also why the page will not tell you whether a code you did not create exists — unknown, expired, already used and refused are one answer on purpose.

Browser-free activation — a build agent, a server, a fleet — is in the command (--key, --email), but the account service does not issue enrolment keys yet, so every device is activated through a browser today. When keys are issued, they come from your account page and nowhere else.

Run a model

Generate, chat, or serve

TaskCommand
Generate once and exitveizik run <model> "<prompt>" [--tokens N] [--ignore-eos]
Interactive sessionveizik chat <model> [tokens]
Local HTTP endpointveizik serve [<model>] [--host 127.0.0.1] [--port N] [--max-tokens N] [--require-auth] [--usage-log <path>] [--quota-policy <path>] [--quota-dir <path>] [--quota-tenants <path>]
See what is installedveizik models
Check this installationveizik doctor

Every command takes the model identifier that veizik list and the catalogue show: qwen2.5-0.5b, qwen2.5-1.5b, qwen2.5-7b, qwen2.5-0.5b-instruct, qwen2.5-1.5b-instruct, qwen2.5-7b-instruct, qwen3-1.7b, qwen3-1.7b-base. (veizik list is the full catalogue; veizik models lists only what you have installed.) The identifier says which checkpoint and which family you ran.

To time a run the way our published figures were timed, and to set up the engine we compared against, follow Reproduce our benchmarks.

NVIDIA · CUDA

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} renders and answers with the folder of PNG frames; /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.
Models and checkpoints

Where the weights come from

Veizik reads supported safetensors checkpoints as published. veizik pull <model> downloads one from Hugging Face into the local cache — a gated repository needs a token stored with veizik hf login — and the engine writes nothing back to the checkpoint.

veizik inspect <model> reports what a model is, the context it supports, where it is installed, and whether this machine can run it. veizik convert <path> reports whether a checkpoint is supported; in this build it writes no converted file, and none is required.

CLI reference

The commands documented here

This build also ships commands for running a shared server for other people. They are not documented here yet. veizik help on the installed build prints every command it has.

CommandFormBehaviour
runrun <model> "<prompt>" [--tokens N] [--ignore-eos]Generate once and exit. `--tokens N` sets the generation budget and may be placed anywhere; an unknown flag is refused rather than read as the prompt. With `--ignore-eos` the model is not allowed to stop early, so the run produces exactly the number of tokens asked for; `--tokens N` counts the first token, which comes from reading the prompt, so N-1 are decoded.
chatchat <model> [tokens]Interactive session.
serveserve [<model>] [--host 127.0.0.1] [--port N] [--max-tokens N] [--require-auth] [--usage-log <path>] [--quota-policy <path>] [--quota-dir <path>] [--quota-tenants <path>]Answer over HTTP, on this machine only. It binds the loopback address; --host is accepted for compatibility and any other address is refused. Name a model to serve just that one, or leave it out and it hosts every installed model that carries a serve core — one resident core each — routing each request by its "model" field; /v1/models lists what it is hosting, and a model whose core does not answer is skipped with a line saying so. Sampler fields such as temperature, top_p, seed and stop are passed to the engine, which answers them or names the one it will not take. Streaming needs the resident core: it is refused when tools is in the same request, and refused on the per-request path. --require-auth demands an API key; --usage-log writes a usage record per request; the --quota-policy / --quota-dir / --quota-tenants trio applies per-tenant limits.
pspsList the servers running on this machine. It says so plainly when none is.
stopstop <port> | allStop a server on that port, or all of them.
modelsmodelsList installed models with their catalogue status and disk state.
pullpull <model>[@<revision>] [--profile P]Download a model into the local cache and make it ready to run. Checkpoints come from Hugging Face; a gated repository needs a token stored with veizik hf login, and the licence is accepted at the publisher, not here.
hfhf login | logout | statusStore, remove or report the Hugging Face token used for gated models. The token is read from standard input and kept in Hugging Face’s own file, not in a Veizik directory.
removeremove <model>[@<revision>]Delete it from the Veizik cache.
convertconvert <source> [-o <file>]Report whether a checkpoint is supported. Writes no file in this build.
inspectinspect <model>Show model, status, context, geometry, location, and whether it is runnable.
benchbench <model>Measure this machine with the installed binaries.
cachecache info | cleanInspect or tidy the download cache.
configconfig show | set | unsetSee and change settings.
completioncompletion zsh | bash | fishEmit a shell completion script.
statusstatusShow this device's activation and plan.
activateactivate [--key KEY | --email ADDR] [--password-stdin | --password-file PATH | --password PW] [--no-password] [--code CODE] [--refresh]Register this device. With no options it opens your browser so you can approve the machine from your account, and prints the link as well in case it cannot. One activation per device — not per model. An already-approved device is never sent to the browser again: a new release or an expiring lease is renewed silently with this Mac's Secure Enclave key, and `--refresh` does only that (it never opens a browser, and fails if this Mac is not approved or was disabled from your account). For a machine with no browser — a server over SSH, a build agent — create an enrolment key and set a CLI password on your account page, then give the key with `--key KEY` (or `-k`). `--key -` reads VEIZIK_ACTIVATION_KEY and `--key file:PATH` reads the first line of PATH. The password comes from `--password-stdin` (recommended), `--password-file PATH`, or, if you give none of these, a prompt. `--password PW` passes it on the command line, where `ps` and your shell history can see it — the command warns, and your account is e-mailed to say the password should be changed. `--no-password` is for a key issued without one. `--email ADDR` uses your account address and CLI password instead of a key, if you turned that on for your account; it may e-mail you a six-digit code, which `--code CODE` supplies when you already have it.
deactivatedeactivate [--forget]Release THIS device from your account — its licence slot is freed — and delete the lease stored on it. `--forget` also deletes this machine's device key, which is what you want for a pod or VM you are about to discard. It can only release the machine it runs on. To turn off a device you no longer have, use your account page: a stolen machine must not be able to cut off the ones you still hold.
devicesdevices [disable | enable]List the devices on this licence, or switch THIS machine off and on again: `devices disable` hands it back and frees its licence slot, `devices enable` lets it run again. It takes no device name — it can only switch the machine it runs on. To turn off a device you no longer have, a lost laptop, sign in on the website; the same list is on your account page, and that is also the only place a device can be revoked outright. A stolen machine must not be able to cut off the ones you still hold, which is why this command cannot name another one.
doctordoctorCheck backend, catalogue, and installation integrity.
versionversionShow version and backend.
helphelpPrints every command the installed build has, with a usage line for each. It is the authority on what your copy can do: this page documents a subset, and `veizik help` is how you see the rest.

Every command here is one the release binary has — the list is compared against the binary before a release goes out — and veizik help lists the few it has that this page does not document. Where a command can be run without changing anything, what it does was checked as well; the ones that generate, download, install or delete are described from the binary, not from a run.

Exit codes

Scriptable and fixed

CodeMeaning
0Success.
2Usage error — no arguments, unknown command, missing prompt.
4Model not found or not resolvable.
5Integrity check failed. Nothing runs.
6No supported device or runtime on this machine.
Offline behaviour and privacy

What leaves the machine

A licence check, not your data

What the engine sends our way is a licence check for the model you are running. Your prompt, the weights and what comes back never leave the machine. The lease lives in memory for a short window, so repeat runs inside it reach the network not at all. veizik status reads the licence already on the device and answers without a connection.

No writes

No converted artifact, no weight cache, no temporary model files.

Clean uninstall

Delete the two install paths. No system files, daemons, or drivers.

Troubleshooting

Common results

SymptomCause and fix
veizik doctor reports no backendThe installation is not where the binary expects it. Set VEIZIK_ROOT, or reinstall.
Exit code 4 on a model nameThe name is not in veizik list. Use the short name from that catalogue.
The run stops at the context limitPrompt and generation together exceed the model's limit, which is listed per model in the catalogue.
No checkpoint foundRun veizik pull <model> first, then run again.

Release-specific limitations are listed with each release.