How we test
Every model hears the same script: a creator filming a video, with requests to Darkgrade Studio, their camera app, in between and during takes. Each model runs on one Mac, one at a time, with its default settings, and uses Studio's real tools on a simulated camera. Each turn is checked: did it do the right thing, leave the video alone, answer questions without acting, and say what it can't do?
English only for now: one script of 33 turns, small models run three times with the median published, the others once. Treat scores within a few points of each other as ties.
What each model hears
The script's turns, word for word (a perfect transcript), sent one at a time as one conversation. Each turn also carries the camera's current status, as Darkgrade Studio's assistant does. The system prompt is Studio's assistant prompt plus one line saying the person is filming.
The tools
Darkgrade Studio's own tool library, unchanged, running against a simulated camera that starts as the script's setup describes. Up to five model calls per turn, as in Studio.
Settings
Each model on llama-server with its defaults except two settings, the same for all: thinking off (--reasoning off), because a voice app has to act at once; and a 64k context (--ctx-size 65536), which holds the longest conversation (about 43k tokens) without a model reserving memory for its whole context window, so memory used reflects the model. The only other arguments are the model file and a port; requests carry no sampling options.
Right or wrong
Each turn is checked against the answer key by outcome: where the camera and Studio end up, not which tools were used. Lookups never count against a model and an answer's wording isn't graded. Mistakes are serious (ruins a take or your work: recording started or stopped at the wrong time, an unasked photo or download, the wrong file, the picture changed mid-take, a mode change not made, a false claim) or minor (a small adjustment missed or off, a harmless extra). A turn counts 1 when right, ½ with only minor mistakes, 0 with any serious one.
Speed
From sending a turn to the model finishing its first action, or its reply when it shouldn't act. After loading, each model reads the fixed start of every request (system prompt and tools) once, untimed, as Studio does on load.
Time limit
10 s for every model to decide: its first action, or its answer when it shouldn't act (read-only lookups first count toward it). Past it, the turn is cut off and counts as wrong and as a 10 s wait. As in Darkgrade Studio, a tool runs as soon as it's called and the short reply comes afterwards, so the reply isn't timed.
The score
A 0–100 score from fixed scales, so it doesn't change when other models are added: right outcome (45%: half the turns' credit scores 0, all of it 100), serious mistakes (15%: on a quarter of turns scores 0, none 100), clean tool calls (5%: one call in five invalid scores 0, none 100), typical wait (25%: 10 s scores 0, 0.3 s scores 100) and slow wait, the slowest 1 in 10 (10%: 10 s scores 0, 1 s scores 100), waits on a log scale.
| Area | Counts for |
|---|---|
| Right outcome | 45% |
| Serious mistakes | 15% |
| Clean tool calls | 5% |
| Typical wait | 25% |
| Slow wait | 10% |
Runs
Small models run the script three times, each in a fresh process, and publish the run with the median score; one run can swing by 10–20 points for them, because one early choice carries through the conversation. Mixture-of-experts models run once.
One model at a time
One model at a time. The run refuses to start a model while another llama-server is alive, and confirms each has exited.
Models we dropped
- Granite 4.2 3B (IBM): Tried and dropped: it failed almost every request, running past the 10 s limit on 25 of 29 turns.
- Granite 4.2 8B (IBM): Dropped with the 3B; not tested.
- Qwen3.6 27B (Qwen): Dropped: a dense model this size is too slow for instant tool calls on a laptop. It ran out of the 10 s limit on many turns, so its result measured speed more than ability.
- Qwen3.8 27B (Qwen): Dropped: a dense model this size is too slow for instant tool calls on a laptop. It ran out of the 10 s limit on many turns, so its result measured speed more than ability.
- Underdog Saluki 27B (Conway Research): Dropped: a dense model this size is too slow for instant tool calls on a laptop. It ran out of the 10 s limit on many turns, so its result measured speed more than ability.
- Bonsai 27B (Prism ML): Dropped: a dense model this size is too slow for instant tool calls on a laptop. It ran out of the 10 s limit on many turns, so its result measured speed more than ability.
- Ternary Bonsai 2 27B (Prism ML): Dropped: a dense model this size is too slow for instant tool calls on a laptop. It ran out of the 10 s limit on many turns, so its result measured speed more than ability.
- Gemma 4 12B (Google): Dropped: a dense model this size is too slow for instant tool calls on a laptop. It ran out of the 10 s limit on many turns, so its result measured speed more than ability.
- Ministral 3 14B (Mistral): Dropped: a dense model this size is too slow for instant tool calls on a laptop. It ran out of the 10 s limit on many turns, so its result measured speed more than ability.
- Mistral Small 3.2 24B (Mistral): Dropped: a dense model this size is too slow for instant tool calls on a laptop. It ran out of the 10 s limit on many turns, so its result measured speed more than ability.
Repeat it
Everything is in the repository: the script, each recording's checksum, every model's source and file checksum, and the exact engine versions. On an Apple Silicon Mac:
git clone https://github.com/darkgrade/toolbench
git clone https://github.com/darkgrade/darkgrade
cd toolbench
bun install
bun run benchThe script
A solo creator sits at a desk, centred in the frame, and films a short talking-head video, using Darkgrade Studio's voice control to set up, between takes and to wrap up. A mirrorless camera with a power-zoom lens is connected to Darkgrade Studio on a Mac: Movie Manual mode at 25 frames a second, shutter 1/50, aperture f/4, ISO 800, white balance in its colour-temperature mode at 5600 K, continuous autofocus with face detection on. Live view is on and the camera is not recording. Studio shows the histogram scope, with zebras off, focus peaking off and the camera's own on-screen display overlay on. The battery is at 80% and the card holds two older clips, C0007.MP4 and C0008.MP4, with about 90 minutes of recording space left. No settings have been changed yet. The picture is evenly lit and slightly dark, with nothing clipped.
Before take 1 (not recording)
- "What shutter speed should I use at 25 frames a second?"
- "Set the aperture to f/5.6."
- "Is my exposure okay?"
- "Make it a bit brighter."
- "A bit more."
- "Show the waveform."
- "Turn on zebras."
- "Make it a bit warmer."
- "Undo that."
- "Zoom out a little."
- "Turn on focus peaking."
- "Focus on my face."
- "Hide the camera's display."
- "Start recording."
TAKE 1 begins (recording)
- "Hello, and welcome back. Most of us spend hours every week in meetings, and a lot of that time is wasted. Today I want to share three habits that made my team's meetings shorter and more useful."
- "The first habit is a written agenda. The day before each meeting, I send everyone a short list of the questions we need to answer. If I can't write that list, we probably don't need the meeting."
- "It also means people arrive prepared. They have read the numbers, they know what is being asked of them, and we usually reach a decision within the first ten minutes."
- "When I began doing this, about a third of our regular meetings simply disappeared from the calendar, and nobody missed them."
- "Cut."
TAKE 1 ends. Between takes (not recording)
- "Delete the last clip."
- "How much battery is left?"
- "Make it a bit darker."
- "Roll camera."
TAKE 2 begins (recording)
- "The second habit is a shorter guest list. I only invite the people who make the decision or do the work. Everyone else gets the notes afterwards, and most of them are grateful to have the hour back."
- "The third habit is ending with names and dates. Before anyone leaves, we say out loud who is doing what, and by when. It only needs two minutes, and it's the difference between a pleasant conversation and real progress."
- "None of this needs new software or a bigger budget. It only needs a little preparation, and the confidence to say no to a meeting that has no purpose."
- "If one of these habits helps your team, let me know in the comments. Thank you for watching, and I'll see you next week."
- "Cut."
TAKE 2 ends. After the takes (not recording)
- "What's on the card?"
- "Download the last two clips."
- "Switch to photo mode."
- "Take a photo."
- "Turn off live view."
The full answer key, turn by turn, is in the repository.