Benchmarks¶
How well each language model picks the right action for what you say, and how long it takes, measured on the Jarvis Automation server (jarvisd). These are the numbers behind the picks in Models and hardware.
Jarvis Automation is a pre-release (release candidate rc18.17). The numbers below were measured on rc18-era builds and will be re-measured as the prompt and the models change.
Results¶
Accuracy is the share of utterances where the model's first tool call is the right one (with the right arguments, where the corpus checks them). Prompt tokens are what the model reads per turn.
On a 16 GB Mac¶
Qwen 3 4B (Q4_K_M), measured by the project's author on 2026-10-21 on a Mac mini M4 with 16 GB, with the 80-utterance corpus. This was an informal run: unlike the experiments below, it has no written record in jarvis-server yet. A cold turn is the first one after a restart, before the prompt is cached.
| Accuracy | Warm turn | Cold turn |
|---|---|---|
| 98.8 % | about 1.2 s | about 15 s |
Prompt-diet experiment¶
Measured on 2026-10-20 for jarvis-server's prompt-diet decision, on the 80-utterance corpus:
| Model | Accuracy | Prompt tokens |
|---|---|---|
| Qwen 3 4B (Q4_K_M) | 100 % | 4,619 |
| Qwen 3.5 9B (Q4_K_M, vision) | 98.8 % | 4,790 |
And on the hard scenarios, the first turn of each of the server's pipeline scenarios (tools/pipeline/scenarios/): the right tool, then the right tool with the right arguments.
| Model | Right tool | With arguments |
|---|---|---|
| Qwen 3.5 9B (Q4_K_M, vision) | 91.3 % | 79.7 % |
| Qwen 3 4B (Q4_K_M) | 88.4 % | 77.5 % |
On a MacBook Pro (M2 Max) in the same experiment, the first tool call from Qwen 3 4B after a restart took about 5 s, and about 0.5 s once the prompt was cached.
MLX¶
On the same 16 GB Mac, Qwen 3.5 9B (MLX 4-bit) called a tool on 88.8 % of the tool benchmark, against 100 % for the Qwen 3.5 9B GGUF: it answers arithmetic itself instead. So Jarvis does not suggest it. The larger MLX models are not measured yet.
Where the numbers come from
"Prompt-diet experiment" is jarvis-server's decision record docs/decisions/2026-10-20-prompt-diet.md, measured on the captured prompts before the change was ported; the record does not name the machine for its accuracy runs. The MLX figure is from the catalog's note on that model. Older benchmark tables measured on the retired Docker stack do not apply to jarvisd and are not repeated here.
How it is measured¶
The benchmark is scripts/toolbench in jarvis-server. It replays the exact prompt the server sends, so the numbers reflect what the model sees in real use:
- Capture.
scripts/toolbench capturestarts a sandbox server from the checkout, says "hello" as a voice node and as a desktop node, and saves each request the model received: system prompt, tool list and sampling settings, byte for byte. - Replay.
scripts/toolbench runsends each case to the model with the captured prompt, the case's utterance in place of "hello". - Score. Only the first tool call counts: the right tool, then the right arguments (numbers by value, text case-insensitively, patterns by regular expression). Prompt tokens and latency come from the model's response.
Without --corpus, the cases are the desktop toolset's examples and the first turn of each pipeline scenario (the hard scenarios). With --corpus, they are the 80 utterances of install-e2e/gpu/bench_corpus.cc.yaml, played on the voice node. That corpus lives in the legacy jarvis repository.
Run it yourself¶
From a jarvis-server checkout, with a server running the model you want to measure:
scripts/toolbench capture
scripts/toolbench run \
--corpus ../jarvis/install-e2e/gpu/bench_corpus.cc.yaml \
--url http://<host>:<port> --model live \
--repeat 3 --out results.json
Without --url, it measures the installed server the jarvis-server dev harness points at. --url takes any OpenAI-compatible endpoint, called without credentials; --model is the label or model name to ask for (default live). Reading the YAML corpus needs PyYAML; pass a .json copy of it where that is missing. When you publish a result, record the machine, the model, the engine, the date, the corpus and the repeat count.