Q.E.L.V.A.R.I.

Native Inference Engine

The world's best accuracy and speed.※1

An inference engine built from scratch for the Mac. Custom kernels optimised for Apple silicon push speed to the limit. Our own quantisation runs models light while keeping accuracy close to the original. Inference happens on your Mac, and conversations are never sent to the cloud.

APPLE SILICONMETALMTPQ4T / Q3T

Why Native

Nothing in between.

Many local AI apps run models through a Python runtime or a local server. Q.E.L.V.A.R.I. is a native engine written only for the Mac, and it runs models directly inside R.E.V.I.S.

Built for Apple silicon

Built on MLX, with custom Metal kernels that tighten the computation. It turns the design of Apple silicon, where the CPU and GPU share the same memory, directly into speed.

Light and faithful

Our own quantisation (Q4T, Q3T) makes models smaller and lighter while keeping accuracy close to the original model's output.※1

More on quantisation

Only on your Mac

There's no network traffic for inference. Your conversations, your files, and the context the model has read all stay on your Mac.

Speculative Decoding

Draft ahead. Check in one pass.

With MTP (Multi-Token Prediction), a small draft model writes a few words ahead, and the main model checks them all at once. Only words the main model has confirmed are kept. The answer moves forward in fewer steps than writing one word at a time.

When the draft misses, the main model rewrites it. The speedup varies with the model, the context length, and how many run at once.

Context Memory

Continue without rereading.

The context the model has finished reading (the KV cache) is encrypted and kept on your Mac's SSD. When you resume a conversation, it doesn't have to read everything again from the start.

Encrypted, kept local

Saved context is encrypted, and the next turn of the conversation picks up from there.

Several at once

Conversation replies and generation for background tasks can run side by side on a single Mac.

Semantic search, in the same place

The same engine also runs the embedding models that turn the meaning of words into vectors. It's the part that supports K.E.C.H.I. search.

Measured

By the numbers.

It doesn't re-read everything on every turn of a conversation. It keeps the context it has finished reading, reads only what has just been added—your message or a tool's output—and writes the answer. We therefore measured the speed of reading new input and the speed of writing the answer across five Macs, at different lengths of context already read. Every one of these speeds was achieved without sacrificing computational precision.※2

How Macs compare.

We compared them using Qwen3.6 35B and Gemma 4 26B, which run on every Mac. These are the speeds when the context already read is 16K (a typical length in everyday use).

Prefill (speed of reading new input)tok/s
  1. M5 Ultra1,4431,505
  2. M5 Max1,2381,284
  3. M4 Max664628
  4. M5 Pro783815
  5. M4 Pro390372
Decode (speed of writing the answer)tok/s
  1. M5 Ultra239241
  2. M5 Max196170
  3. M4 Max172144
  4. M5 Pro123106
  5. M4 Pro10386

A guide to writing speed.

This plays back the speed of writing an answer (decode) in real time. It shows the speed for Qwen3.6 35B with a 16K context. Choose a Mac and press Play.

0.0 s

People read silently at about 4 words a second.

Context length and speed.

As the context the model has already read grows longer, both reading speed and writing speed come down. The horizontal axis shows context length (1K to 128K tokens), and the vertical axis shows speed. Choose a Mac.

Prefill (speed of reading new input)tok/s
05001,0001,5002,0001K4K16K64K128KQwen3.8 27B 1K: 483 tok/sQwen3.8 27B 2K: 480 tok/sQwen3.8 27B 4K: 475 tok/sQwen3.8 27B 8K: 464 tok/sQwen3.8 27B 16K: 441 tok/sQwen3.8 27B 32K: 395 tok/sQwen3.8 27B 64K: 316 tok/sQwen3.8 27B 128K: 185 tok/sGemma 4 26B 1K: 1,766 tok/sGemma 4 26B 2K: 1,840 tok/sGemma 4 26B 4K: 1,735 tok/sGemma 4 26B 8K: 1,650 tok/sGemma 4 26B 16K: 1,505 tok/sGemma 4 26B 32K: 1,273 tok/sGemma 4 26B 64K: 959 tok/sGemma 4 26B 128K: 634 tok/sOrnith 1.5 35B 1K: 1,831 tok/sOrnith 1.5 35B 2K: 1,682 tok/sOrnith 1.5 35B 4K: 1,646 tok/sOrnith 1.5 35B 8K: 1,565 tok/sOrnith 1.5 35B 16K: 1,434 tok/sOrnith 1.5 35B 32K: 1,232 tok/sOrnith 1.5 35B 64K: 951 tok/sOrnith 1.5 35B 128K: 654 tok/sQwen3.6 35B 1K: 1,804 tok/sQwen3.6 35B 2K: 1,693 tok/sQwen3.6 35B 4K: 1,653 tok/sQwen3.6 35B 8K: 1,595 tok/sQwen3.6 35B 16K: 1,443 tok/sQwen3.6 35B 32K: 1,237 tok/sQwen3.6 35B 64K: 956 tok/sQwen3.6 35B 128K: 648 tok/sOrnith 1.5 35BQwen3.6 35BGemma 4 26BQwen3.8 27B
Decode (speed of writing the answer)tok/s
01002003001K4K16K64K128KQwen3.8 27B 1K: 95 tok/sQwen3.8 27B 2K: 100 tok/sQwen3.8 27B 4K: 100 tok/sQwen3.8 27B 8K: 96 tok/sQwen3.8 27B 16K: 87 tok/sQwen3.8 27B 32K: 89 tok/sQwen3.8 27B 64K: 83 tok/sQwen3.8 27B 128K: 70 tok/sGemma 4 26B 1K: 260 tok/sGemma 4 26B 2K: 243 tok/sGemma 4 26B 4K: 254 tok/sGemma 4 26B 8K: 247 tok/sGemma 4 26B 16K: 241 tok/sGemma 4 26B 32K: 228 tok/sGemma 4 26B 64K: 220 tok/sGemma 4 26B 128K: 182 tok/sOrnith 1.5 35B 1K: 287 tok/sOrnith 1.5 35B 2K: 284 tok/sOrnith 1.5 35B 4K: 270 tok/sOrnith 1.5 35B 8K: 256 tok/sOrnith 1.5 35B 16K: 248 tok/sOrnith 1.5 35B 32K: 225 tok/sOrnith 1.5 35B 64K: 218 tok/sOrnith 1.5 35B 128K: 190 tok/sQwen3.6 35B 1K: 295 tok/sQwen3.6 35B 2K: 278 tok/sQwen3.6 35B 4K: 266 tok/sQwen3.6 35B 8K: 245 tok/sQwen3.6 35B 16K: 239 tok/sQwen3.6 35B 32K: 223 tok/sQwen3.6 35B 64K: 259 tok/sQwen3.6 35B 128K: 195 tok/sQwen3.6 35BOrnith 1.5 35BGemma 4 26BQwen3.8 27B
Prefill (speed of reading new input)tok/s
05001,0001,5002,0001K4K16K64K128KQwen3.8 27B 1K: 371 tok/sQwen3.8 27B 2K: 369 tok/sQwen3.8 27B 4K: 364 tok/sQwen3.8 27B 8K: 355 tok/sQwen3.8 27B 16K: 334 tok/sQwen3.8 27B 32K: 295 tok/sQwen3.8 27B 64K: 240 tok/sQwen3.8 27B 128K: 147 tok/sGemma 4 26B 1K: 1,503 tok/sGemma 4 26B 2K: 1,485 tok/sGemma 4 26B 4K: 1,467 tok/sGemma 4 26B 8K: 1,394 tok/sGemma 4 26B 16K: 1,284 tok/sGemma 4 26B 32K: 1,088 tok/sGemma 4 26B 64K: 827 tok/sGemma 4 26B 128K: 556 tok/sOrnith 1.5 35B 1K: 1,597 tok/sOrnith 1.5 35B 2K: 1,445 tok/sOrnith 1.5 35B 4K: 1,435 tok/sOrnith 1.5 35B 8K: 1,343 tok/sOrnith 1.5 35B 16K: 1,231 tok/sOrnith 1.5 35B 32K: 1,023 tok/sOrnith 1.5 35B 64K: 777 tok/sOrnith 1.5 35B 128K: 519 tok/sQwen3.6 35B 1K: 1,555 tok/sQwen3.6 35B 2K: 1,454 tok/sQwen3.6 35B 4K: 1,421 tok/sQwen3.6 35B 8K: 1,338 tok/sQwen3.6 35B 16K: 1,238 tok/sQwen3.6 35B 32K: 1,021 tok/sQwen3.6 35B 64K: 778 tok/sQwen3.6 35B 128K: 519 tok/sGemma 4 26BOrnith 1.5 35BQwen3.6 35BQwen3.8 27B
Decode (speed of writing the answer)tok/s
0501001502002501K4K16K64K128KQwen3.8 27B 1K: 62 tok/sQwen3.8 27B 2K: 65 tok/sQwen3.8 27B 4K: 64 tok/sQwen3.8 27B 8K: 64 tok/sQwen3.8 27B 16K: 59 tok/sQwen3.8 27B 32K: 58 tok/sQwen3.8 27B 64K: 53 tok/sQwen3.8 27B 128K: 37 tok/sGemma 4 26B 1K: 179 tok/sGemma 4 26B 2K: 171 tok/sGemma 4 26B 4K: 172 tok/sGemma 4 26B 8K: 167 tok/sGemma 4 26B 16K: 170 tok/sGemma 4 26B 32K: 156 tok/sGemma 4 26B 64K: 139 tok/sGemma 4 26B 128K: 114 tok/sOrnith 1.5 35B 1K: 215 tok/sOrnith 1.5 35B 2K: 220 tok/sOrnith 1.5 35B 4K: 213 tok/sOrnith 1.5 35B 8K: 205 tok/sOrnith 1.5 35B 16K: 191 tok/sOrnith 1.5 35B 32K: 192 tok/sOrnith 1.5 35B 64K: 163 tok/sOrnith 1.5 35B 128K: 133 tok/sQwen3.6 35B 1K: 218 tok/sQwen3.6 35B 2K: 204 tok/sQwen3.6 35B 4K: 202 tok/sQwen3.6 35B 8K: 209 tok/sQwen3.6 35B 16K: 196 tok/sQwen3.6 35B 32K: 192 tok/sQwen3.6 35B 64K: 188 tok/sQwen3.6 35B 128K: 143 tok/sQwen3.6 35BOrnith 1.5 35BGemma 4 26BQwen3.8 27B
Prefill (speed of reading new input)tok/s
02004006008001,0001K4K16K64K128KQwen3.8 27B 1K: 170 tok/sQwen3.8 27B 2K: 169 tok/sQwen3.8 27B 4K: 166 tok/sQwen3.8 27B 8K: 162 tok/sQwen3.8 27B 16K: 152 tok/sQwen3.8 27B 32K: 133 tok/sQwen3.8 27B 64K: 111 tok/sQwen3.8 27B 128K: 80 tok/sGemma 4 26B 1K: 717 tok/sGemma 4 26B 2K: 736 tok/sGemma 4 26B 4K: 715 tok/sGemma 4 26B 8K: 680 tok/sGemma 4 26B 16K: 628 tok/sGemma 4 26B 32K: 528 tok/sGemma 4 26B 64K: 412 tok/sGemma 4 26B 128K: 259 tok/sOrnith 1.5 35B 1K: 943 tok/sOrnith 1.5 35B 2K: 852 tok/sOrnith 1.5 35B 4K: 811 tok/sOrnith 1.5 35B 8K: 761 tok/sOrnith 1.5 35B 16K: 661 tok/sOrnith 1.5 35B 32K: 519 tok/sOrnith 1.5 35B 64K: 375 tok/sOrnith 1.5 35B 128K: 226 tok/sQwen3.6 35B 1K: 933 tok/sQwen3.6 35B 2K: 846 tok/sQwen3.6 35B 4K: 822 tok/sQwen3.6 35B 8K: 761 tok/sQwen3.6 35B 16K: 664 tok/sQwen3.6 35B 32K: 525 tok/sQwen3.6 35B 64K: 372 tok/sQwen3.6 35B 128K: 218 tok/sGemma 4 26BOrnith 1.5 35BQwen3.6 35BQwen3.8 27B
Decode (speed of writing the answer)tok/s
0501001502001K4K16K64K128KQwen3.8 27B 1K: 49 tok/sQwen3.8 27B 2K: 51 tok/sQwen3.8 27B 4K: 50 tok/sQwen3.8 27B 8K: 48 tok/sQwen3.8 27B 16K: 46 tok/sQwen3.8 27B 32K: 47 tok/sQwen3.8 27B 64K: 42 tok/sQwen3.8 27B 128K: 33 tok/sGemma 4 26B 1K: 148 tok/sGemma 4 26B 2K: 143 tok/sGemma 4 26B 4K: 140 tok/sGemma 4 26B 8K: 139 tok/sGemma 4 26B 16K: 144 tok/sGemma 4 26B 32K: 130 tok/sGemma 4 26B 64K: 118 tok/sGemma 4 26B 128K: 91 tok/sOrnith 1.5 35B 1K: 184 tok/sOrnith 1.5 35B 2K: 189 tok/sOrnith 1.5 35B 4K: 172 tok/sOrnith 1.5 35B 8K: 180 tok/sOrnith 1.5 35B 16K: 164 tok/sOrnith 1.5 35B 32K: 159 tok/sOrnith 1.5 35B 64K: 139 tok/sOrnith 1.5 35B 128K: 112 tok/sQwen3.6 35B 1K: 191 tok/sQwen3.6 35B 2K: 185 tok/sQwen3.6 35B 4K: 176 tok/sQwen3.6 35B 8K: 175 tok/sQwen3.6 35B 16K: 172 tok/sQwen3.6 35B 32K: 161 tok/sQwen3.6 35B 64K: 157 tok/sQwen3.6 35B 128K: 115 tok/sQwen3.6 35BOrnith 1.5 35BGemma 4 26BQwen3.8 27B
Prefill (speed of reading new input)tok/s
02004006008001,0001K4K16K64K128KQwen3.8 27B 1K: 240 tok/sQwen3.8 27B 2K: 238 tok/sQwen3.8 27B 4K: 234 tok/sQwen3.8 27B 8K: 225 tok/sQwen3.8 27B 16K: 210 tok/sQwen3.8 27B 32K: 183 tok/sQwen3.8 27B 64K: 141 tok/sQwen3.8 27B 128K: 87 tok/sGemma 4 26B 1K: 991 tok/sGemma 4 26B 2K: 976 tok/sGemma 4 26B 4K: 953 tok/sGemma 4 26B 8K: 901 tok/sGemma 4 26B 16K: 815 tok/sGemma 4 26B 32K: 674 tok/sGemma 4 26B 64K: 501 tok/sGemma 4 26B 128K: 326 tok/sOrnith 1.5 35B 1K: 977 tok/sOrnith 1.5 35B 2K: 961 tok/sOrnith 1.5 35B 4K: 920 tok/sOrnith 1.5 35B 8K: 870 tok/sOrnith 1.5 35B 16K: 774 tok/sOrnith 1.5 35B 32K: 627 tok/sOrnith 1.5 35B 64K: 453 tok/sOrnith 1.5 35B 128K: 282 tok/sQwen3.6 35B 1K: 990 tok/sQwen3.6 35B 2K: 966 tok/sQwen3.6 35B 4K: 936 tok/sQwen3.6 35B 8K: 885 tok/sQwen3.6 35B 16K: 783 tok/sQwen3.6 35B 32K: 633 tok/sQwen3.6 35B 64K: 456 tok/sQwen3.6 35B 128K: 282 tok/sGemma 4 26BQwen3.6 35BOrnith 1.5 35BQwen3.8 27B
Decode (speed of writing the answer)tok/s
0501001501K4K16K64K128KQwen3.8 27B 1K: 37 tok/sQwen3.8 27B 2K: 37 tok/sQwen3.8 27B 4K: 36 tok/sQwen3.8 27B 8K: 36 tok/sQwen3.8 27B 16K: 33 tok/sQwen3.8 27B 32K: 32 tok/sQwen3.8 27B 64K: 26 tok/sQwen3.8 27B 128K: 19 tok/sGemma 4 26B 1K: 107 tok/sGemma 4 26B 2K: 103 tok/sGemma 4 26B 4K: 106 tok/sGemma 4 26B 8K: 101 tok/sGemma 4 26B 16K: 106 tok/sGemma 4 26B 32K: 93 tok/sGemma 4 26B 64K: 85 tok/sGemma 4 26B 128K: 70 tok/sOrnith 1.5 35B 1K: 130 tok/sOrnith 1.5 35B 2K: 134 tok/sOrnith 1.5 35B 4K: 130 tok/sOrnith 1.5 35B 8K: 122 tok/sOrnith 1.5 35B 16K: 109 tok/sOrnith 1.5 35B 32K: 114 tok/sOrnith 1.5 35B 64K: 94 tok/sOrnith 1.5 35B 128K: 79 tok/sQwen3.6 35B 1K: 135 tok/sQwen3.6 35B 2K: 124 tok/sQwen3.6 35B 4K: 123 tok/sQwen3.6 35B 8K: 125 tok/sQwen3.6 35B 16K: 123 tok/sQwen3.6 35B 32K: 110 tok/sQwen3.6 35B 64K: 100 tok/sQwen3.6 35B 128K: 80 tok/sQwen3.6 35BOrnith 1.5 35BGemma 4 26BQwen3.8 27B
Prefill (speed of reading new input)tok/s
02004006001K4K16K64K128KQwen3.8 27B 1K: 91 tok/sQwen3.8 27B 2K: 90 tok/sQwen3.8 27B 4K: 88 tok/sQwen3.8 27B 8K: 86 tok/sQwen3.8 27B 16K: 80 tok/sQwen3.8 27B 32K: 71 tok/sQwen3.8 27B 64K: 57 tok/sQwen3.8 27B 128K: 42 tok/sGemma 4 26B 1K: 454 tok/sGemma 4 26B 2K: 447 tok/sGemma 4 26B 4K: 436 tok/sGemma 4 26B 8K: 412 tok/sGemma 4 26B 16K: 372 tok/sGemma 4 26B 32K: 313 tok/sGemma 4 26B 64K: 235 tok/sGemma 4 26B 128K: 155 tok/sOrnith 1.5 35B 1K: 515 tok/sOrnith 1.5 35B 2K: 498 tok/sOrnith 1.5 35B 4K: 478 tok/sOrnith 1.5 35B 8K: 446 tok/sOrnith 1.5 35B 16K: 385 tok/sOrnith 1.5 35B 32K: 302 tok/sOrnith 1.5 35B 64K: 213 tok/sOrnith 1.5 35B 128K: 130 tok/sQwen3.6 35B 1K: 520 tok/sQwen3.6 35B 2K: 502 tok/sQwen3.6 35B 4K: 485 tok/sQwen3.6 35B 8K: 447 tok/sQwen3.6 35B 16K: 390 tok/sQwen3.6 35B 32K: 304 tok/sQwen3.6 35B 64K: 215 tok/sQwen3.6 35B 128K: 131 tok/sGemma 4 26BQwen3.6 35BOrnith 1.5 35BQwen3.8 27B
Decode (speed of writing the answer)tok/s
02550751001251K4K16K64K128KQwen3.8 27B 1K: 28 tok/sQwen3.8 27B 2K: 28 tok/sQwen3.8 27B 4K: 28 tok/sQwen3.8 27B 8K: 27 tok/sQwen3.8 27B 16K: 26 tok/sQwen3.8 27B 32K: 26 tok/sQwen3.8 27B 64K: 20 tok/sQwen3.8 27B 128K: 17 tok/sGemma 4 26B 1K: 89 tok/sGemma 4 26B 2K: 86 tok/sGemma 4 26B 4K: 84 tok/sGemma 4 26B 8K: 92 tok/sGemma 4 26B 16K: 86 tok/sGemma 4 26B 32K: 86 tok/sGemma 4 26B 64K: 70 tok/sGemma 4 26B 128K: 57 tok/sOrnith 1.5 35B 1K: 111 tok/sOrnith 1.5 35B 2K: 114 tok/sOrnith 1.5 35B 4K: 104 tok/sOrnith 1.5 35B 8K: 107 tok/sOrnith 1.5 35B 16K: 99 tok/sOrnith 1.5 35B 32K: 95 tok/sOrnith 1.5 35B 64K: 85 tok/sOrnith 1.5 35B 128K: 65 tok/sQwen3.6 35B 1K: 107 tok/sQwen3.6 35B 2K: 105 tok/sQwen3.6 35B 4K: 104 tok/sQwen3.6 35B 8K: 106 tok/sQwen3.6 35B 16K: 103 tok/sQwen3.6 35B 32K: 96 tok/sQwen3.6 35B 64K: 85 tok/sQwen3.6 35B 128K: 66 tok/sQwen3.6 35BOrnith 1.5 35BGemma 4 26BQwen3.8 27B

※2 Measured with the same settings as the R.E.V.I.S. release build. Speeds vary depending on the model, the Mac, and the input. tok/s is the number of tokens (word units) processed per second.

Models

Models you can run.

Only models confirmed to work with Q.E.L.V.A.R.I. can be loaded. Support for new models will be added over time.

ModelSize (Q4T / Q3T)
Gemma 4 26B MoE15.6 GB / 12.7 GB
Qwen3.6 35B MoE19.4 GB / 15.6 GB
Ornith 1.5 35B MoE19.4 GB / 15.6 GB
Qwen3.8 27B20.1 GB / 17.6 GB

Sizes include the MTP draft model (GiB). Models can be loaded within roughly your installed memory minus 7GB. As a guide, a Mac with 24GB of memory runs the Q3T of Gemma 4, Qwen3.6 and Ornith 1.5, and 32GB or more runs the Q4T of every model.

More on quantisation

The model is a part.
Speed and accuracy come down to the engine.

Turn your Mac into real AI.

※1 Accuracy refers to how faithfully the original model's output is reproduced; it does not mean performance beyond the original model. Speed varies with the model, the Mac and the input.

※ The animations on this page are illustrations and differ from the actual product screens.