Veizik for Apple SiliconAvailable now
Local LLMs on your Mac, on supported Apple Silicon generations: M1, M2, M4 (M3 untested here).
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.
Whose work, which task.
Developers who run open language models on a Mac and want one binary instead of a framework stack: a quick chat, a one-shot run, or a local HTTP endpoint with OpenAI-style request and response shapes for their own tools.
What comes back.
$ veizik run qwen2.5-1.5b-instruct "In two sentences, what is a safetensors checkpoint?" --tokens 96
A safetensors checkpoint is a file that contains the weights and biases of a neural network model, which are used to train the model and generate the model's output. The safetensors format is designed to be more efficient and portable than the original TensorFlow checkpoint format, and it allows for better compression and storage of the model's weights. It is commonly used in the field of machine learning and artificial intelligence to save and load neural network models.
Mac Studio (M1 Ultra), the shipped 2026.10.02 disk image, 2026-10-02, greedy decoding. First run right after installing: 3.8 s from the command to the full answer; the next run 0.8 s. Printed as generated; the model's description of the format is its own.
Where it runs, and what.
- Apple Silicon Mac (M1 or newer), macOS 13 or later, arm64 only. Intel Macs are not supported.
- Tested on macOS 15.5 (M2 Pro), 15.7.7 (M4 Pro), 26.5 (M1 Max) and 26.5.1 (M1 Ultra).
19 catalogue ids in the download. The measured table, with device memory per model and the build it was taken on, is on the hardware page.
| Model | Id | Checkpoint | Output |
|---|---|---|---|
| Qwen2.5-0.5B | qwen2.5-0.5b | Qwen/Qwen2.5-0.5B | completion |
| Qwen2.5-1.5B | qwen2.5-1.5b | Qwen/Qwen2.5-1.5B | completion |
| Qwen2.5-7B | qwen2.5-7b | Qwen/Qwen2.5-7B | completion |
| Qwen2.5-0.5B-Instruct | qwen2.5-0.5b-instruct | Qwen/Qwen2.5-0.5B-Instruct | chat and completion |
| Qwen2.5-1.5B-Instruct | qwen2.5-1.5b-instruct | Qwen/Qwen2.5-1.5B-Instruct | chat and completion |
| Qwen2.5-7B-Instruct | qwen2.5-7b-instruct | Qwen/Qwen2.5-7B-Instruct | chat and completion |
| Qwen3-1.7B | qwen3-1.7b | Qwen/Qwen3-1.7B | chat and completion |
| Qwen3-1.7B-Base | qwen3-1.7b-base | Qwen/Qwen3-1.7B-Base | completion |
| SD1.5 | sd1.5 | stable-diffusion-v1-5/stable-diffusion-v1-5 | image |
| SDXS-512 | sdxs-512 | IDKiro/sdxs-512-dreamshaper | image |
| SmolLM2-135M | smollm2-135m | HuggingFaceTB/SmolLM2-135M | completion |
| SmolLM2-360M | smollm2-360m | HuggingFaceTB/SmolLM2-360M | completion |
| GPT-2 124M | gpt2-124m | openai-community/gpt2 | completion |
| LFM2.5-230M | lfm2.5-230m | LiquidAI/LFM2.5-230M | completion |
| DreamShaper-8 + AnimateDiff-Lightning | dreamshaper8-video-lightning8 | Lykon/dreamshaper-8 | video |
| SAC Pendulum-v1 | sac-pendulum-v1 | sb3/sac-Pendulum-v1 | output |
| TD3 BipedalWalker-v3 | td3-bipedalwalker-v3 | sb3/td3-BipedalWalker-v3 | output |
| SAC Humanoid-v3 | sac-humanoid-v3 | sb3/sac-Humanoid-v3 | output |
| TD3 HalfCheetah-v3 | td3-halfcheetah-v3 | sb3/td3-HalfCheetah-v3 | output |

Veizik for Apple Silicon
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
From the package to a first answer.
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. Personal, educational, research and evaluation use at no charge, including internal evaluation inside a company; commercial use needs a separate licence from LinkPick; publishing benchmarks is permitted (LICENSE sections 2 and 4 in the disk image).
veizik-metal-2026.10.02-r10.dmg · 6.08 MB · Apple disk image (.dmg), signed and notarised
sha256 d74d9f2f6b167679df1294325c12921709363f3d6aa75633f2edfd043ca9f678
-
Install
on your machineOne package. One command in a shell, and it is ready.
./install.sh
-
Create an account
needs the networkAn email link, Google or GitHub. Self-service, nobody in the loop.
veizik.com/signin
-
Activate this device
needs the networkThe 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
-
Pull a checkpoint
needs the networkOne 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
-
Run
on your machineGeneration 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.
$ shasum -a 256 veizik-metal-2026.10.02-r10.dmg # d74d9f2f6b167679df1294325c12921709363f3d6aa75633f2edfd043ca9f678 $ ./install.sh $ veizik activate $ veizik pull qwen2.5-7b $ veizik chat qwen2.5-7b $ veizik run qwen2.5-7b "The capital of France is" $ veizik serve qwen2.5-7b --port 8000
Measured on this build.
The whole installation: the CLI, four model cores and the signed core-id table. Summed from the installed tree — what install.sh leaves at its destination — not from the disk image, which is smaller because the installer unpacks and generates rather than only copying.
Standard checkpoints are prepared in memory.
4 of them answer a chat request as well as a completion.
Decode
| Model | Device | Condition | Veizik |
|---|---|---|---|
| Qwen2.5-0.5B | Apple M2 Pro | 512-token prompt · 128 out · 11 runs | 300.55 tok/s |
| Qwen2.5-0.5B | Apple M1 Ultra | 512-token prompt · 128 out · 11 runs | 377.44 tok/s |
| Qwen2.5-0.5B | Apple M1 Max | 512-token prompt · 128 out · 11 runs | 273.05 tok/s |
| Qwen2.5-0.5B | Apple M4 Pro | 512-token prompt · 128 out · 11 runs | 462.81 tok/s |
| Qwen2.5-0.5B | Apple M2 Pro | 3,968-token prompt · 128 out · 11 runs | 222.02 tok/s |
| Qwen2.5-0.5B | Apple M1 Ultra | 3,968-token prompt · 128 out · 11 runs | 305.51 tok/s |
| Qwen2.5-0.5B | Apple M1 Max | 3,968-token prompt · 128 out · 11 runs | 208.92 tok/s |
| Qwen2.5-0.5B | Apple M4 Pro | 3,968-token prompt · 128 out · 11 runs | 358.41 tok/s |
| Qwen2.5-0.5B | Apple M2 Pro | 8,192-token prompt · 128 out · 11 runs | 192.84 tok/s |
| Qwen2.5-0.5B | Apple M1 Ultra | 8,192-token prompt · 128 out · 11 runs | 280.56 tok/s |
| Qwen2.5-0.5B | Apple M1 Max | 8,192-token prompt · 128 out · 11 runs | 209.87 tok/s |
| Qwen2.5-0.5B | Apple M4 Pro | 8,192-token prompt · 128 out · 10 runs | 353.16 tok/s |
Method, spread and the build each row was taken on →
Prefill
| Model | Device | Condition | Veizik |
|---|---|---|---|
| Qwen2.5-0.5B | Apple M2 Pro | 512-token prompt · 128 out · 11 runs | 5,059.71 tok/s |
| Qwen2.5-0.5B | Apple M1 Ultra | 512-token prompt · 128 out · 11 runs | 9,631.77 tok/s |
| Qwen2.5-0.5B | Apple M1 Max | 512-token prompt · 128 out · 11 runs | 7,901.26 tok/s |
| Qwen2.5-0.5B | Apple M4 Pro | 512-token prompt · 128 out · 11 runs | 7,979.18 tok/s |
| Qwen2.5-0.5B | Apple M2 Pro | 3,968-token prompt · 128 out · 11 runs | 4,664.38 tok/s |
| Qwen2.5-0.5B | Apple M1 Ultra | 3,968-token prompt · 128 out · 11 runs | 13,075.08 tok/s |
| Qwen2.5-0.5B | Apple M1 Max | 3,968-token prompt · 128 out · 11 runs | 7,503.89 tok/s |
| Qwen2.5-0.5B | Apple M4 Pro | 3,968-token prompt · 128 out · 11 runs | 6,929.44 tok/s |
| Qwen2.5-0.5B | Apple M2 Pro | 8,192-token prompt · 128 out · 11 runs | 3,916.51 tok/s |
| Qwen2.5-0.5B | Apple M1 Ultra | 8,192-token prompt · 128 out · 11 runs | 11,327.58 tok/s |
| Qwen2.5-0.5B | Apple M1 Max | 8,192-token prompt · 128 out · 11 runs | 6,380.84 tok/s |
| Qwen2.5-0.5B | Apple M4 Pro | 8,192-token prompt · 128 out · 10 runs | 5,803.68 tok/s |
Method, spread and the build each row was taken on →
Model weight footprint
| Model | Device | Condition | Veizik |
|---|---|---|---|
| Qwen2.5-0.5B | Apple M4 Pro | 1 run | 343.6 MB |
| Qwen2.5-0.5B | Apple M1 Ultra | 1 run | 343.6 MB |
| Qwen2.5-0.5B | Apple M1 Max | 1 run | 343.6 MB |
| Qwen2.5-1.5B | Apple M4 Pro | 1 run | 926.9 MB |
| Qwen2.5-1.5B | Apple M1 Ultra | 1 run | 926.9 MB |
| Qwen2.5-1.5B | Apple M1 Max | 1 run | 926.9 MB |
| Qwen2.5-7B | Apple M4 Pro | 1 run | 4,114.0 MB |
| Qwen2.5-7B | Apple M1 Ultra | 1 run | 4,114.0 MB |
| Qwen2.5-7B | Apple M1 Max | 1 run | 4,114.0 MB |
| Qwen3-1.7B | Apple M4 Pro | 1 run | 968.0 MB |
| Qwen3-1.7B | Apple M1 Ultra | 1 run | 968.0 MB |
| Qwen3-1.7B | Apple M1 Max | 1 run | 968.0 MB |
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 →
$ veizik bench qwen2.5-7b
What it does not do, and where to go.
- `veizik serve` passes sampler fields such as temperature, top_p, seed and stop 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.
- Qwen3-1.7B returns its reasoning text inside the answer; add /no_think to the prompt for a direct reply.
- Not supported: Intel Macs, Windows, Linux. Activation needs a browser on a device you control.
- Offline use: run once while online and the leased key stays in memory for 48 hours (server-set, as of 2026-10-02); restarting the Mac ends that window, and a new session cannot start offline outside it.
- Every published figure for this build, with its run count and method, is on the benchmarks board.
Troubleshooting: the docs and the release repository's issues. Terms: Personal, educational, research and evaluation use at no charge, including internal evaluation inside a company; commercial use needs a separate licence from LinkPick; publishing benchmarks is permitted (LICENSE sections 2 and 4 in the disk image). Model licences are the publishers' own — which models you may use commercially.